Forge
csharpdeeb25a2
1#nullable enable
2
3using CascadeIDE.Features.Editor.Application.Monaco;
4using CascadeIDE.Features.Documents;
5using CascadeIDE.Features.Editor;
6using CascadeIDE.Features.HybridIndex.Application;
7using CascadeIDE.Features.Markdown;
8using CascadeIDE.Features.Workspace;
9using CascadeIDE.Features.WorkspaceNavigation.Application;
10using CascadeIDE.Features.WorkspaceNavigation.Presentation;
11using CascadeIDE.Models;
12using CascadeIDE.Services;
13
14namespace CascadeIDE.ViewModels;
15
16/// <summary>Мост к <see cref="WorkspaceNavigationMapViewModel"/> (ADR 0039): host + lifecycle, без прокси-привязок.</summary>
17public partial class MainWindowViewModel
18{
19 public WorkspaceNavigationMapViewModel NavigationMap { get; private set; } = null!;
20
21 private void InitializeWorkspaceNavigationMap() =>
22 NavigationMap = new WorkspaceNavigationMapViewModel(this);
23
24 internal void UpdateCodeNavigationMapCaretOffset(int? offset) =>
25 NavigationMap.UpdateCodeNavigationMapCaretOffset(offset);
26
27 internal void NotifyCodeNavigationMapGraphViewportWidthChanged(double width) =>
28 NavigationMap.NotifyCodeNavigationMapGraphViewportWidthChanged(width);
29
30 internal void ScheduleWorkspaceNavigationMapRefresh() =>
31 NavigationMap.ScheduleWorkspaceNavigationMapRefresh();
32
33 internal bool TryPreserveControlFlowNavigateCaretOnFileChange() =>
34 NavigationMap.TryPreserveControlFlowNavigateCaretOnFileChange();
35
36 MainWindowViewModel IWorkspaceNavigationMapHost.Shell => this;
37
38 SolutionWorkspaceViewModel IWorkspaceNavigationMapHost.Workspace => Workspace;
39
40 DocumentsWorkspaceViewModel IWorkspaceNavigationMapHost.Documents => Documents;
41
42 EditorWorkspaceViewModel IWorkspaceNavigationMapHost.Editor => Editor;
43
44 MarkdownPreviewToolViewModel IWorkspaceNavigationMapHost.MarkdownPreviewTool => MarkdownPreviewTool;
45
46 CascadeIdeSettings IWorkspaceNavigationMapHost.Settings => _settings;
47
48 IIdeMcpActions IWorkspaceNavigationMapHost.IdeMcp => IdeMcp;
49
50 HybridIndexOrchestrator IWorkspaceNavigationMapHost.HybridIndex => _hybridIndex;
51
52 bool IWorkspaceNavigationMapHost.IsPfdRegionExpanded => Shell.IsPfdRegionExpanded;
53
54 string? IWorkspaceNavigationMapHost.GetWorkspacePath() => GetWorkspacePath();
55
56 string? IWorkspaceNavigationMapHost.CurrentFilePath => CurrentFilePath;
57
58 string IWorkspaceNavigationMapHost.EditorText => EditorText;
59
60 int? IWorkspaceNavigationMapHost.EditorSelectionStart => EditorSelectionStart;
61
62 int IWorkspaceNavigationMapHost.ImpactedTestsBadge => ImpactedTestsBadge;
63
64 string? IWorkspaceNavigationMapHost.LastTestSummary => LastTestSummary;
65
66 Func<string, IReadOnlyList<string>, Task<string?>>? IWorkspaceNavigationMapHost.RequestPickFeatureDocAsync =>
67 RequestPickFeatureDocAsync;
68
69 void IWorkspaceNavigationMapHost.ApplyMfdRegionExpanded(bool expanded) => ApplyMfdRegionExpanded(expanded);
70
71 void IWorkspaceNavigationMapHost.TryNavigateToMfdShellPage(MfdShellPage page) => TryNavigateToMfdShellPage(page);
72
73 void IWorkspaceNavigationMapHost.SaveSettingsIfChanged() => SaveSettingsIfChanged();
74
75 void IWorkspaceNavigationMapHost.ScheduleEditorHudBannerRefresh() => ScheduleEditorHudBannerRefresh();
76
77 void IWorkspaceNavigationMapHost.RevealEditorRange(string? path, int startLine, int endLine, int? column) =>
78 EditorNavigation.TryNavigateGoTo(path, startLine, column ?? 1, endLine, column, EditorNavigationSource.NavigationMap);
79}
80
View only · write via MCP/CIDE