我需要为使用GMF创建的编辑器定制生成的代码。例如,我需要在编辑器中选择一个节点时添加一个弹出框,我需要添加文本作为编辑器的画布。我知道这些编辑需要手工完成。有没有人能告诉我上述的事情该怎么做?或者可能为我指出扩展GMF编辑器和自定义它们的资源?
有几个选项可以在选择或悬停时提供弹出窗口。不知道你说的空白文字是什么意思…也许你可以澄清一下。启用弹出栏的最简单方法是在您希望显示弹出栏的编辑部件上安装一个org.eclipse.gmf.runtime. figure .ui.editpolicies. popupbareditpolicy。当您的鼠标光标进入一个图形,并且鼠标在图形内停留一秒钟或类似的时间时,此编辑策略将显示一个弹出栏。我想当一个形状被选中时它会显示出来。请使用GMF运行时逻辑示例图编辑器来了解我所说的内容。您可以根据自己的喜好定制此编辑策略,然后通过#createDefaultEditPolicies()方法安装到适用的编辑部件上。示例如下:
installEditPolicy (EditPolicyRoles。POPUPBAR_ROLE, new PopupBarEditPolicy());
请参阅org.eclipse.gmf.runtime.emf.ui.modelingAssistantProviders,为弹出栏提供操作。(示例为org.eclipse.gmf.examples.runtime.diagram.logic/plugin.xml)
如果这太复杂,然后尝试子类化ShapeResizableEditPolicy和覆盖showSelection()和hidesselection()方法来添加你的弹出框严格选择。复杂的是,根据EditPolicy下安装的内容,您可能需要重写SelectionEditPolicy的其他子类。PRIMARY_DRAG_ROLE,还要注意添加弹出图的图形层。
此外,你可以添加一个SelectionListener到GraphicalViewer,然后尝试添加/删除一个基于所选内容的弹出图,但我不推荐这种解决方案。
我很惊讶GMF生成编辑器的默认弹出栏没有显示。也许它只是被禁用了。在org.eclipse.gmf.runtime.diagram.ui.editpolicies.DiagramAssistantEditPolicy#shouldShowDiagramAssistant()中添加一个断点。首先检查你是否停在那里,如果你检查为什么返回false,检查#isPreferenceOn()是否返回false。如果首选项设置是关闭的,那么修复弹出栏只是一个设置首选项的问题。
我建议开始阅读GEF。GEF是Eclipse的图形编辑框架。GMF是基于GEF的。GEF架构是模型-视图-控制器。Java中的视图映射实现了iffigure。控制器实现EditPart接口模型在GEF中保持打开状态。GMF需要EMF模型(EMF是Eclipse建模框架),并在运行时工具组件的基础上添加生成代码。
我建议您开始阅读有关GEF的文章,其中一些文章将是关于使用EMF模型的GEF编辑器(实际上是GMF)。文章链接:https://www.eclipse.org/gef/reference/articles.html
对于您想要的人员,您需要从GEF的MVC架构中修改控制器。查找以EditPart结尾的类。editpolicy是负责对图上的形状进行编辑的构件。editpolicy安装在editpart上。