在Eclipse GMF中以编程方式创建节点

时间:2011-08-28 04:17:28

标签: eclipse eclipse-plugin eclipse-gmf

我正在开发一个编辑器来设计基于eclipse GMF的用户界面。

到目前为止,我已经开发了一个带调色板的编辑器。用户可以从托盘拖放UI元素并在画布上设计UI。我需要实现该工具来对这些UI元素进行分组。

EX:用户首先通过将元素拖放到画布来设计UI。然后他选择一组UI元素(比如标签和文本框)并按“组”按钮。它会自动将元素放在虚线矩形内。

我打算开发一个插件,可以获取有关所选ui元素的信息,删除它们,在画布中创建一个组元素(虚线矩形)并将删除的元素插入其中。

但我不知道从哪里开始。

所以,我想知道如何在GMF中以编程方式创建/删除节点。

如果您知道相关代码,请分享,并请指出一些有用的资源。

2 个答案:

答案 0 :(得分:1)

从调色板中拖动某些内容时,会在gmf中创建以下命令。您必须指定元素类型并向编辑部分询问元素的相应命令。

CreateUnspecifiedTypeRequest request = new
    CreateUnspecifiedTypeRequest(
        Collections.singletonList(EcoreElementTypes.EClass_1001),
        diagramEditPart.getDiagramPreferencesHint());

Command command = diagramEditPart.getCommand(request);
command.execute();

Object newObject = request.getNewObject(); // these are the newly created objects

答案 1 :(得分:1)

通过使用例如从调色板拖动某物时添加附加元素也是可能的。延迟命令。这些命令是在创建调色板元素请求时创建的,但是最终位置和视图尚未知道(仅在丢弃时)。相应的视图稍后会解决。

使用此机制的现有命令类是: DeferredCreateConnectionViewAndElementCommand DeferredSetValueCommand

要使用此类,您必须在请求创建过程中找到正确的位置,其中View(s)是通过CreateViewRequest创建的。此请求包含所需的信息( request.getNewObject()),只要调色板中的对象被丢弃,就会获得一个View。

有关详细信息,请参阅此示例:http://wiki.eclipse.org/GMF_Tutorial_Part_3