using Lattice.UI.Docking.Abstractions;
namespace Lattice.UI.Docking.Services;
///
/// Базовая реализация менеджера контекстных меню.
///
public abstract class DockContextManagerBase : IDockContextManager
{
///
public abstract void ShowContextMenu(IDockControl element, double x, double y);
///
public abstract void HideContextMenu();
///
public virtual void RegisterCommand(string commandId, IDockCommand command)
{
// Базовая реализация, должна быть переопределена в производных классах
}
///
public virtual void UnregisterCommand(string commandId)
{
// Базовая реализация, должна быть переопределена в производных классах
}
///
/// Получает команду по идентификатору.
///
protected virtual IDockCommand? GetCommand(string commandId)
{
// Базовая реализация, должна быть переопределена в производных классах
return null;
}
///
/// Получает все доступные команды для указанного элемента.
///
protected virtual IEnumerable GetCommandsForElement(IDockControl element)
{
// Фильтрация команд по типу элемента и его состоянию
yield break;
}
///
/// Проверяет, можно ли выполнить команду для указанного элемента.
///
protected virtual bool CanExecuteCommand(IDockCommand command, IDockControl element)
{
return command.CanExecute(element);
}
///
/// Выполняет команду для указанного элемента.
///
protected virtual void ExecuteCommand(IDockCommand command, IDockControl element)
{
command.Execute(element);
}
///
/// Вызывает событие показа контекстного меню.
///
protected virtual void OnContextMenuShown(IDockControl target, double x, double y)
{
ContextMenuShown?.Invoke(this, new ContextMenuShownEventArgs(target, x, y));
}
///
/// Вызывает событие скрытия контекстного меню.
///
protected virtual void OnContextMenuHidden()
{
ContextMenuHidden?.Invoke(this, EventArgs.Empty);
}
///
public event EventHandler? ContextMenuShown;
///
public event EventHandler? ContextMenuHidden;
}