GMF - 以编程方式展开/折叠

时间:2014-10-23 09:42:10

标签: java eclipse-plugin modeling eclipse-gmf

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

我所做的基本上是,当您右键单击隔离专区或隔离专区名称以通过双击侦听器来侦听此事件时,该侦听器应用于隔离专用扫描部件和隔离专用器部件。

现在,我想基于双击实现扩展或折叠此隔间的功能,但我还没有找到任何方法来执行此操作。如何通过此隔间的EditPart进行处理?

也可以在打开时关闭所有其他隔离专区,如果是这样,则必须使用AddSemanticListeners-listenerFilters完成?

任何线索都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

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

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

是的,你也可以打开/关闭其他隔间购买创建相同的请求并为兄弟隔间编辑部分创建额外的命令(完全如上所示)。唯一的复杂因素是你必须在editparts树中找到那些兄弟隔间editoarts。 此外,一旦你有许多这些命令将它们包装在GEF的CompoundCommand或GMF的CompositeCommand中,这样许多命令就作为一个命令执行,undo / redo动作会正确处理这种情况。 (看看org.eclipse.gmf.runtime.diagram.ui.internal.tools.CompartmentCollapseTracker)