【问题标题】:Create nodes programmatically in Eclipse GMF在 Eclipse GMF 中以编程方式创建节点
【发布时间】:2011-08-28 04:17:27
【问题描述】:

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

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

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

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

但我不知道从哪里开始。

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

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

【问题讨论】:

    标签: eclipse eclipse-plugin eclipse-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
    

    【讨论】:

      【解决方案2】:

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

      使用这种机制的现有命令类是:DeferredCreateConnectionViewAndElementCommand 或 DeferredSetValueCommand

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

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

      【讨论】:

        猜你喜欢
        • 2013-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-02
        • 1970-01-01
        相关资源
        最近更新 更多