Добавлен Studio

This commit is contained in:
2026-01-07 23:52:02 +03:00
parent ca5d912c9c
commit c3770c789b
19 changed files with 668 additions and 51 deletions

View File

@@ -0,0 +1,116 @@
using Lattice.Core.Abstractions;
using Lattice.Core.Models;
using Lattice.Core.Services;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
namespace Lattice.Studio.Controls;
/// <summary>
/// Îêíî âåðõíåãî óðîâíÿ, ñîäåðæàùåå LatticeStudioShell.
/// Îò íåãî íàñëåäóåòñÿ ðåàëüíîå ïðèëîæåíèå.
/// </summary>
public partial class LatticeStudioWindow : Window
{
/// <summary>
/// Âíóòðåííèé âèçóàëüíûé Shell.
/// </summary>
public LatticeStudioShell Shell => ShellRoot;
public LatticeStudioWindow()
{
InitializeComponent();
// Ñòàðòîâûé çàãîëîâîê
Title = "Lattice IDE";
Shell.Title = Title;
}
/// <summary>
/// Ïåðåîïðåäåëÿåì Title, ÷òîáû ñèíõðîíèçèðîâàòü åãî ñ Shell.
/// </summary>
public new string Title
{
get => base.Title;
set
{
base.Title = value;
if (ShellRoot is not null)
{
ShellRoot.Title = value;
}
}
}
// --------------------------------------------------------------------
// Ïðîêñèðóåì ñâîéñòâà Shell íàðóæó
// --------------------------------------------------------------------
public string Subtitle
{
get => Shell.Subtitle;
set => Shell.Subtitle = value;
}
public IconSource TitleBarIcon
{
get => Shell.TitleBarIcon;
set => Shell.TitleBarIcon = value;
}
public object MenuContent
{
get => Shell.MenuContent;
set => Shell.MenuContent = value;
}
public object StatusContent
{
get => Shell.StatusContent;
set => Shell.StatusContent = value;
}
// --------------------------------------------------------------------
// Èíèöèàëèçàöèÿ ñåðâèñîâ Lattice.Core
// --------------------------------------------------------------------
/// <summary>
/// Åäèíàÿ òî÷êà èíèöèàëèçàöèè îêíà.
/// Âûçûâàåòñÿ èç êîíñòðóêòîðà íàñëåäíèêà (MainWindow).
/// </summary>
public void Initialize(
ILayoutService layoutService,
IContextService contextService,
IEnumerable<ActionDefinition> actions,
INotificationService notificationService)
{
Shell.Initialize(layoutService, contextService, actions);
Shell.InitializeNotifications(notificationService);
Shell.SetupWindow(this);
OnShellInitialized();
}
/// <summary>
/// Èíèöèàëèçèðóåò îêíî ñòàíäàðòíûìè ðåàëèçàöèÿìè ñåðâèñîâ Lattice.Core.
/// Ïîäõîäèò äëÿ áûñòðûõ ïðîòîòèïîâ è ïðîñòûõ ïðèëîæåíèé.
/// </summary>
public void Initialize()
{
var layout = new LayoutService();
var context = new ContextService();
var notifications = new NotificationService();
// Ïóñòîé íàáîð êîìàíä ïî óìîë÷àíèþ
var actions = Enumerable.Empty<ActionDefinition>();
Initialize(layout, context, actions, notifications);
}
/// <summary>
/// Õóê äëÿ íàñëåäíèêîâ — âûçûâàåòñÿ ïîñëå ïîëíîé èíèöèàëèçàöèè Shell.
/// </summary>
protected virtual void OnShellInitialized()
{
}
}