0

我想使用其属性以编程方式创建节点,但可以使用以下代码创建节点,但无法设置其属性。

					CreateUnspecifiedTypeRequest request_ch = new
					        CreateUnspecifiedTypeRequest(
					            Collections.singletonList(xxxElementTypes.yy),
					            diagramEditPart.getDiagramPreferencesHint());
					Command command = diagramEditPart.getCommand(request);
					command.execute();
  

    then element.set("idof element")    but the properties of the node still empty.

有人可以帮助我。谢谢

4

1 回答 1

0

我目前正在使用此方法以编程方式创建节点。节点和属性显示得很好,您可以对其进行编辑。(请注意,还有一种方法可以使用另一种类型的命令 (EMF) 以编程方式编辑属性)

public void createAndExecuteShapeRequestCommand(IElementType type, EditPart parent) {
    CreateViewRequest actionRequest = CreateViewRequestFactory
            .getCreateShapeRequest(
                    type,
                    PreferencesHint.USE_DEFAULTS);
    org.eclipse.gef.commands.Command command = parent.getCommand(actionRequest);
    command.execute();
}

如果节点要添加到图表的主要区域,则该方法的示例调用者。

createAndExecuteShapeRequestCommand(xxx.diagram.providers.xxxElementTypes.ELEMENT_HERE, diagramEditPart);   

如果节点要添加到另一个节点或隔间内,则该方法的示例调用者。

DiagramEditPart diagramEditPart = getDiagramEditPart(); //diagram.getDiagramEditPart();

"ParentElement" parentElement = (("Root_ELEMENT") diagramEditPart.resolveSemanticElement())."getTheElement"();
List list = getDiagramGraphicalViewer().findEditPartsForElement(EMFCoreUtil.
                    getProxyID(parentElement),
                    TheElementsEDITPART.class);

createAndExecuteShapeRequestCommand(xxx.diagram.providers.xxxElementTypes.ELEMENT_HERE, (EditPart)list.get(0)); 

请注意,如果您希望从 xxxDiagramEditor.java 之外的其他类调用此方法,您将需要以某种方式将 diagramEditPart 传递到那里。

于 2015-04-17T11:00:51.140 回答