148 lines
4.8 KiB
C#
148 lines
4.8 KiB
C#
using Lattice.Core.Geometry;
|
||
using Lattice.UI.Docking.Abstractions;
|
||
|
||
namespace Lattice.UI.Docking.Models;
|
||
|
||
/// <summary>
|
||
/// Расширенная информация о перетаскивании для UI-слоя.
|
||
/// Добавляет визуальные аспекты и UI-контекст к базовой информации о перетаскивании.
|
||
/// </summary>
|
||
public class UiDragInfo
|
||
{
|
||
/// <summary>
|
||
/// Базовые данные перетаскивания.
|
||
/// </summary>
|
||
public Core.DragDrop.Models.DragInfo BaseDragInfo { get; }
|
||
|
||
/// <summary>
|
||
/// UI-контрол, который является источником перетаскивания.
|
||
/// </summary>
|
||
public IDockControl? SourceControl { get; }
|
||
|
||
/// <summary>
|
||
/// Визуальное представление перетаскиваемого элемента.
|
||
/// </summary>
|
||
public object? DragVisual { get; set; }
|
||
|
||
/// <summary>
|
||
/// Смещение курсора относительно элемента при начале перетаскивания.
|
||
/// </summary>
|
||
public Point VisualOffset { get; set; }
|
||
|
||
/// <summary>
|
||
/// Размер визуального представления.
|
||
/// </summary>
|
||
public Size VisualSize { get; set; }
|
||
|
||
/// <summary>
|
||
/// Прозрачность визуального представления.
|
||
/// </summary>
|
||
public double VisualOpacity { get; set; } = 0.7;
|
||
|
||
/// <summary>
|
||
/// Инициализирует новый экземпляр <see cref="UiDragInfo"/>.
|
||
/// </summary>
|
||
public UiDragInfo(Core.DragDrop.Models.DragInfo baseDragInfo, IDockControl? sourceControl = null)
|
||
{
|
||
BaseDragInfo = baseDragInfo;
|
||
SourceControl = sourceControl;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Расширенная информация о сбросе для UI-слоя.
|
||
/// Добавляет визуальные подсказки и UI-контекст.
|
||
/// </summary>
|
||
public class UiDropInfo
|
||
{
|
||
/// <summary>
|
||
/// Базовые данные сброса.
|
||
/// </summary>
|
||
public Core.DragDrop.Models.DropInfo BaseDropInfo { get; }
|
||
|
||
/// <summary>
|
||
/// UI-контрол, который является целью сброса.
|
||
/// </summary>
|
||
public IDockControl? TargetControl { get; }
|
||
|
||
/// <summary>
|
||
/// Позиция сброса относительно элемента.
|
||
/// </summary>
|
||
public DropPosition DropPosition { get; set; }
|
||
|
||
/// <summary>
|
||
/// Визуальная подсказка для области сброса.
|
||
/// </summary>
|
||
public object? DropHintVisual { get; set; }
|
||
|
||
/// <summary>
|
||
/// Признак того, что курсор находится над допустимой областью сброса.
|
||
/// </summary>
|
||
public bool IsOverValidTarget { get; set; }
|
||
|
||
/// <summary>
|
||
/// Интенсивность подсветки области сброса (0.0 - 1.0).
|
||
/// </summary>
|
||
public double HighlightIntensity { get; set; }
|
||
|
||
/// <summary>
|
||
/// Инициализирует новый экземпляр <see cref="UiDropInfo"/>.
|
||
/// </summary>
|
||
public UiDropInfo(Core.DragDrop.Models.DropInfo baseDropInfo, IDockControl? targetControl = null)
|
||
{
|
||
BaseDropInfo = baseDropInfo;
|
||
TargetControl = targetControl;
|
||
DropPosition = DropPosition.Center;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Определяет позицию сброса относительно элемента.
|
||
/// </summary>
|
||
public enum DropPosition
|
||
{
|
||
/// <summary> Слева от элемента. </summary>
|
||
Left,
|
||
|
||
/// <summary> Справа от элемента. </summary>
|
||
Right,
|
||
|
||
/// <summary> Сверху от элемента. </summary>
|
||
Top,
|
||
|
||
/// <summary> Снизу от элемента. </summary>
|
||
Bottom,
|
||
|
||
/// <summary> В центре элемента (для объединения вкладок). </summary>
|
||
Center,
|
||
|
||
/// <summary> В виде новой вкладки. </summary>
|
||
Tab
|
||
}
|
||
|
||
|
||
public class DragStartedEventArgs : EventArgs
|
||
{
|
||
public IDockControl? Source { get; }
|
||
public Core.DragDrop.Models.DragInfo DragInfo { get; }
|
||
// ... конструктор
|
||
}
|
||
|
||
public class DragUpdatedEventArgs : EventArgs
|
||
{
|
||
public IDockControl? Source { get; }
|
||
public double X { get; }
|
||
public double Y { get; }
|
||
public Core.DragDrop.Models.DragInfo DragInfo { get; }
|
||
// ... конструктор
|
||
}
|
||
|
||
public class DragCompletedEventArgs : EventArgs
|
||
{
|
||
public IDockControl? Source { get; }
|
||
public IDockControl? Target { get; }
|
||
public Models.DropPosition DropPosition { get; }
|
||
public Core.DragDrop.Models.DragInfo? DragInfo { get; }
|
||
public bool Success { get; }
|
||
// ... конструктор
|
||
} |