init
This commit is contained in:
50
docs/ai/Common/DTS.Common/Interface/Menu/HamburgerMenu.md
Normal file
50
docs/ai/Common/DTS.Common/Interface/Menu/HamburgerMenu.md
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
source_files:
|
||||
- Common/DTS.Common/Interface/Menu/HamburgerMenu/IHamburgerMenuView.cs
|
||||
- Common/DTS.Common/Interface/Menu/HamburgerMenu/IHamburgerMenuViewModel.cs
|
||||
generated_at: "2026-04-17T16:07:58.358969+00:00"
|
||||
model: "zai-org/GLM-5-FP8"
|
||||
schema_version: 1
|
||||
sha256: "760e48ac189ee322"
|
||||
---
|
||||
|
||||
# HamburgerMenu
|
||||
|
||||
### Purpose
|
||||
This module defines the contract for a hamburger menu navigation component used for group channel navigation. The ViewModel manages menu item lifecycle (set/clear), context menu generation, and handles user interaction via a delegate callback when menu items are pressed. It supports enabling/disabling the menu state, which addresses a historical issue (reference #15324) where warning dialogs were displayed on every tab change.
|
||||
|
||||
### Public Interface
|
||||
|
||||
**IHamburgerMenuView** (extends `IBaseView`)
|
||||
- Empty interface serving as a marker type for Hamburger Menu views. XML documentation describes it as "view for group channels."
|
||||
|
||||
**IHamburgerMenuViewModel** (extends `IBaseViewModel`)
|
||||
- `IHamburgerMenuView View { get; set; }` — Gets or sets the associated view instance.
|
||||
- `void OnSetActive()` — Called when the view is loaded; performs any necessary initialization work.
|
||||
- `void Unset()` — Called when the view is unloaded; performs cleanup work.
|
||||
- `ContextMenu GetContextMenu()` — Returns the context menu for the hamburger menu.
|
||||
- `void SetMenuItems(string[] items)` — Sets the menu items to display.
|
||||
- `void ClearMenuItems()` — Clears all menu items.
|
||||
- `MenuItemPressedDelegate MenuItemPressed { get; set; }` — Delegate handler invoked when a menu item is pressed.
|
||||
- `bool IsEnabled { get; }` — Returns whether the hamburger menu is currently enabled.
|
||||
- `void EnableMenu(bool enable)` — Enables or disables the hamburger menu.
|
||||
|
||||
**MenuItemPressedDelegate**
|
||||
- `delegate void MenuItemPressedDelegate(string command)` — Callback signature for menu item press events, receiving a string command identifier.
|
||||
|
||||
### Invariants
|
||||
- `IsEnabled` is read-only; state changes must go through `EnableMenu(bool)`.
|
||||
- The `MenuItemPressed` delegate may be null; callers should check before invoking.
|
||||
- `SetMenuItems` accepts a `string[]` array; null handling behavior is unspecified.
|
||||
|
||||
### Dependencies
|
||||
- **Depends on**: `DTS.Common.Base` (for `IBaseView`, `IBaseViewModel`)
|
||||
- **Depends on**: `System.Windows.Controls` (for `ContextMenu`)
|
||||
- **Consumers**: Any module that needs to provide hamburger menu navigation functionality.
|
||||
|
||||
### Gotchas
|
||||
- The XML documentation comment on `IHamburgerMenuViewModel` incorrectly describes it as "the view module for the group import module" — this appears to be copy-paste tech debt.
|
||||
- Comment references bug #15324 regarding warning dialogs on tab changes; the `EnableMenu`/`IsEnabled` mechanism was added to address this.
|
||||
- The relationship between `SetMenuItems` and `GetContextMenu` is unclear — whether they operate on the same menu or different menus is not specified in the interface.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user