Расширение редакторов GMF для настройки

Мне нужно настроить сгенерированный код для редактора, который я создал с помощью GMF. Например, мне нужно добавить всплывающее окно для выбора узла в редакторе, мне нужно добавить текст тоже пустое пространство, используемое в качестве основы для редактора. Я понимаю, что эти изменения должны быть сделаны вручную. Может кто-нибудь сказать, пожалуйста, как сделать вышеупомянутые вещи? Или, возможно, указать мне на ресурсы для расширения редакторов GMF и их настройки?

2 ответа

Есть несколько вариантов предоставления всплывающего окна при выборе или наведении курсора. Не уверен, что вы имели в виду под текстом на пустом месте... возможно, вы можете уточнить это. Самый простой способ включить всплывающую панель - это установить org.eclipse.gmf.runtime.diagram.ui.editpolicies.PopupbarEditPolicy на ваши правки, для которых вы хотите, чтобы появилась всплывающая панель. Эта политика редактирования отображает всплывающую панель, когда курсор мыши вводит фигуру, и мышь остается бездействующей внутри фигуры в течение секунды или чего-то в этом роде. Думаю, это будет видно, когда форма выбрана. Пожалуйста, поэкспериментируйте с редактором диаграмм логики времени выполнения GMF, чтобы понять, о чем я говорю. Вы можете настроить эту политику редактирования по своему вкусу, а затем установить на соответствующие части редактирования с помощью метода #createDefaultEditPolicies(). Ниже приведен пример:

installEditPolicy (EditPolicyRoles.POPUPBAR_ROLE, new PopupBarEditPolicy ());

См. Org.eclipse.gmf.runtime.emf.ui.modelingAssistantProviders, чтобы добавить действия к всплывающей панели. (Пример: org.eclipse.gmf.examples.runtime.diagram.logic/plugin.xml)

Если это слишком сложно, попробуйте создать подклассы ShapeResizableEditPolicy и переопределить методы showSelection() и hideSelection(), чтобы добавить всплывающее окно строго для выбора. Осложнения заключаются в том, что это может быть какой-то другой подкласс SelectionEditPolicy, который вам необходимо переопределить в зависимости от того, что установлено в EditPolicy.PRIMARY_DRAG_ROLE, а также быть осторожным с уровнем рисунка, куда вы добавляете всплывающую фигуру.

Кроме того, вы можете добавить SelectionListener в GraphicalViewer, а затем попробовать добавить / удалить всплывающую фигуру, основываясь на том, что выбрано, но я бы не рекомендовал это решение.

Надеюсь это поможет.

Я удивлен тем, что всплывающая панель не отображается для вас по умолчанию для сгенерированного GMF редактора. Возможно, это просто отключено. Поместите точку останова в org.eclipse.gmf.runtime.diagram.ui.editpolicies.DiagramAssistantEditPolicy#shouldShowDiagramAssistant(). Прежде всего проверьте, останавливаетесь ли вы когда-нибудь на этом, и если вы проверяете, почему возвращается false, проверьте, возвращает ли, в частности, #isPreferenceOn() false. Если настройка предпочтений отключена, то исправление всплывающей панели будет просто вопросом установки предпочтений.

Я бы посоветовал начать читать о ГЭФ. GEF - это среда графического редактирования Eclipse. GMF основан на ГЭФ. Архитектура GEF - Модель - Представление - Контроллер. Просмотр карт в Java реализует IFigure. Контроллер реализует интерфейс EditPart. Модель остается открытой в GEF. GMF ожидает модель EMF (EMF - Eclipse Modeling Framework) и добавляет поверх инструментального компонента среды выполнения для генерации кода.

Я бы посоветовал вам начать читать статьи о GEF, некоторые из этих статей будут о редакторах GEF с моделями EMF (что на самом деле является GMF). Ссылка на статьи: https://www.eclipse.org/gef/reference/articles.html

Для персонала, который вы хотели, вам нужно изменить контроллеры из архитектуры MVC ГЭФ. Ищите классы, заканчивающиеся на EditPart. EditPolicies - это артефакты, отвечающие за возможности редактирования фигур на диаграмме. EditPolicies установлены на editparts.

Надеюсь это поможет.

Другие вопросы по тегам