116 lines
3.0 KiB
C#
116 lines
3.0 KiB
C#
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()
|
|
{
|
|
}
|
|
} |