DragAndDrop core
This commit is contained in:
115
Lattice.UI.Docking/Commands/DockCommandBase.cs
Normal file
115
Lattice.UI.Docking/Commands/DockCommandBase.cs
Normal file
@@ -0,0 +1,115 @@
|
||||
using Lattice.UI.Docking.Abstractions;
|
||||
|
||||
namespace Lattice.UI.Docking.Commands;
|
||||
|
||||
/// <summary>
|
||||
/// Базовая реализация команды док-системы.
|
||||
/// </summary>
|
||||
public abstract class DockCommandBase : IDockCommand
|
||||
{
|
||||
private bool _canExecute = true;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public abstract string Id { get; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public abstract string Name { get; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public virtual string Description => string.Empty;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public virtual string Icon => string.Empty;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public virtual string Shortcut => string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Получает или задает признак возможности выполнения команды.
|
||||
/// </summary>
|
||||
public bool CanExecute
|
||||
{
|
||||
get => _canExecute;
|
||||
set
|
||||
{
|
||||
if (_canExecute != value)
|
||||
{
|
||||
_canExecute = value;
|
||||
OnCanExecuteChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public event EventHandler? CanExecuteChanged;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public virtual bool CanExecute(object? parameter)
|
||||
{
|
||||
return _canExecute;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public abstract void Execute(object? parameter);
|
||||
|
||||
/// <summary>
|
||||
/// Вызывает событие изменения возможности выполнения команды.
|
||||
/// </summary>
|
||||
protected virtual void OnCanExecuteChanged()
|
||||
{
|
||||
CanExecuteChanged?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Базовая команда для закрытия контента.
|
||||
/// </summary>
|
||||
public class CloseContentCommand : DockCommandBase
|
||||
{
|
||||
public override string Id => "CloseContent";
|
||||
public override string Name => "Close";
|
||||
public override string Description => "Close the current tab";
|
||||
public override string Icon => "Close";
|
||||
public override string Shortcut => "Ctrl+F4";
|
||||
|
||||
public override void Execute(object? parameter)
|
||||
{
|
||||
if (parameter is Abstractions.IDockLeafControl leafControl &&
|
||||
leafControl.ActiveContent != null)
|
||||
{
|
||||
leafControl.CloseContent(leafControl.ActiveContent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Базовая команда для создания плавающего окна.
|
||||
/// </summary>
|
||||
public class FloatWindowCommand : DockCommandBase
|
||||
{
|
||||
public override string Id => "FloatWindow";
|
||||
public override string Name => "Float";
|
||||
public override string Description => "Float the window as a separate window";
|
||||
public override string Icon => "Float";
|
||||
|
||||
public override void Execute(object? parameter)
|
||||
{
|
||||
// Реализация зависит от конкретного UI
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Базовая команда для закрепления окна.
|
||||
/// </summary>
|
||||
public class DockWindowCommand : DockCommandBase
|
||||
{
|
||||
public override string Id => "DockWindow";
|
||||
public override string Name => "Dock";
|
||||
public override string Description => "Dock the window to the main window";
|
||||
public override string Icon => "Dock";
|
||||
|
||||
public override void Execute(object? parameter)
|
||||
{
|
||||
// Реализация зависит от конкретного UI
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user