using Lattice.Core.Docking.Models;
namespace Lattice.UI.Docking.Abstractions;
///
/// Определяет контракт для UI-контрола, который отображает группу разделения (DockGroup).
/// Этот контрол управляет отображением двух дочерних элементов с разделителем между ними.
///
///
/// Реализации этого интерфейса должны обеспечивать возможность изменения соотношения сторон
/// через перетаскивание разделителя и корректное отображение ориентации разделения.
///
public interface IDockGroupControl : IDockControl
{
///
/// Получает или задает ориентацию разделения группы.
///
///
/// Направление разделения (горизонтальное или вертикальное).
///
SplitDirection Orientation { get; set; }
///
/// Получает или задает соотношение разделения между первым и вторым элементами.
///
///
/// Значение от 0.0 до 1.0, где 0.5 означает равное разделение.
///
double SplitRatio { get; set; }
///
/// Получает или задает минимальный размер разделителя.
///
///
/// Минимальный размер разделителя в пикселях.
///
double SplitterSize { get; set; }
///
/// Получает контрол для первого дочернего элемента.
///
///
/// Контрол, отображающий первый дочерний элемент.
///
IDockControl? FirstChild { get; }
///
/// Получает контрол для второго дочернего элемента.
///
///
/// Контрол, отображающий второй дочерний элемент.
///
IDockControl? SecondChild { get; }
///
/// Устанавливает дочерние контролы для отображения.
///
/// Контрол для первого элемента.
/// Контрол для второго элемента.
void SetChildren(IDockControl? firstChild, IDockControl? secondChild);
///
/// Событие, возникающее при изменении соотношения разделения.
///
event EventHandler SplitRatioChanged;
}
///
/// Аргументы события изменения соотношения разделения.
///
public class SplitRatioChangedEventArgs : EventArgs
{
///
/// Новое соотношение разделения.
///
public double NewRatio { get; }
///
/// Источник изменения (пользователь или программа).
///
public SplitRatioChangeSource Source { get; }
///
/// Инициализирует новый экземпляр класса .
///
/// Новое соотношение разделения.
/// Источник изменения.
public SplitRatioChangedEventArgs(double newRatio, SplitRatioChangeSource source)
{
NewRatio = newRatio;
Source = source;
}
}
///
/// Источник изменения соотношения разделения.
///
public enum SplitRatioChangeSource
{
/// Изменение выполнено пользователем.
User,
/// Изменение выполнено программой.
Programmatic,
/// Изменение выполнено при восстановлении состояния.
Restore
}