init
This commit is contained in:
@@ -0,0 +1,269 @@
|
||||
---
|
||||
source_files:
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/ITabView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IDiagView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/ITestsView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IStatsView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/ICursorView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IViewerView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/ITabItemView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IPropertyView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IViewerShellView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IGraphPropertyView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IDockPanelVerticalView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IDockPanelHorizontalView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/GroupChannelReadCalcDelegate.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/ITabViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IDiagViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IStatsViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/ICursorViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/ITestsViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IViewerViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IPropertyViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IViewerModule.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IPSDReportModule .cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IGraphPropertyViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IDockPanelVerticalViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IDockPanelHorizontalViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/ITabItemViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IViewerShellViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IMainLiteView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IMainViewerView.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/ISelectedDataViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IMainLiteViewModel.cs
|
||||
- Common/DTS.CommonCore/Interface/DTS.Viewer/IMainViewModel.cs
|
||||
generated_at: "2026-04-16T12:14:43.492195+00:00"
|
||||
model: "zai-org/GLM-5-FP8"
|
||||
schema_version: 1
|
||||
sha256: "fed47436f7c090f0"
|
||||
---
|
||||
|
||||
# DTS.Common.Interface Viewer Module Documentation
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This module defines the contract layer for the DTS Viewer application's presentation components. It establishes a Model-View-ViewModel (MVVM) architecture through a comprehensive set of interfaces for views, view models, and modules. The interfaces enable loose coupling between UI components and their controllers, supporting a modular, plugin-based architecture built on Microsoft Prism. This abstraction layer allows different concrete implementations of views and view models to be swapped without affecting dependent code.
|
||||
|
||||
---
|
||||
|
||||
## 2. Public Interface
|
||||
|
||||
### View Interfaces
|
||||
|
||||
All view interfaces inherit from `IBaseView` (defined in `DTS.Common.Base`) and are currently marker interfaces with no additional members:
|
||||
|
||||
| Interface | Description |
|
||||
|-----------|-------------|
|
||||
| `ITabView` | Marker interface for tab views |
|
||||
| `IDiagView` | Marker interface for diagnostic views |
|
||||
| `ITestsView` | Marker interface for test views |
|
||||
| `IStatsView` | Marker interface for statistics views |
|
||||
| `ICursorView` | Marker interface for cursor views |
|
||||
| `IViewerView` | Marker interface for viewer views |
|
||||
| `ITabItemView` | Marker interface for individual tab item views |
|
||||
| `IPropertyView` | Marker interface for property views |
|
||||
| `IViewerShellView` | Marker interface for the main shell view |
|
||||
| `IGraphPropertyView` | Marker interface for graph property views |
|
||||
| `IDockPanelVerticalView` | Marker interface for vertical dock panel views |
|
||||
| `IDockPanelHorizontalView` | Marker interface for horizontal dock panel views |
|
||||
|
||||
#### `IMainLiteView`
|
||||
|
||||
```csharp
|
||||
public interface IMainLiteView : IBaseView
|
||||
{
|
||||
StackPanel MainShell { get; set; }
|
||||
ContentControl MainRegion { get; set; }
|
||||
ContentControl NavigationRegion { get; set; }
|
||||
ContentControl HorizontalTabRegion { get; set; }
|
||||
ContentControl VerticalTabRegion { get; set; }
|
||||
}
|
||||
```
|
||||
|
||||
Exposes WPF region controls for the "Lite" version of the main view.
|
||||
|
||||
#### `IMainViewerView`
|
||||
|
||||
```csharp
|
||||
public interface IMainViewerView : IBaseView
|
||||
{
|
||||
// All members commented out in source
|
||||
}
|
||||
```
|
||||
|
||||
Marker interface for the main viewer view. Region properties are commented out in the source.
|
||||
|
||||
---
|
||||
|
||||
### ViewModel Interfaces
|
||||
|
||||
All view model interfaces inherit from `IBaseViewModel` (defined in `DTS.Common.Base`).
|
||||
|
||||
#### Standard ViewModel Interfaces
|
||||
|
||||
Each provides a `View` property returning its corresponding view interface:
|
||||
|
||||
| Interface | View Property Type |
|
||||
|-----------|-------------------|
|
||||
| `ITabViewModel` | `ITabView View { get; }` |
|
||||
| `IDiagViewModel` | `IDiagView View { get; }` |
|
||||
| `IStatsViewModel` | `IStatsView View { get; }` |
|
||||
| `ICursorViewModel` | `ICursorView View { get; }` |
|
||||
| `ITestsViewModel` | `ITestsView View { get; }` |
|
||||
| `IViewerViewModel` | `IViewerView View { get; }` |
|
||||
| `IPropertyViewModel` | `IPropertyView View { get; }` |
|
||||
| `IGraphPropertyViewModel` | `IGraphPropertyView View { get; }` |
|
||||
| `IDockPanelVerticalViewModel` | `IDockPanelVerticalView View { get; }` |
|
||||
| `IDockPanelHorizontalViewModel` | `IDockPanelHorizontalView View { get; }` |
|
||||
|
||||
#### `ITabItemViewModel`
|
||||
|
||||
```csharp
|
||||
public interface ITabItemViewModel : IBaseViewModel
|
||||
{
|
||||
ITabItemView View { get; }
|
||||
ITabViewModel Parent { get; }
|
||||
}
|
||||
```
|
||||
|
||||
Represents a tab item with a reference to its parent `ITabViewModel`.
|
||||
|
||||
#### `IViewerShellViewModel`
|
||||
|
||||
```csharp
|
||||
public interface IViewerShellViewModel : IBaseViewModel
|
||||
{
|
||||
IViewerShellView View { get; }
|
||||
List<FrameworkElement> GetRegions();
|
||||
object ContextMainRegion { get; set; }
|
||||
}
|
||||
```
|
||||
|
||||
The shell view model providing region management and main region context.
|
||||
|
||||
#### `IMainLiteViewModel`
|
||||
|
||||
```csharp
|
||||
public interface IMainLiteViewModel : IBaseViewModel
|
||||
{
|
||||
IMainView View { get; }
|
||||
object ContextMainRegion { get; set; }
|
||||
object ContextNavigationRegion { get; set; }
|
||||
object ContextHorizontalTabRegion { get; set; }
|
||||
object ContextVerticalTabRegion { get; set; }
|
||||
List<FrameworkElement> GetRegions();
|
||||
}
|
||||
```
|
||||
|
||||
**Note:** Returns `IMainView` (not `IMainLiteView`), which is not defined in the provided source files.
|
||||
|
||||
#### `IMainViewerViewModel`
|
||||
|
||||
```csharp
|
||||
public interface IMainViewerViewModel : IBaseViewModel
|
||||
{
|
||||
IBaseView View { get; }
|
||||
object ContextMainRegion { get; set; }
|
||||
object ContextNavigationRegion { get; set; }
|
||||
object ContextHorizontalTabRegion { get; set; }
|
||||
object ContextVerticalTabRegion { get; set; }
|
||||
List<FrameworkElement> GetRegions();
|
||||
}
|
||||
```
|
||||
|
||||
Returns `IBaseView` directly rather than a specific view interface.
|
||||
|
||||
---
|
||||
|
||||
### Module Interfaces
|
||||
|
||||
#### `IViewerModule`
|
||||
|
||||
```csharp
|
||||
public interface IViewerModule : IModule
|
||||
{
|
||||
void StartSession(bool standalone, string pluginFolder = "");
|
||||
}
|
||||
```
|
||||
|
||||
Defines a Prism module for the viewer with session initialization capability.
|
||||
|
||||
#### `IPSDReportModule`
|
||||
|
||||
```csharp
|
||||
public interface IPSDReportModule : IModule
|
||||
{
|
||||
void StartSession(bool standalone, string pluginFolder = "");
|
||||
}
|
||||
```
|
||||
|
||||
Defines a Prism module for PSD reporting with identical session initialization signature.
|
||||
|
||||
---
|
||||
|
||||
### Other Types
|
||||
|
||||
#### `SetReadCalcProgressValueDelegate`
|
||||
|
||||
```csharp
|
||||
public delegate void SetReadCalcProgressValueDelegate(string message = "", double value = -1D);
|
||||
```
|
||||
|
||||
A delegate type for reporting progress during read/calculation operations. Default parameters allow calling with no arguments.
|
||||
|
||||
#### `ISelectedDataViewModel`
|
||||
|
||||
```csharp
|
||||
public interface ISelectedDataViewModel
|
||||
{
|
||||
string SelectedDataFolder { get; set; }
|
||||
string SelectedDataFile { get; set; }
|
||||
void SelectAndIncludeDataFile(string file);
|
||||
}
|
||||
```
|
||||
|
||||
**Does NOT inherit from `IBaseViewModel`.** Manages data file selection with a method to both select and include a file as a test. The XML comment references bug "16158 Browse button on View Data tab not functional."
|
||||
|
||||
---
|
||||
|
||||
## 3. Invariants
|
||||
|
||||
- All view interfaces (except `ISelectedDataViewModel`) must inherit from `IBaseView`.
|
||||
- All view model interfaces (except `ISelectedDataViewModel`) must inherit from `IBaseViewModel`.
|
||||
- Each standard view model interface must expose a read-only `View` property returning its corresponding view interface type.
|
||||
- `ITabItemViewModel.Parent` must return a valid `ITabViewModel` instance (parent-child relationship is expected).
|
||||
- `StartSession` on module interfaces must be called to initialize the module with explicit `standalone` mode specification.
|
||||
- Region context properties (`ContextMainRegion`, `ContextNavigationRegion`, etc.) are expected to be set by the framework or controlling code before views are rendered.
|
||||
|
||||
---
|
||||
|
||||
## 4. Dependencies
|
||||
|
||||
### External Dependencies
|
||||
|
||||
| Dependency | Usage |
|
||||
|------------|-------|
|
||||
| `DTS.Common.Base` | Provides `IBaseView` and `IBaseViewModel` base interfaces |
|
||||
| `Microsoft.Practices.Prism.Modularity` | Provides `IModule` interface for module definitions |
|
||||
| `System.Windows` | Provides `FrameworkElement` for region management |
|
||||
| `System.Windows.Controls` | Provides `StackPanel`, `ContentControl` for view composition |
|
||||
|
||||
### Downstream Dependencies
|
||||
|
||||
**Unclear from source alone.** These interfaces are contract definitions; concrete implementations and consumers are not present in the provided files. The naming convention suggests implementations exist in a `DTS.Viewer` assembly or namespace.
|
||||
|
||||
---
|
||||
|
||||
## 5. Gotchas
|
||||
|
||||
1. **`IMainLiteViewModel.View` returns `IMainView`** — This interface references `IMainView`, which is not defined in any of the provided source files. This may be a typo for `IMainLiteView` or a separate interface.
|
||||
|
||||
2. **`IMainViewerView` has all members commented out** — The interface exists but all its region properties are commented out. This may indicate incomplete refactoring or an abandoned change.
|
||||
|
||||
3. **`ISelectedDataViewModel` does not follow the pattern** — Unlike all other view model interfaces, this one does not inherit from `IBaseViewModel` and has no `View` property. It appears to be a utility interface rather than a true MVVM view model.
|
||||
|
||||
4. **Inconsistent XML comments** — Some interfaces have XML documentation (e.g., `ITabViewModel`, `ITabItemViewModel`), while others do not. Some comments are copy-pasted incorrectly (e.g., `IViewerViewModel` says "Gets the Tests View" but returns `IViewerView`).
|
||||
|
||||
5. **`SetReadCalcProgressValueDelegate` naming mismatch** — The filename is `GroupChannelReadCalcDelegate.cs` but the delegate is named `SetReadCalcProgressValueDelegate`.
|
||||
|
||||
6. **`IPSDReportModule` filename has trailing space** — The filename is `IPSDReportModule .cs` (note the space before the extension).
|
||||
Reference in New Issue
Block a user