Files

44 lines
2.9 KiB
Markdown
Raw Permalink Normal View History

2026-04-17 14:55:32 -04:00
---
source_files:
- Common/DTS.CommonCore/Interface/TSRAIRGo/INavigationButtonInfo.cs
generated_at: "2026-04-17T16:38:34.293837+00:00"
model: "zai-org/GLM-5-FP8"
schema_version: 1
sha256: "dc9e7eb526d7d3d9"
---
# Documentation: INavigationButtonInfo
## 1. Purpose
`INavigationButtonInfo` defines a data contract for navigation button metadata within the TSRAIRGo subsystem. It abstracts the properties required to render and control a navigation button—specifically its identity, display text, tooltip, enabled state, and border visibility. This interface allows consumers to interact with navigation button configuration without depending on concrete implementations.
## 2. Public Interface
| Member | Signature | Description |
|--------|-----------|-------------|
| `Id` | `NavigationButtonId Id { get; }` | Read-only property that returns the unique identifier for the navigation button. Uses the `NavigationButtonId` enum type. |
| `Text` | `string Text { get; set; }` | Read/write property for the button's display text. |
| `Tooltip` | `string Tooltip { get; set; }` | Read/write property for the button's tooltip text. |
| `Enabled` | `bool Enabled { get; set; }` | Read/write property indicating whether the button is interactive. |
| `ShowBorder` | `bool ShowBorder { get; set; }` | Read/write property controlling whether the button renders with a visible border. |
## 3. Invariants
- **Id immutability**: The `Id` property is read-only; it cannot be changed after an implementing object is constructed. Implementing classes must ensure this value is set during construction and remains constant.
- **Nullability**: The interface does not enforce non-null constraints on `Text` or `Tooltip`. Implementations may or may not accept null values—behavior is implementation-defined.
- **Enum-backed identity**: The `Id` property is constrained to values defined in the `NavigationButtonId` enum; arbitrary integer or string identifiers are not permitted.
## 4. Dependencies
**This module depends on:**
- `DTS.Common.Enums.TSRAIRGo.NavigationButtonId` — An enum type used to identify navigation buttons.
**What depends on this module:**
- Unknown from source alone. Implementing classes and consumers of this interface are not present in the provided file.
## 5. Gotchas
- **Asymmetric property access**: `Id` is the only read-only property; all others (`Text`, `Tooltip`, `Enabled`, `ShowBorder`) are mutable. This design implies that button identity is fixed while visual/behavioral properties can change at runtime.
- **No default values defined**: The interface specifies no defaults. Implementations must define initial values for `Text`, `Tooltip`, `Enabled`, and `ShowBorder`.
- **No validation contract**: The interface does not specify validation rules (e.g., maximum text length, non-empty requirements). Implementations may apply different validation logic, leading to inconsistent behavior across implementations.