Files
Lattice/Lattice.UI.Docking/Services/DockContextManagerBase.cs
2026-02-01 09:26:13 +03:00

83 lines
2.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Lattice.UI.Docking.Abstractions;
namespace Lattice.UI.Docking.Services;
/// <summary>
/// Базовая реализация менеджера контекстных меню.
/// </summary>
public abstract class DockContextManagerBase : IDockContextManager
{
/// <inheritdoc/>
public abstract void ShowContextMenu(IDockControl element, double x, double y);
/// <inheritdoc/>
public abstract void HideContextMenu();
/// <inheritdoc/>
public virtual void RegisterCommand(string commandId, IDockCommand command)
{
// Базовая реализация, должна быть переопределена в производных классах
}
/// <inheritdoc/>
public virtual void UnregisterCommand(string commandId)
{
// Базовая реализация, должна быть переопределена в производных классах
}
/// <summary>
/// Получает команду по идентификатору.
/// </summary>
protected virtual IDockCommand? GetCommand(string commandId)
{
// Базовая реализация, должна быть переопределена в производных классах
return null;
}
/// <summary>
/// Получает все доступные команды для указанного элемента.
/// </summary>
protected virtual IEnumerable<IDockCommand> GetCommandsForElement(IDockControl element)
{
// Фильтрация команд по типу элемента и его состоянию
yield break;
}
/// <summary>
/// Проверяет, можно ли выполнить команду для указанного элемента.
/// </summary>
protected virtual bool CanExecuteCommand(IDockCommand command, IDockControl element)
{
return command.CanExecute(element);
}
/// <summary>
/// Выполняет команду для указанного элемента.
/// </summary>
protected virtual void ExecuteCommand(IDockCommand command, IDockControl element)
{
command.Execute(element);
}
/// <summary>
/// Вызывает событие показа контекстного меню.
/// </summary>
protected virtual void OnContextMenuShown(IDockControl target, double x, double y)
{
ContextMenuShown?.Invoke(this, new ContextMenuShownEventArgs(target, x, y));
}
/// <summary>
/// Вызывает событие скрытия контекстного меню.
/// </summary>
protected virtual void OnContextMenuHidden()
{
ContextMenuHidden?.Invoke(this, EventArgs.Empty);
}
/// <inheritdoc/>
public event EventHandler<ContextMenuShownEventArgs>? ContextMenuShown;
/// <inheritdoc/>
public event EventHandler? ContextMenuHidden;
}