Создавать узлы программно с помощью 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 ответ

В настоящее время я использую этот метод для того, чтобы создавать узлы программно. Узел и свойства отображаются очень хорошо, и вы можете редактировать их. (обратите внимание, что есть также способ редактировать свойства программно, с помощью другого типа команды (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, вам нужно каким-то образом передать туда figureEditPart.

Другие вопросы по тегам