4

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

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

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

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

但我不知道从哪里开始。

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

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

4

2 回答 2

1

通过使用例如延迟命令,也可以在从调色板中拖动某些东西时添加其他元素。这些命令是在创建调色板元素请求时创建的,但最终位置和视图尚不知道(仅在放置时)。对应的视图稍后解析。

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

要使用此类,您必须在请求创建过程中找到通过 CreateViewRequest 创建视图的正确位置。此请求具有所需的信息(request.getNewObject()),一旦将调色板中的对象拖放到某处,该信息就会获得一个视图。

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

于 2013-04-29T09:14:15.577 回答
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
于 2013-01-11T17:15:48.400 回答