2011-08-28 71 views
4

我正在开发一个编辑器来设计基于eclipse GMF的用户界面。在Eclipse中以编程方式创建节点GMF

到目前为止,我已经开发了一个调色板编辑器。用户可以从托盘拖放UI元素并在画布上设计UI。我需要实现设施来将这些UI元素分组。 EX:用户首先通过拖放元素到画布来设计UI,然后选择一组UI按钮(比如标签和文本框)并按下“group”按钮。它会自动将元素放在一个虚线矩形内。

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

但我不知道从哪里开始。

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

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

随着我们的项目截止日期临近,我们将非常感谢任何帮助。

回答

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

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

使用这种机制的现有的命令类:DeferredCreateConnectionViewAndElementCommandDeferredSetValueCommand

要使用这个类,你必须找到你的请求创建过程中正确的地方,通过创建视图(S) CreateViewRequest。该请求具有需要的信息(request.getNewObject()),只要从调色板中删除对象时某个地方就会获取View。

查看此示例了解更多信息:http://wiki.eclipse.org/GMF_Tutorial_Part_3