DragAndDrop core
This commit is contained in:
108
Lattice.UI.Docking/Abstractions/IDockGroupControl.cs
Normal file
108
Lattice.UI.Docking/Abstractions/IDockGroupControl.cs
Normal file
@@ -0,0 +1,108 @@
|
||||
using Lattice.Core.Docking.Models;
|
||||
|
||||
namespace Lattice.UI.Docking.Abstractions;
|
||||
|
||||
/// <summary>
|
||||
/// Определяет контракт для UI-контрола, который отображает группу разделения (DockGroup).
|
||||
/// Этот контрол управляет отображением двух дочерних элементов с разделителем между ними.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Реализации этого интерфейса должны обеспечивать возможность изменения соотношения сторон
|
||||
/// через перетаскивание разделителя и корректное отображение ориентации разделения.
|
||||
/// </remarks>
|
||||
public interface IDockGroupControl : IDockControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Получает или задает ориентацию разделения группы.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// Направление разделения (горизонтальное или вертикальное).
|
||||
/// </value>
|
||||
SplitDirection Orientation { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Получает или задает соотношение разделения между первым и вторым элементами.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// Значение от 0.0 до 1.0, где 0.5 означает равное разделение.
|
||||
/// </value>
|
||||
double SplitRatio { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Получает или задает минимальный размер разделителя.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// Минимальный размер разделителя в пикселях.
|
||||
/// </value>
|
||||
double SplitterSize { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Получает контрол для первого дочернего элемента.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// Контрол, отображающий первый дочерний элемент.
|
||||
/// </value>
|
||||
IDockControl? FirstChild { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Получает контрол для второго дочернего элемента.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// Контрол, отображающий второй дочерний элемент.
|
||||
/// </value>
|
||||
IDockControl? SecondChild { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Устанавливает дочерние контролы для отображения.
|
||||
/// </summary>
|
||||
/// <param name="firstChild">Контрол для первого элемента.</param>
|
||||
/// <param name="secondChild">Контрол для второго элемента.</param>
|
||||
void SetChildren(IDockControl? firstChild, IDockControl? secondChild);
|
||||
|
||||
/// <summary>
|
||||
/// Событие, возникающее при изменении соотношения разделения.
|
||||
/// </summary>
|
||||
event EventHandler<SplitRatioChangedEventArgs> SplitRatioChanged;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Аргументы события изменения соотношения разделения.
|
||||
/// </summary>
|
||||
public class SplitRatioChangedEventArgs : EventArgs
|
||||
{
|
||||
/// <summary>
|
||||
/// Новое соотношение разделения.
|
||||
/// </summary>
|
||||
public double NewRatio { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Источник изменения (пользователь или программа).
|
||||
/// </summary>
|
||||
public SplitRatioChangeSource Source { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Инициализирует новый экземпляр класса <see cref="SplitRatioChangedEventArgs"/>.
|
||||
/// </summary>
|
||||
/// <param name="newRatio">Новое соотношение разделения.</param>
|
||||
/// <param name="source">Источник изменения.</param>
|
||||
public SplitRatioChangedEventArgs(double newRatio, SplitRatioChangeSource source)
|
||||
{
|
||||
NewRatio = newRatio;
|
||||
Source = source;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Источник изменения соотношения разделения.
|
||||
/// </summary>
|
||||
public enum SplitRatioChangeSource
|
||||
{
|
||||
/// <summary>Изменение выполнено пользователем.</summary>
|
||||
User,
|
||||
|
||||
/// <summary>Изменение выполнено программой.</summary>
|
||||
Programmatic,
|
||||
|
||||
/// <summary>Изменение выполнено при восстановлении состояния.</summary>
|
||||
Restore
|
||||
}
|
||||
Reference in New Issue
Block a user