我创建了一个包含 GEF 编辑器的小型 GEF 项目。现在我想将除 GEF 调色板之外的所有功能都转换为 View。有可能吗?因为当我尝试执行编辑策略时,一切都不起作用。我可以使用 GEF Rectangle 部件和模型绘制一个矩形。它工作正常。但现在我想将调整大小、删除、撤消功能添加到我的视图中。在 GEF 编辑器中,这些功能运行良好。这些功能是否仅适用于编辑器?有人可以建议怎么做吗?
3 回答
您想要的在当前的 GEF 实施中是不可能的。所有图形编辑器都是 Eclipse 编辑器,所以我看不到如何将它们放在视图中。您可以实现此功能,但需要大量接线...
您可以将一些 GEF 功能添加到您的视图中。为此,您的视图必须以下列方式实现。
// Use a standard Viewer for the Draw2d canvas
private ScrollingGraphicalViewer viewer = new ScrollingGraphicalViewer();
// Use standard RootEditPart as holder for all other edit parts
// private RootEditPart rootEditPart = new ScalableFreeformRootEditPart();
private ScalableRootEditPart rootEditPart = new ScalableRootEditPart();
// parts for model elements
private EditPartFactory editPartFactory = new MyEditPartFactory();
例如,您可以将 GEF 编辑策略添加到您的视图中。
public void createPartControl(Composite parent) {
// Initialize the viewer, 'parent' is the
// enclosing RCP windowframe
viewer.createControl(parent);
viewer.setRootEditPart(rootEditPart);
viewer.setEditPartFactory(editPartFactory);
viewer.setContents(ModelFactory.createRegionLayerModel());
viewer.setEditDomain(new DefaultEditDomain(new GraphicalEditor() {
@Override
public void doSave(IProgressMonitor monitor) {
// TODO Auto-generated method stub
}
@Override
protected void initializeGraphicalViewer() {
GraphicalViewer viewer = getGraphicalViewer();
}
@Override
protected void configureGraphicalViewer() {
super.configureGraphicalViewer();
super.configureGraphicalViewer();
GraphicalViewer viewer = getGraphicalViewer();
}
}));
}
希望这对你有帮助!!!
如果我理解正确,您基本上只是想摆脱调色板,同时保留完整的编辑功能?
这可以很容易地实现。让你的编辑器类扩展org.eclipse.gef.ui.parts.GraphicalEditor
(API)而不是org.eclipse.gef.ui.parts.GraphicalEditorWithPalette
or org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette
,你就摆脱了调色板:
本课程可作为 GEF 新客户的快速入门。它将创建一个包含单个 GraphicalViewer 作为其控件的编辑器。
但是,请注意 Javadoc 注释说
重要信息 此类仅应用作创建您自己的 EditorPart 实现的参考。这个类不会满足每个人的需要,并且将来可能会改变。客户可以复制实现。
理想情况下,您应该设置自己的实现org.eclipse.ui.part.EditorPart
,但我认为作为起点GraphicalEditor
可能会这样做:)。