Hi,
I have a question on the call Arrange Selection.
I have an Arrange All code that works correctly:
// Arrange All - OK
IEditorPart editor = EclipseUIUtil.getActiveEditor();
List<Object> partsToArrange = new ArrayList<>(1);
if (editor instanceof DiagramEditor) {
DiagramEditor diagramEditor = (DiagramEditor) editor;
DiagramEditPart diagramEditPart = diagramEditor.getDiagramEditPart();
ArrangeRequest arrangeRequest = new ArrangeRequest(ActionIds.ACTION_ARRANGE_ALL);
partsToArrange.add(diagramEditPart);
arrangeRequest.setPartsToArrange(partsToArrange);
diagramEditPart.performRequest(arrangeRequest);
}
And now I would need to call the Arrange Selection programmatically. I have this code:
// I want Arrange Selection but call Arrange All - BAD
IEditorPart editor = EclipseUIUtil.getActiveEditor();
List<Object> partsToArrange = new ArrayList<>();
if (editor instanceof DiagramEditor) {
DiagramEditor diagramEditor = (DiagramEditor) editor;
DiagramEditPart diagramEditPart = diagramEditor.getDiagramEditPart();
List<?> children = diagramEditPart.getChildren();
for (Object child : children) {
if (child instanceof DNodeEditPart) {
DNodeEditPart editPart = (DNodeEditPart) child;
Object model = editPart.getModel();
if (model instanceof Node) {
Node node = (Node) model;
if (node.getElement().equals(dNodeSource) || node.getElement().equals(dNodeTarget)) {
partsToArrange.add(editPart);
}
}
}
}
ArrangeRequest arrangeRequest = new ArrangeRequest(ActionIds.ACTION_ARRANGE_SELECTION);
partsToArrange.add(diagramEditPart);
arrangeRequest.setPartsToArrange(partsToArrange);
//diagramEditPart.performRequest(arrangeRequest);
Command command = partsToArrange.get(0).getCommand(arrangeRequest);
if (command != null) {
command.execute();
}
}
but it's still called Arrange All instead of Arrange Selection.
Do not you know where I'm making a mistake?
Thanks.
Martin