我目前正在使用此方法以编程方式创建节点。节点和属性显示得很好,您可以对其进行编辑。(请注意,还有一种方法可以使用另一种类型的命令 (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 传递到那里。