Для разработчиков BE4 — различия между версиями
Asko  (обсуждение | вклад) (Метка: visualeditor)  | 
				Asko  (обсуждение | вклад)   (→Ядро) (Метка: visualeditor)  | 
				||
| Строка 2: | Строка 2: | ||
На высоком уровне BE4 состоит из нескольких частей:  | На высоком уровне BE4 состоит из нескольких частей:  | ||
| − | * '''com.beanexplorer.enterprise.metadata*''' - ядро  | + | * '''com.beanexplorer.enterprise.metadata*''' - ядро;  | 
| − | * com.beanexplorer.enterprise.metadata.ant - реализация Ant задач, объявленных в be4/src/be4lib.xml, эти классы не должны использоваться во время исполнения BEclipse  | + | * com.beanexplorer.enterprise.metadata.ant - реализация Ant задач, объявленных в be4/src/be4lib.xml, эти классы не должны использоваться во время исполнения BEclipse;  | 
| − | * com.beanexplorer.enterprise.be4core - класс Be4QueryExecutor, необходимый для запуска Query относительно простым образом без необходимости хранить Query в таблице (в BE3 запуск Query происходит по имени или идентификатору Query в таблице queries, а мы в BE4 работаем только с модельными объектами представленными в виде Java объектов, а не строк в SQL таблицах); используется для запуска Query в BEeclipse и BE5  | + | * com.beanexplorer.enterprise.be4core - класс Be4QueryExecutor, необходимый для запуска Query относительно простым образом без необходимости хранить Query в таблице (в BE3 запуск Query происходит по имени или идентификатору Query в таблице queries, а мы в BE4 работаем только с модельными объектами представленными в виде Java объектов, а не строк в SQL таблицах); используется для запуска Query в BEeclipse и BE5;  | 
| − | * com.beanexplorer.enterprise.eclipse - UI BEclipse и необходимые для его модельные элементы и view model  | + | * com.beanexplorer.enterprise.eclipse - UI BEclipse и необходимые для его модельные элементы и view model;  | 
| − | * com.beanexplorer.enterprise.api - заготовка фасада для использования простейшего API в тестах: загрузка проекта из папки (projectApi = Facade.load(path)), получение корректного DatabaseConnector (projectApi.getDatabaseConnector()) и запуск Freemarker скриптов (projectApi.runFreemarkerScript(string))  | + | * com.beanexplorer.enterprise.api - заготовка фасада для использования простейшего API в тестах: загрузка проекта из папки (projectApi = Facade.load(path)), получение корректного DatabaseConnector (projectApi.getDatabaseConnector()) и запуск Freemarker скриптов (projectApi.runFreemarkerScript(string));  | 
| − | * com.beanexplorer.enterprise.diagrams - здесь и модельные элементы, и UI для диаграмм; новые виды диаграм легче всего добавлять по аналогии со старыми, смотря на уже готовые классы  | + | * com.beanexplorer.enterprise.diagrams - здесь и модельные элементы, и UI для диаграмм; новые виды диаграм легче всего добавлять по аналогии со старыми, смотря на уже готовые классы;  | 
| − | * com.beanexplorer.enterprise.planning - здесь [http://ru.wikipedia.org/wiki/Model-View-ViewModel и Model, и ViewModel, и View] для для [[BeanExplorer4#Описание по каждому редактору и view|TasksView]]  | + | * com.beanexplorer.enterprise.planning - здесь [http://ru.wikipedia.org/wiki/Model-View-ViewModel и Model, и ViewModel, и View] для для [[BeanExplorer4#Описание по каждому редактору и view|TasksView]].  | 
| − | + | == Ядро ==  | |
| − | * '''com.beanexplorer.enterprise.metadata*''' - ядро  | + | * '''com.beanexplorer.enterprise.metadata*''' - ядро.  | 
| − | ** exception - все базовые исключения для BE4, мы используем [http://en.wikipedia.org/wiki/Exception_handling#Checked_exceptions checked exceptions]  | + | ** exception - все базовые исключения для BE4, мы используем [http://en.wikipedia.org/wiki/Exception_handling#Checked_exceptions checked exceptions].  | 
| − | ** '''model*''' - самое сердце BE4 - модельные объекты, которые представляют собой [[Структура проекта|дерево проекта]], начиная с класса [[Project]]  | + | ** '''model*''' - самое сердце BE4 - модельные объекты, которые представляют собой [[Структура проекта|дерево проекта]], начиная с класса [[Project]].  | 
| − | ** sql -    | + | ** sql - скачивание legacy метаданных (дерева проекта) из BE3 базы данных, синхронизация с базой данных.   | 
| − | ** serialization -    | + | ** serialization - сохранённый на жёстком диске BE4 проект представляется как набор YAML файлов; данном пакете реализованы сериализация и десериализация YAML.   | 
| − | ** freemarker - расширение Freemarker, в частности [[Built-ins|Be4BuiltIns]] и [[Встроенные функции|DatabaseFunctions]], [[макросы]] находятся в be4/src/com/beanexplorer/enterprise/metadata/freemarker/macro/common.ftl  | + | ** freemarker - расширение Freemarker, в частности [[Built-ins|Be4BuiltIns]] и [[Встроенные функции|DatabaseFunctions]], [[макросы]] находятся в be4/src/com/beanexplorer/enterprise/metadata/freemarker/macro/common.ftl.  | 
| − | *** FreemarkerSqlHandler - получает на вход FreemarkerScript и запускает его как SQL, переадресуя сгенерированный текст в SqlExecutor  | + | *** FreemarkerSqlHandler - получает на вход FreemarkerScript и запускает его как SQL, переадресуя сгенерированный текст в SqlExecutor.  | 
| − | ** util  | + | ** util - базовые полезности; должны находиться в этом пакете, даже если используются только в UI  | 
| − | === UI ===  | + | == UI ==  | 
| + | Поскольку BEclipse - это плагин для Eclipse, UI реализован классическим способом для Eclipse плагинов. А именно:  | ||
| + | * весь основной функционал описан в plugin.xml,  | ||
| + | ** это могут быть меню, команды, view, редакторы, wizard, страницы настроек и прочее. Для просмотра всего фунционала открываем plugin.xml на странице "Extensions".  | ||
| + | |||
| + | === Команды ===  | ||
| + | Для создания команды неоходимо зарегистрировать два расширения:  | ||
| + | * org.eclipse.ui.commands  | ||
| + | * org.eclipse.ui.handlers  | ||
| + | Дело в том, что в Eclipse одна и та же команда может быть запущена разными обработчиками, так что команда разделена на две части - собственно command, представляет собой абстрактную команду с именем и описанием, и handler - обработчик, ссылается на класс, реализующий функционал этой команды и указывающий, может ли он в данный момент обработать действие. Например, в Eclipse есть стандартная команда "Debug". В разных контекстах её обрабатывает разный обработчик - Java код запускается одним способом, а C++ код другим. При этом кнопка на панели инструментов и биндинг постоянно F11 ссылаются на одно и то же действие.  | ||
| + | |||
| + | Наши обработчики команд лежат в com.beanexplorer.enterprise.eclipse.handlers и имеют названия, представляющие собой глаголы.  | ||
| + | |||
| + | Так что для создания новой команды  | ||
| + | * кликаем на org.eclipse.ui.commands в нашем редакторе plugin.xml на вкладке Extensions, New -> command, даём уникальный идентификатор, читаемое имя и категорию (categoryId) com.beanexplorer.be4.ui.commands,  | ||
| + | * кликаем на org.eclipse.ui.handlers , New -> handler, выбираем только что созданную команду и новый класс из com.beanexplorer.enterprise.eclipse.handlers.  | ||
| + | |||
| + | === Меню ===  | ||
| + | Это расширение org.eclipse.ui.menus (New -> menuContribution). Общий вид ссылки на меню (locationURI):  | ||
| + | * [menu|popup|toolbar]:<menuOrPartName>[?after=additions]  | ||
| + | Здесь "menu", "popup", "toolbar" - предопределённые строки. <menuOrPartName> - либо "известное" имя типа org.eclipse.ui.main.menu или org.eclipse.ui.main.toolbar, либо имя редактора или view типа com.beanexplorer.enterprise.eclipse.BeProjectView.  | ||
| + | |||
| + | popup:com.beanexplorer.enterprise.eclipse.BeProjectView - это, в частности, контекстное меню нашего дерева проекта. Для добавления в него новой команды кликаем на надпись "popup:com.beanexplorer.enterprise.eclipse.BeProjectView" (слева в дереве), New -> command, выбираем команды, указываем текст и выбираем иконку. Готово!  | ||
| + | |||
| + | ==== Замечание ====  | ||
| + | Для того, чтобы найти класс с реализацией пункта меню, можно найти соответствующий пункт  | ||
| + | |||
| + | === Редакторы и view ===  | ||
| + | Хранятся в  | ||
| + | * com.beanexplorer.enterprise.eclipse.editors и  | ||
| + | * com.beanexplorer.enterprise.eclipse.views соответственно.  | ||
| + | Аналогично.  | ||
Версия 15:30, 5 декабря 2014
Здесь будет информация по архитектуре BE4.
На высоком уровне BE4 состоит из нескольких частей:
- com.beanexplorer.enterprise.metadata* - ядро;
 - com.beanexplorer.enterprise.metadata.ant - реализация Ant задач, объявленных в be4/src/be4lib.xml, эти классы не должны использоваться во время исполнения BEclipse;
 - com.beanexplorer.enterprise.be4core - класс Be4QueryExecutor, необходимый для запуска Query относительно простым образом без необходимости хранить Query в таблице (в BE3 запуск Query происходит по имени или идентификатору Query в таблице queries, а мы в BE4 работаем только с модельными объектами представленными в виде Java объектов, а не строк в SQL таблицах); используется для запуска Query в BEeclipse и BE5;
 - com.beanexplorer.enterprise.eclipse - UI BEclipse и необходимые для его модельные элементы и view model;
 - com.beanexplorer.enterprise.api - заготовка фасада для использования простейшего API в тестах: загрузка проекта из папки (projectApi = Facade.load(path)), получение корректного DatabaseConnector (projectApi.getDatabaseConnector()) и запуск Freemarker скриптов (projectApi.runFreemarkerScript(string));
 - com.beanexplorer.enterprise.diagrams - здесь и модельные элементы, и UI для диаграмм; новые виды диаграм легче всего добавлять по аналогии со старыми, смотря на уже готовые классы;
 - com.beanexplorer.enterprise.planning - здесь и Model, и ViewModel, и View для для TasksView.
 
Содержание
Ядро
-  com.beanexplorer.enterprise.metadata* - ядро.
- exception - все базовые исключения для BE4, мы используем checked exceptions.
 - model* - самое сердце BE4 - модельные объекты, которые представляют собой дерево проекта, начиная с класса Project.
 - sql - скачивание legacy метаданных (дерева проекта) из BE3 базы данных, синхронизация с базой данных.
 - serialization - сохранённый на жёстком диске BE4 проект представляется как набор YAML файлов; данном пакете реализованы сериализация и десериализация YAML.
 -  freemarker - расширение Freemarker, в частности Be4BuiltIns и DatabaseFunctions, макросы находятся в be4/src/com/beanexplorer/enterprise/metadata/freemarker/macro/common.ftl.
- FreemarkerSqlHandler - получает на вход FreemarkerScript и запускает его как SQL, переадресуя сгенерированный текст в SqlExecutor.
 
 - util - базовые полезности; должны находиться в этом пакете, даже если используются только в UI
 
 
UI
Поскольку BEclipse - это плагин для Eclipse, UI реализован классическим способом для Eclipse плагинов. А именно:
-  весь основной функционал описан в plugin.xml,
- это могут быть меню, команды, view, редакторы, wizard, страницы настроек и прочее. Для просмотра всего фунционала открываем plugin.xml на странице "Extensions".
 
 
Команды
Для создания команды неоходимо зарегистрировать два расширения:
- org.eclipse.ui.commands
 - org.eclipse.ui.handlers
 
Дело в том, что в Eclipse одна и та же команда может быть запущена разными обработчиками, так что команда разделена на две части - собственно command, представляет собой абстрактную команду с именем и описанием, и handler - обработчик, ссылается на класс, реализующий функционал этой команды и указывающий, может ли он в данный момент обработать действие. Например, в Eclipse есть стандартная команда "Debug". В разных контекстах её обрабатывает разный обработчик - Java код запускается одним способом, а C++ код другим. При этом кнопка на панели инструментов и биндинг постоянно F11 ссылаются на одно и то же действие.
Наши обработчики команд лежат в com.beanexplorer.enterprise.eclipse.handlers и имеют названия, представляющие собой глаголы.
Так что для создания новой команды
- кликаем на org.eclipse.ui.commands в нашем редакторе plugin.xml на вкладке Extensions, New -> command, даём уникальный идентификатор, читаемое имя и категорию (categoryId) com.beanexplorer.be4.ui.commands,
 - кликаем на org.eclipse.ui.handlers , New -> handler, выбираем только что созданную команду и новый класс из com.beanexplorer.enterprise.eclipse.handlers.
 
Меню
Это расширение org.eclipse.ui.menus (New -> menuContribution). Общий вид ссылки на меню (locationURI):
- [menu|popup|toolbar]:<menuOrPartName>[?after=additions]
 
Здесь "menu", "popup", "toolbar" - предопределённые строки. <menuOrPartName> - либо "известное" имя типа org.eclipse.ui.main.menu или org.eclipse.ui.main.toolbar, либо имя редактора или view типа com.beanexplorer.enterprise.eclipse.BeProjectView.
popup:com.beanexplorer.enterprise.eclipse.BeProjectView - это, в частности, контекстное меню нашего дерева проекта. Для добавления в него новой команды кликаем на надпись "popup:com.beanexplorer.enterprise.eclipse.BeProjectView" (слева в дереве), New -> command, выбираем команды, указываем текст и выбираем иконку. Готово!
Замечание
Для того, чтобы найти класс с реализацией пункта меню, можно найти соответствующий пункт
Редакторы и view
Хранятся в
- com.beanexplorer.enterprise.eclipse.editors и
 - com.beanexplorer.enterprise.eclipse.views соответственно.
 
Аналогично.