我想在编辑器的画布顶部添加一个标题,我在Eclipse中使用GMF生成。有人可以指导一下我需要对生成的代码做出哪些更改才能实现这一目标?感谢
答案 0 :(得分:0)
使用SWT控件而不是GEF / GMF构造添加标题。
在GEF的包org.eclipse.gef.ui.parts中 看课: GraphicalEditor(没有调色板,只是图表查看器) GraphicalEditorWithPalette(借助SWT Splitter绘制图表查看器+调色板) GraphicalEditorWithFlyoutPalette(与上面相同,能够隐藏调色板)
请注意如何将调色板添加到编辑器中。需要做类似的事情才能显示标题。
我的建议是子类GraphicalEditorWithFlyoutPalette,覆盖#createPartControl(...)方法来排列图形图形查看器,调色板查看器和标题查看器。 TitleViewer可以是DiagramGraphicalViewer的子类,它只显示一个editpart - 图表,其中的图形是一个标签。或者,您可以使用SWT Label而不是TitleViewer(您需要自己创建)。在这种情况下,您必须提供模型监听逻辑,以便更新标签的文本以进行模型更改(如果适用)。
答案 1 :(得分:0)
以下是为您添加SWT标签的代码片段,该标签位于GEF逻辑示例编辑器的图形查看器顶部。 Yopu可以轻松地为GMF编辑器做同样的事情,因为GMF的DiagramEditor是基于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中删除了这些方法的先前实现,并用rulerComp替换了对getGraphicalControl()的调用,用于LogicEditor#configureGraphicalViewer()方法(最后添加了2个SWT监听器)
结果在下面的屏幕截图中。