logo search
Bolshakov_Poyasnitelnaya_zapiska

2.2.2.1.3 Разработка графических редакторов

Разработка графических редакторов происходит при использовании технологии GEF (Graphical Editing Framework, графическая платформа редактирования) [37]. Платформа включает в себя общие архитектурные принципы построения текстовых редакторов и соответствующую библиотеку. Для установки правил расположения графических компонентов и непосредственного их отображения на SWT-холсте [38] GEF использует библиотеку Draw2D [39]. Поверх Draw2D GEF добавляет мощные функциональные возможности управления данными графического редактора.

В качестве архитектурной модели построения редакторов на базе платформы GEF предусматривается архитектура MVC (Model-View-Controller, Модель-Представление-Контролер) [40]. Общая архитектурная схема редактора, построенная на базе платформы GEF, представлена на рисунке 2.4.

Рисунок 2.4 - Архитектурная схема графического редактора на базе

платформы GEF

Согласно схеме, данные для графического представления и редактирования представляют собой модель согласно архитектуре MVC. Модель оповещает свое представление (фигуры) о происходящих в ней изменениях, при этом сами изменения, то есть непосредственное редактирование модели выполняется контролером через команды. Команда инкапсулирует набор действий по элементарному изменению модели, а также набор действий по отмене этого изменения (если того потребует пользователь). Набор выполненных команд хранится в стеке команд библиотекой GEF, однако при отмене команды платформа лишь сдвигает указатель на предыдущую команду, так чтобы до появления от пользователя новых команд можно было вернуть отмененные изменения.

Пользователь непосредственно работает с графическим SWT-холстом, на котором отображаются фигуры, а также может посылать события через элементы управления, меню и за счет использования специальных сочетаний клавиш. События, происходящие на SWT-холсте отправляются инструментам, остальные - действиям (actions) Eclipse. Задача инструментов и действий заключается в формировании команд. Для этого инструменты определяют список графических объектов, для которых необходимо сформировать команду, и делегируют создание команды контролерам установленных объектов. В свою очередь, контролеры могут делегировать функции создания команды своим политикам. Смысл существования политик заключается в инкапсуляции кода по созданию одинаковых команды в одном классе, который можно использовать из разных контролеров. Широкий набор готовых политик, позволяющий выполнить основные команды (например, выделение компонентов, перетаскивание, удаление, установка точек сцепления стрелок и так далее), входит в библиотеку GEF. Также в библиотеку GEF входит набор инструментов, задача которых установить некоторый режим редактирования, в зависимости от которого на одни и те же события от пользователя могут генерироваться различные команды (например, инструмент рисования стрелок и инструмент выделения при пользовательском щелчке мыши приводят к исполнению различных команд).

Согласно предлагаемой GEF архитектуре были разработаны модели двух графических редакторов, приведенные в нотации UML на рисунках 2.5 и 2.6.

Рисунок 2.5 - Редактируемая общая модель данных графического редактора диаграммы задач

Рисунок 2.6 - Редактируемая общая модель данных графического редактора схемы оборудования

Структура контролеров с точностью повторяет структуру моделей редакторов.