DragAndDrop core
This commit is contained in:
148
Lattice.UI.Docking/Models/UiDragDropModels.cs
Normal file
148
Lattice.UI.Docking/Models/UiDragDropModels.cs
Normal file
@@ -0,0 +1,148 @@
|
||||
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; }
|
||||
// ... конструктор
|
||||
}
|
||||
Reference in New Issue
Block a user