Платформа графического редактирования - Graphical Editing Framework
В Платформа графического редактирования (ГЭФ) является Затмение проект, который предоставляет компоненты инфраструктуры и конечного пользователя, связанные с графическими приложениями.
История
Первоначально GEF был разработан как часть IBM etools (com.ibm.etools.gef) и использовался для Затмение в 2002 году в версии 2.0.0, состоящей затем из двух компонентов: Draw2d, компонент 2D-визуализации на основе Стандартный набор инструментов виджетов (SWT) и GEF (MVC), связанная структура модели-представления-контроллера, которая может использоваться для реализации графических редакторов как часть приложений Eclipse Rich Client Platform (RCP). Первым выпуском Eclipse был GEF 2.1.0 в марте 2003 года. Следующая основная версия, GEF 3.0.0, была выпущена в июне 2004 года и обеспечивала множество новых функций, таких как поддержка правил и руководств. Zest был добавлен в качестве третьего компонента проекта в 2007 году в версии 1.0.0 как часть выпуска GEF 3.4.0. С 2004 года, когда был выпущен GEF 3.0.0, к интерфейсу прикладного программирования (API) фреймворка применялись только совместимые изменения.
Новая крупная версия структуры разрабатывалась параллельно с обслуживанием компонентов GEF 3.x командой проекта с 2010 года. Это полная переработка, которая стала гораздо более модульной, в ней используется JavaFX вместо SWT в качестве базовой структуры рендеринга, и может использоваться также независимо от приложений Eclipse RCP. Его компоненты, обычно называемые GEF4, были первоначально выпущены в версии 0.1.0 (с еще предварительным API) в июне 2015 года как часть выпуска GEF 3.10.0 (Mars). Компоненты GEF4 будут опубликованы в версии 1.0.0 как часть выпуска GEF 4.0.0 (Neon) в июне 2016 года.
ГЭФ 3.x
GEF 3.x предоставляет рамочную технологию для реализации графических редакторов и представлений как части Платформа расширенных клиентов Eclipse (RCP) Приложения. Он внутренне разложен на три компонента:
- Draw2d - компонент 2D-визуализации на основе Стандартный набор инструментов виджетов (SWT)
- GEF (MVC) - компонент модель-представление-контроллер, который можно использовать для реализации графических редакторов как часть приложений Eclipse Rich Client Product (RCP).
- Zest - набор инструментов визуализации на основе графиков, который можно использовать для реализации представлений для визуализации структур данных, подобных графу, как части приложений Eclipse RCP.
Хотя графические приложения могут быть созданы непосредственно поверх компонентов GEF 3.x, Draw2d и GEF (MVC) также используются Платформа графического моделирования (GMF), который объединяет их с Среда моделирования Eclipse (EMF) чтобы создать код как для модели данных, так и для графического редактора.
Архитектура
Редакторы, созданные с помощью GEF (MVC), состоят из следующих компонентов:
- Редактор диаграмм, включая палитру инструментов
- Рисунки, которые графически представляют основные элементы модели данных
- EditParts, которые соответствуют фигурам и соответствующим элементам модели
- Объекты запроса для ввода пользователем
- Объекты EditPolicy, которые оценивают запросы и создают соответствующие объекты команд
- Командные объекты, которые редактируют модель и предоставляют отменить -редо
Использование шаблонов проектирования
ГЭФ активно использует шаблоны проектирования. Эти шаблоны часто являются обязательными в рамках ГЭФ, и разработчики должны их понимать.
- Модель-представление-контроллер - это шаблон архитектурного проектирования, который разделяет приложение на отдельные части, которые взаимодействуют друг с другом определенным образом. Цель состоит в том, чтобы разделить модель данных (модель), графический пользовательский интерфейс (представление) и бизнес-логику (контроллер). GEF широко использует шаблон MVC.
- Модель: модель данных может быть либо сгенерирована с использованием EMF, реализована пользователем самостоятельно, либо она может уже существовать в случае устаревшего программного обеспечения.
- Контроллер: EditParts действуют как контроллеры. Обычно каждому элементу модели соответствует EditPart. EditParts может содержать другие EditParts, тем самым сопоставляя элементы модели, содержащие другие элементы модели. EditParts также имеет ссылку на рисунок, который графически представляет элемент модели. Наконец, EditParts оценивает запросы и создает соответствующую команду для редактирования базовой модели.
- Представление: для каждого элемента в модели, включая соединения, должна быть реализована фигура с использованием инфраструктуры Draw2d. Часто фигура представляет собой геометрический рисунок.
- Фабрика: Создание моделей из палитры, создание EditParts и создание фигур
- Наблюдатель: Обычно контроллер (EditPart) прослушивает модель и представление
- Команда: Для реализации функций отмены и повтора
- Стратегия: EditParts может устанавливать и удалять EditPolicies динамически
- Цепочка ответственности: Чтобы решить, какой EditPolicy должен обрабатывать запрос
Механизм запроса и ответа
Любое действие пользователя с редактором может сгенерировать запрос. Природа запроса понимается контекстом вызова. Контекст определяется EditPart, с которым взаимодействует пользователь, и активным инструментом. Инструмент может быть любой выбранной записью на палитре инструментов. Запрос передается выбранному EditPart, который, в свою очередь, возвращает команду.
Это достигается с помощью цепочка ответственности механизм над Editpolicies. Политики редактирования определяют, могут ли они обработать запрос, в противном случае они переходят к следующей политике редактирования. Порядок объявления политик редактирования определяет порядок, в котором передается запрос. Способная editpolicy создает команду. Эта команда возвращается в инструмент, который инициировал «Запрос». Выполнение команды вызывает изменение модели (Ответ).