83 lines
2.9 KiB
C#
83 lines
2.9 KiB
C#
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;
|
||
} |