Я хочу добавить заголовок в верхней части холста в моем редакторе, который я создал с помощью GMF в Eclipse. Может ли кто-нибудь указать мне, какие изменения мне нужно внести в сгенерированный код, чтобы добиться этого? Спасибо
Настройка рабочей среды Editor путем добавления Title Eclipse GMF
Ответы (2)
Вот фрагмент кода для вас, который добавляет метку SWT в верхней части графического средства просмотра для редактора логических примеров GEF. Yopu может легко сделать то же самое для редактора GMF, потому что DiagramEditor GMF был создан на основе LogicEditor GEF.
Я изменил следующие методы в GEF LogicEditor:
private Composite graphicalControl;
/*
* (non-Javadoc)
*
* @see
* org.eclipse.gef.ui.parts.GraphicalEditor#createGraphicalViewer(org.eclipse
* .swt.widgets.Composite)
*/
protected void createGraphicalViewer(Composite parent) {
graphicalControl = new Composite(parent, SWT.None);
graphicalControl.setLayout(new GridLayout());
Label label = new Label(graphicalControl, SWT.None);
label.setText("MY DIAGRAM NAME!!!");
label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
rulerComp = new RulerComposite(graphicalControl, SWT.NONE);
super.createGraphicalViewer(rulerComp);
rulerComp
.setGraphicalViewer((ScrollingGraphicalViewer) getGraphicalViewer());
rulerComp.setLayoutData(new GridData(GridData.FILL_BOTH));
}
protected Control getGraphicalControl() {
return graphicalControl;
}
В дополнение к этому изменению я удалил предыдущие реализации этих методов в LogicEditor и заменил вызов getGraphicalControl() на метод linearComp для LogicEditor#configureGraphicalViewer() (в конце добавлено 2 слушателя SWT)
Результат на скриншоте ниже.
Добавьте заголовок, используя элементы управления SWT, а не конструкции GEF/GMF.
Внутри пакета GEF org.eclipse.gef.ui.parts Посмотрите на классы: GraphicalEditor (без палитры, только средство просмотра диаграмм) GraphicalEditorWithPalette (средство просмотра диаграмм + палитра с помощью SWT Splitter) GraphicalEditorWithFlyoutPalette (то же самое, что и выше, с возможностью скрыть палитру)
Обратите внимание, как палитра добавляется в редактор. Что-то подобное нужно сделать, чтобы показать заголовок.
Мой совет - подкласс GraphicalEditorWithFlyoutPalette, переопределить метод #createPartControl(...) для организации графического просмотра диаграмм, просмотра палитр и просмотра заголовков. TitleViewer может быть подклассом DiagramGraphicalViewer, который просто отображает одну часть редактирования — диаграмму, фигура для которой является меткой. В качестве альтернативы вы можете просто использовать SWT Label вместо TitleViewer (который вам нужно будет создать самостоятельно). В этом случае вам нужно будет предоставить логику прослушивания модели, чтобы обновить текст метки для изменений модели, если это применимо.