Настройка рабочей среды Editor путем добавления Title Eclipse GMF

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


person Asher    schedule 01.07.2014    source источник


Ответы (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)

Результат на скриншоте ниже.

введите здесь описание изображения

person aboyko    schedule 05.07.2014

Добавьте заголовок, используя элементы управления SWT, а не конструкции GEF/GMF.

Внутри пакета GEF org.eclipse.gef.ui.parts Посмотрите на классы: GraphicalEditor (без палитры, только средство просмотра диаграмм) GraphicalEditorWithPalette (средство просмотра диаграмм + палитра с помощью SWT Splitter) GraphicalEditorWithFlyoutPalette (то же самое, что и выше, с возможностью скрыть палитру)

Обратите внимание, как палитра добавляется в редактор. Что-то подобное нужно сделать, чтобы показать заголовок.

Мой совет - подкласс GraphicalEditorWithFlyoutPalette, переопределить метод #createPartControl(...) для организации графического просмотра диаграмм, просмотра палитр и просмотра заголовков. TitleViewer может быть подклассом DiagramGraphicalViewer, который просто отображает одну часть редактирования — диаграмму, фигура для которой является меткой. В качестве альтернативы вы можете просто использовать SWT Label вместо TitleViewer (который вам нужно будет создать самостоятельно). В этом случае вам нужно будет предоставить логику прослушивания модели, чтобы обновить текст метки для изменений модели, если это применимо.

person aboyko    schedule 02.07.2014
comment
GMF, GEF, JFace и Eclipse UI в целом зависят от SWT. Все они смешаны с SWT через шаблон проектирования MVC, где управление SWT является представлением. Draw2D — это тоже представление, но Draw2D — это фасад поверх SWT для рисования фигур на элементе управления холстом. PaletteViewer — это контроллер с представлением draw2d FigureCanvas (подкласс SWT Canvas), GraphicalViewer — это контроллер с представлением FigureCanvas. Холсты Palette и Graphical Viewers являются дочерними элементами управления Editor, которым является SWT Composite. #createPartControl(...) отвечает за размещение элементов управления палитрой и графическим средством просмотра. - person aboyko; 04.07.2014
comment
Я постараюсь предоставить вам фрагмент кода, когда у меня будет возможность. См. реализацию GraphicalEditorWithPalette#createPartControl(Composite). Это метод, при котором элементы управления SWT для различных частей редактора, таких как палитра и средства просмотра графики (диаграммы), объединяются в виджете редактора — SWT Composite. - person aboyko; 04.07.2014