Authoring — the Object Navigator
The Visual Studio extension where you author blocks, triggers, LOVs, validations, master-detail relations, and the form menu — visually, against a tree of your form's design-time definition.
How you interact with it
The Object Navigator is a tree of your form's design-time definition. Right-click on a row is the only way to open a menu — there is no ⋯ overflow glyph; that pattern is explicitly ruled out because it can't transport reliably across the IDE's out-of-process Remote UI boundary (see Remote UI Limitations). Double-click, or Enter, on a trigger row jumps straight to that trigger's handler line in the form's own .cs file via TriggerHandlerLocator.
Context menus per node type
Every row in the tree has a NodeType, and the right-click menu is built from it. The richest is IsBlock — right-clicking a block row shows 22 items, including EditBlockEntityCommand, AddTriggerCommand, and DeleteBlockCommand. Other node types (IsItem, IsForm, IsItemLovNode, IsItemValidationNode, and more) each get their own scoped menu.
NewLovCommand, NewValidationCommand, NewSavepointCommand, and OpenActiveFormCommand exist on the command surface but aren't reachable from any tree row today — their providers aren't registered. This is a documented gap, not a hidden one.
The toolbar
A 9-button vertical toolbar runs alongside the tree: Refresh, Add, Form, Scaffold, View, Find, Favourites, Tools, Cancel. Each button is both a button-face command and a dropdown submenu of related commands. Visibility is conditional where it matters — for example, Cancel is only shown when CanCancelNavigatorOperation is true, so it never appears as a dead click target.
How a trigger name becomes engine code
The picker shows Oracle Forms-style trigger names (When-Validate-Item) but the engine's real enum member is WhenValidateItem. The mapping lives in one file, TriggerTypeNames.cs (TheTechIdea.Beep.Forms.IDE/Helpers/), via TryToMember / ToOracleName.
If TriggerType has no matching member for a given Oracle-style name, the picker refuses to write a registration rather than emit code that won't compile. As the engine's TriggerType enum gains members, more Oracle trigger names become authorable automatically — no change needed in this mapping file. As of 2026-08-24, 14 of the 18 originally-unauthorable Oracle trigger names became authorable purely by the engine adding enum members.
Commit, Rollback, and When-Timer remain genuinely unauthorable today — a documented limitation, not a bug to silently patch over.
What the IDE writes for you
When you finish authoring a trigger, LOV, validation, or master-detail relation, the Object Navigator writes exactly the same registration code you'd write by hand — see the real example on the End-to-End Example page. It writes into your form's own .Designer.cs (WinForms) or .xaml.cs (WPF) inside marker regions, and reads the same regions back the next time the form is opened — a round-trip contract, not a one-way code generator.