扩展GMF编辑器以进行定制

时间:2014-06-26 18:08:48

标签: java eclipse user-interface emf eclipse-gmf

我需要为使用GMF创建的编辑器自定义生成的代码。例如,我需要在编辑器中选择节点时添加弹出框,我还需要添加文本作为编辑器画布的空白。我知道这些编辑需要手工完成。有人可以告诉我怎么做上面提到的事情?或者可能指向我扩展GMF编辑器并定制它们的资源?

2 个答案:

答案 0 :(得分:1)

在选择或悬停时提供弹出窗口有几个选项。不确定你在空白处的文字是什么意思......也许你可以澄清一下。 启用弹出栏的最简单方法是在youe editparts上安装org.eclipse.gmf.runtime.diagram.ui.editpolicies.PopupbarEditPolicy,您可以在其中显示弹出栏。当您的鼠标光标进入图形时,此编辑策略会显示一个弹出栏,并且鼠标在图形中保持空闲一秒钟或类似的东西。认为它会在选择形状时显示。请使用GMF运行时逻辑示例图编辑器来了解我正在谈论的内容。您可以根据自己的喜好定制此编辑策略,然后通过#createDefaultEditPolicies()方法在适用的editpart上安装。以下是示例:

installEditPolicy(EditPolicyRoles.POPUPBAR_ROLE,new PopupBarEditPolicy());

请参阅org.eclipse.gmf.runtime.emf.ui.modelingAssistantProviders以向弹出栏提供操作。 (例如org.eclipse.gmf.examples.runtime.diagram.logic / plugin.xml)

如果这太复杂了,那么尝试继承ShapeResizableEditPolicy并覆盖showSelection()和hideSelection()方法,严格添加弹出窗口以供选择。复杂的是,它可能需要覆盖SelectionEditPolicy的其他一些子类,具体取决于EditPolicy.PRIMARY_DRAG_ROLE下安装的内容,并且还要注意添加弹出图的图层。

此外,您可以将SelectionListener添加到GraphicalViewer,然后尝试根据所选内容添加/删除弹出图,但我不建议使用此解决方案。

希望这有帮助。

答案 1 :(得分:0)

我很惊讶默认情况下弹出栏没有为您显示GMF生成的编辑器。也许它只是被禁用了。在org.eclipse.gmf.runtime.diagram.ui.editpolicies.DiagramAssistantEditPolicy#shouldShowDiagramAssistant()中放置一个断点。首先检查你是否曾经停在那里,如果确实检查了为什么返回false,请检查#isPreferenceOn()是否特别返回false。如果首选项设置已关闭,则修复弹出栏只需设置首选项。

我建议开始阅读GEF。 GEF是Eclipse的图形编辑框架。 GMF以GEF为基础。 GEF架构是模型 - 视图 - 控制器。 Java中的视图映射实现了IFigure。 Controller实现了EditPart接口 模型在GEF中保持开放。 GMF期望EMF模型(EMF是Eclipse Modeling Framework)并在运行时工具组件之上添加以生成代码。

我建议你开始阅读有关GEF的文章,其中一些文章将是关于EMF模型的GEF编辑(实际上是GMF)。链接到文章:https://www.eclipse.org/gef/reference/articles.html

对于您想要的员工,您需要从GEF的MVC架构中修改控制器。查找以EditPart结尾的类。 EditPolicies是负责编辑图表上形状的功能的工件。 EditPolicies安装在editparts上。

希望这有帮助。