java - GMF - 以编程方式扩展/折叠隔间

标签 java eclipse-plugin modeling eclipse-gmf

我有一个名为 EntitiesContainer 的类,它包含多个隔间。

我所做的基本上是,当您右键单击隔间或隔间名称时,通过应用于隔间XEditpart和隔间XNameEditpart的双击监听器来监听此事件。

现在,我想实现一些类似基于双击来展开或折叠此隔间的功能,但我还没有找到任何方法来做到这一点。我怎样才能通过这个隔间的EditPart来访问它?

另外,当一个隔间打开时,是否可以关闭所有其他隔间,如果是这样,则必须使用 AddSemanticListeners-listenerFilters 来完成?

任何线索将不胜感激。

最佳答案

要展开/折叠隔间,您需要创建 ChangePropertyValueRequest,从隔间 editpart 获取该请求的命令,然后在命令堆栈上执行该命令(expand 是 boolean 值):

    ChangePropertyValueRequest request = new ChangePropertyValueRequest(
    DiagramUIMessages.PropertyDescriptorFactory_CollapseCompartment,
    Properties.ID_COLLAPSED, expand);
        getDomain().getCommandStack().execute(command);

是的,您还可以打开/关闭其他隔间,购买创建相同的请求并为同级隔间编辑部分创建额外的命令(如上所示)。唯一的复杂之处是您必须在 editparts 树中找到那些同级隔间 editoarts。 此外,一旦您拥有许多这样的命令,请将它们包装在 GEF 的CompoundCommand 或GMF 的CompositeCommand 中,以便将许多命令作为一个命令执行,并且撤消/重做操作将正确处理这种情况。 (看看 org.eclipse.gmf.runtime.diagram.ui.internal.tools.CompartmentCollapseTracker)

关于java - GMF - 以编程方式扩展/折叠隔间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26525321/

相关文章:

java - 我应该怎么称呼这个小部件?

eclipse-plugin - eclipse离线安装sonarlint插件

Java对象地址提取和验证

java - 客户端Google Earth + JS;服务器端Java包

java - 安装tomcat并设置环境变量

visual-studio - 通用类型的 Visual Studio UML 类图和建模

authorization - 不同类型的用户扩展用例

php - 简单的 PHP Person 类建模

java - 如何在 XQuery 中使用或实现数组?

java - 当我从 TreeMap 打印值时,为什么会得到一个空值列表?