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