Panel

Главным классом базовой библиотеки sFF, дающий всем остальным компонентам свойства и методы позиционирования, является класс компонента Panel. Все остальные классы визуальных компонентов наследуются либо напрямую от этого класса, либо от его потомков.

Panel - визуальный класс компонента, несущий в себе включенные классы (агрегаты), и их свойства, которые создаются в унаследованных классах. При наследовании (корректном, при соблюдении методики) всегда создаётся минимум один новый класс с названием, совпадающим с именем нового класса. Таким образом гарантируется правильная трёхуровневая адресация любого свойства в sFF вида имяКласса.имяВКласса.имяСвойства (Panel.Panel.name или Label.Panel.name).

Два компонента Panel

Список свойств класса компонента Panel

вКласс, свойство

Комментарий

Panel

Включенный класс компонента Panel

name

Имя компонента. Применяется для адресации операции над компонентом.

parentPane

Компонент или его pane, являющиеся его родительским элементом. При изменении, компонент становится дочерним компонентом относительно назначенного ему родителя.

bound

См. ниже.

clip

Дочерние компоненты, находящиеся внутри и выходящие за его границы, будут обрезаны по ним.

color

Цвет компонента

container

Компонент ведёт себя как flexbox и выравнивает все дочерние компоненты (несмотря на их привязки) в качестве блоков.

containerSpace

Методика внутреннего выравнивания блоков внутри container. Работает только при container установленном в true.

cursor

Тип HTML-курсора над компонентом.

disabled

Компонент недоступен.

draggable

Компонент можно перетаскивать.

fact

См. ниже.

height

Высота компонента.

heightMeasure

Единицы высоты (px или %).

opacity

Прозрачность. Применяется ко всем дочерним компонентам.

radius

Радиус скругления углов компонента.

rotate

Поворот компонента. Дочерние компоненты поворачиваются вместе с родительским.

useCSS

Использование глобального стиля для компонента, либо использование стилей, установленных в компоненте.

visible

Видимость компонента. Дочерние компоненты повторяют поведение родителя.

width

Ширина компонента.

widthMeasure

Единицы ширины (px или %).

x

Горизонтальная координата верхнего левого угла компонента.

xMeasure

Единицы координаты X (px или %).

y

Вертикальная координата верхнего левого угла компонента.

yMeasure

Единицы координаты Y (px или %).

z

Положение относительно других компонентов. Чем больше z, тем компонент "ближе", перекрывая другие компоненты. Дочерние компоненты повторяют поведение родителя.

Border

Включенный класс границы компонента

color

Цвет границы

lineType

Тип границы (dashed, dotted, double ...)

width

Толщина границы в пикселях

Shadow

Включенный класс тени

blur

Величина размытия (чем больше - тем тень светлее)

color

Цвет тени

inset

Внутреннее расположение тени

offsetX

Горизонтальное смещение

offsetY

Вертикальное смещение

spread

Сжатие тени (при 0 размер тени равен размеру компонента)

Отображаемое в sE свойство Panel.bound является составным и используется только для справки. При расчётах размеров pane компонента используются действительно существующие свойства, показывающие его размеры в пикселях и его положение (описываемый вокруг компонента прямоугольник) относительно видимой области просмотра (точки с координатами {x:0,y:0}). Эти свойства нельзя изменить, они только-для-чтения.

Свойство

Значение

Panel.boundL

Расстояние до левой границы прямоугольника

Panel.boundT

Расстояние до верхней границы прямоугольника

Panel.boundR

Расстояние до правой границы прямоугольника

Panel.boundB

Расстояние до нижней границы прямоугольника

Panel.boundW

Ширина прямоугольника

Panel.boundH

Высота прямоугольника

Отображаемое в sE свойство Panel.fact является составным и используется только для справки. При расчётах размеров компонентов используются действительно существующие свойства, показывающие его расчётные значения всех CSS-свойств pane компонента, полученных после применения всех активных таблиц стилей, и завершения базовых вычислений значений, которые они могут содержать. Эти свойства нельзя изменить, они только-для-чтения.

Свойство

Значение

Panel.factL

Расстояние до левой границы компонента

Panel.factT

Расстояние до верхней границы компонента

Panel.factR

Расстояние до правой границы компонента

Panel.factB

Расстояние до нижней границы компонента

Panel.factW

Ширина компонента

Panel.factH

Высота компонента

Panel.fact и Panel.bound могут показаться схожими свойствами, что вызовет непонимание причин их совместного существования во включенном классе Panel. Но поверните компонент, и вы увидите разницу.

В этот список не вошли включенные классы Signal, Anch, Menu, Hint.

Поскольку компоненты базовой библиотеки являются визуальными, все они отображаются на странице приложения. Это возможно в том случае, если в класс компонента включен хотя бы один HTML-элемент. В класс компонента Panel с этой целью включен div, имеющий специальное название pane, обеспечивающий видимость и отвечающий за позиционирование компонента. Поскольку все визуальные классы компонентов sFF унаследованы от класса Panel, самым нижним элементом компонента всегда является pane (Panel.pane, Shell.pane).

Элементов в компоненте может быть сколько угодно, есть компоненты, набранные из компонентов, но все они имеют двухуровневую адресацию вида имяКласса.имяЭлемента, но все они несут служебную роль, и при правильной реализации класса не должны интересовать программиста, использующего класс в работе, так как все возможные операции с ними, если требуется, должны производиться методами самого класса. Чтобы не путать между собой включенные классы и элементы, всем классам даются имена с большой буквы, всем элементам - с маленькой.

Элемент pane является элементом DOM, как компонент Panel - компонентом ACM, выполняя роль связки между DOM и ACM.

Last updated