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