Java 通过添加标题EclipseGMF定制编辑器工作台

Java 通过添加标题EclipseGMF定制编辑器工作台,java,eclipse,user-interface,eclipse-gmf,Java,Eclipse,User Interface,Eclipse Gmf,我想在编辑器的画布顶部添加一个标题,这是我在Eclipse中使用GMF生成的。有人能告诉我需要对生成的代码进行哪些更改才能实现这一点吗?谢谢使用SWT控件而不是GEF/GMF构造添加标题 在GEF的包org.eclipse.GEF.ui.parts中 看看课程: GraphicalEditor(没有调色板,只有图表查看器) GraphicalEditorWithPalette(借助SWT拆分器的图表查看器+调色板) GraphicalEditorWithFlyOutpalete(同上,具有隐藏调

我想在编辑器的画布顶部添加一个标题,这是我在Eclipse中使用GMF生成的。有人能告诉我需要对生成的代码进行哪些更改才能实现这一点吗?谢谢

使用SWT控件而不是GEF/GMF构造添加标题

在GEF的包org.eclipse.GEF.ui.parts中 看看课程: GraphicalEditor(没有调色板,只有图表查看器) GraphicalEditorWithPalette(借助SWT拆分器的图表查看器+调色板) GraphicalEditorWithFlyOutpalete(同上,具有隐藏调色板的功能)

注意调色板是如何添加到编辑器的。需要这样做才能显示标题


我的建议是使用flyoutpalete子类graphicaleditor,重写#createPartControl(…)方法来排列图表图形查看器、调色板查看器和标题查看器。TitleViewer可以是DiagramGraphicalViewer的一个子类,它只显示一个editpart—图表,图形是它的标签。或者,您可以只使用SWT标签而不是TitleViewer(您需要自己创建)。在这种情况下,您必须提供模型侦听逻辑,以更新标签文本以进行模型更改(如果适用)

下面是供您使用的代码片段,它在Graphical Viewer for GEF的逻辑示例编辑器的顶部添加了一个SWT标签。Yopu可以轻松地对GMF编辑器执行同样的操作,因为GMF的DiagrameEditor是基于GEF的LogicEditor创建的

我在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中这些方法以前的实现,并用LogicEditor的rulerComp#configureGraphicalViewer()方法替换了对getGraphicalControl()的调用(最后添加了2个SWT侦听器)

结果显示在下面的屏幕截图上


GMF、GEF、JFace和EclipseUI通常都依赖于SWT。它们都通过MVC设计模式与SWT混合,其中SWT控制是一个视图。Draw2D也是一个视图,但Draw2D是SWT顶部的一个外观,用于在画布控件上绘制人物。PaletteViewer是一个控制器,其视图为draw2d FigureCanvas(SWT Canvas的子类),GraphicalViewer是一个控制器,其视图为FigureCanvas。调色板;s和图形查看器画布是编辑器控件(SWT复合)的子控件#createPartControl(…)负责放置调色板和图形查看器控件。如果有机会,我将尝试向您提供一段代码片段。请参见GraphicalEditor WithPalette#createPartControl(复合)的实现。这是一种将不同编辑器部分(如调色板和图形(diagrm)查看器)的SWT控件放在编辑器的widget-SWT组合上的方法。