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; }