Overview

Namespace: TheTechIdea.Beep.Winform.Controls.Design.Server.Docking.Designers
Inheritance: ComponentDesigner (NOT a ControlDesigner — this is a tray component)
Visibility: internal sealed

BeepDockingManagerDesigner is the design-time experience for BeepDockingManager. Since the manager is a non-visual component, it appears in the component tray below the form designer rather than on the form surface. This follows the same pattern as Krypton's KryptonDockingManager.

It provides 15 designer verbs for adding, moving, stacking, and validating dock panels entirely from the Visual Studio designer.

Key Features

  • Tray component — Sits in the component tray, not on the form surface
  • 15 designer verbs — Context menu commands for panel management
  • Smart-tag — BeepDockingManagerActionList for property configuration
  • Auto host-form detection — On InitializeNewComponent, finds parent Form and assigns HostForm
  • Panel validation — ValidatePanels() checks all associated panels for missing Keys
  • IComponentChangeService integration — All mutations route through wiring for proper serialization
  • Krypton parity — Follows KryptonDockingManager design-time pattern

Designer Verbs (15)

CategoryVerbDescription
Add PanelAdd Panel LeftCreates a new DockPanel docked to the left edge
Add Panel RightCreates a new DockPanel docked to the right edge
Add Panel TopCreates a new DockPanel docked to the top edge
Add Panel BottomCreates a new DockPanel docked to the bottom edge
Add Panel FillCreates a new DockPanel filling remaining space
Move PanelMove Selected Panel LeftMoves currently selected panel to left edge
Move Selected Panel RightMoves currently selected panel to right edge
Move Selected Panel TopMoves currently selected panel to top edge
Move Selected Panel BottomMoves currently selected panel to bottom edge
Move Selected Panel FillMoves currently selected panel to fill
StackStack Selected with Previous PanelGroups selected panel into tab stack with previous
Stack Selected with Next PanelGroups selected panel into tab stack with next
Management&Validate PanelsChecks all panels for missing/duplicate Keys
Attach &Host FormAuto-detects and assigns Manager.HostForm

Smart-Tag

The BeepDockingManagerActionList exposes these properties in the smart-tag panel:

PropertyTypeDescription
HostFormFormThe hosting form. Setting this calls ManageControl().
ThemestringTheme name for docking chrome.
UseThemeColorsboolWhen true, reads from Beep theme.
StyleBeepControlStyleControl style for docking surfaces.
PanelCountint (read-only)Number of currently managed panels.

Design-Time Behavior

InitializeNewComponent

When first dropped on a form, the designer detects the parent form via the designer host and assigns it as Manager.HostForm. This mimics the Krypton behavior where the manager automatically binds to its hosting form.

Panel Operations

All panel Add/Move/Stack/Remove operations delegate to BeepDockingDesignerWiring which handles:

  1. Creating new DockPanel components via IDesignerHost.CreateComponent()
  2. Setting panel properties (Key, Title, DockPosition)
  3. Notifying IComponentChangeService for serialization
  4. Refreshing the host layout

Wiring Architecture

BeepDockingManagerDesigner (ComponentDesigner)
  │
  ├── AddPanel(position)  ──┐
  ├── RemovePanel(panel)  ──┤
  ├── MoveSelectedPanel() ──┤
  ├── StackSelectedWith() ──┤
  └── ValidatePanels()   ──┤
                              │
                    ┌─────────▼────────────┐
                    │ BeepDockingDesignerWiring │
                    │ (static helper class)      │
                    │                            │
                    │ CreateComponent(DockPanel) │
                    │ IComponentChangeService    │
                    │ Designer.cs code-gen       │
                    └────────────────────────────┘

Examples

Using the Docking Manager at Design Time

// 1. Drop BeepDockingManager from toolbox onto form
//    → Appears in component tray
//    → Auto-detects form as HostForm
// 2. Right-click → "Add Panel Left"
//    → Creates DockPanel with unique Key
//    → Appears docked to left edge
// 3. Right-click panel → "Dock Right"
//    → Panel repositions to right edge
// 4. Right-click manager → "Validate Panels"
//    → Checks all panels for valid configuration