使用gf以编程方式创建节点,但不设置其属性

时间:2015-03-02 00:15:22

标签: eclipse-emf-ecore eclipse-gmf

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

					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.

也许有人会帮助我。谢谢

1 个答案:

答案 0 :(得分: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传递给它。