Дизайн навигатора
Дизайн навигатора определяет то, каким образом навигатор будет отображаться пользователю на экране используемого им устройства (будем называть пространство экрана, на котором отображается навигатор, рабочим столом).
Дизайн навигатора состоит из множества окон - компонентов рабочего стола, каждый из которых отображает некоторые элементы навигатора.
Для каждого окна должен быть задан заголовок, который будет использоваться при отображении окна в пользовательском интерфейсе.
Расположение элементов навигатора в окнах
Каждому элементу навигатора можно задать, в какое окно должны рисоваться его потомки. При необходимости, в него может рисоваться и сам элемент. Таким образом, для каждого окна однозначно определяется множество поддеревьев элементов навигатора, которое в нем отображается. Графически это можно представить следующим образом:
Расположение окон на рабочем столе
Каждое окно занимает предопределенный участок рабочего стола. Графически это можно представить следующим образом:
Весь рабочий стол имеет размеры 100 x 100
точек. При создании окна необходимо указать левую верхнюю координату, ширину и высоту окна, выраженную в точках. Желательно, чтобы окна "накрывали" всю область рабочего стола. Если этого не происходит, то свободная область будет отдана одному из окон (не гарантируется какому именно). Также допускается, чтобы два окна имели абсолютно идентичные координаты и размеры. В таком случае они будут отображаться на одном и том же месте, но переключение между ними будет идти при помощи вкладок.
Выбранная папка
В любой момент времени в каждом окне может быть одна текущая выбранная пользователем папка навигатора. Соответственно, если элемент навигатора принадлежит окну, отличному от окна его родительской папки, то этот элемент показывается в своем окне в том и только в том случае, если его родительская папка является выбранной в своем окне. Предопределенная папка System.root
всегда считается выбранной. Если в каком-то окне не должен отображаться ни один элемент навигатора, то это окно автоматически прячется.
Типы
Для каждого окна может быть выбран тип, в зависимости от которого будет определяться, какой компонент в интерфейсе будет использоваться для отображения элементов навигатора.
- Тулбар - контейнер, состоящий из кнопок, каждая из которых соответствует одному элементу навигатора. Вертикальный тулбар располагает все кнопки сверху вниз, делая отступы слева для каждого элемента в зависимости от его положения в дереве. Горизонтальный тулбар располагает кнопки слева направо, не делая при этом никаких отступов.
- Панель - контейнер, в котором элементам навигатора соответствует иерархия компонент, где для форм и действий созданы кнопки, а папкам навигатора - вложенные контейнеры с соответствующим заголовком. Вертикальная панель располагает все вложенные контейнеры и кнопки в них сверху вниз, а горизонтальная - слева направо.
- Дерево - дерево, в котором каждому узлу соответствует свой элемент навигатора.
- Меню - меню, в котором каждой папке навигатора соответствует всплывающее меню, а формам и действиям - пункты в этом меню.
По умолчанию, в пользовательском интерфейсе компонент, который отображает элементы навигатора, оборачивается в скроллбары. Они появляются в случае, когда компонент не помещается в окне. При необходимости данное поведение можно отключить.
Системные окна
Существует несколько предопределенных системных окон, которые необходимы для работы клиентского приложения:
forms
- окно, в котором будут открываться все пользовательские формы.log
- окно, в которое будут выводиться все сообщения пользователю. Если это окно будет невидимо, то сообщения будут выдаваться пользователю в виде системных диалоговых форм.status
- окно, в которое выводится различная системная информация.
Также, для удобства разработки, автоматически создаются три дополнительных окна:
root
- горизонтальный тулбар, в который рекомендуется отображать непосредственные потомки элемента навигатораroot
. В этом окне по умолчанию отображается папка навигатораSystem.root
.toolbar
- вертикальный тулбар, в который рекомендуется отображать часть потомков элементов навигатора, которые отображаются в окнеroot
.tree
- дерево, в которое рекомендуется отображать часть потомков элементов навигатора, которые отображаются в окнеroot
Расположение по умолчанию
По умолчанию, рабочий стол имеет следующее расположение (в скобках указаны левая координата, верхняя координата, ширина, высота):
Язык
Для управления окнами необходимо использовать инструкцию WINDOW
.
Примеры
// cоздание системных окон в модуле System
WINDOW root 'Корень' TOOLBAR HIDETITLE HIDESCROLLBARS HORIZONTAL POSITION(0, 0, 100, 6);
WINDOW toolbar 'Тулбар' TOOLBAR HIDETITLE VERTICAL POSITION(0, 6, 20, 64);
WINDOW tree 'Дерево' TOOLBAR HIDETITLE POSITION(0, 6, 20, 64);
// меню без скроллбаров под окном root
WINDOW menu MENU HIDESCROLLBARS DRAWROOT POSITION(20, 6, 80, 4);
// горизонтальный тулбар внизу рабочего стола, в котором все кнопки будут выравниваться по центру, а текст выравниваться вверх
// в этот тулбар можно, например, помещать формы для быстрого открытия
WINDOW hotforms TOOLBAR HORIZONTAL VALIGN(CENTER) TEXTVALIGN(START) BOTTOM;