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 }