我想以编程方式创建节点及其属性,但是可以使用以下代码创建节点,但无法设置其属性。
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.
也许有人会帮助我。谢谢
答案 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传递给它。