Community
Participate
Working Groups
The arrange command is not performed following external modifications and opened editor. Steps to reproduce: * Import the attached project * Open digramWithoutELK * Open My.ecore model * add three classes C1, C2 and C3 in p3 package and save. * The diagram is refreshed but the three classes are not properly layouted. It seems that the ArrangeCommand is executed before the new edit part activation. The LayoutCommand is launched asynchronously on the UI Thread: SiriusCanonicalLayoutCommand.doExecute() line: 85 SiriusCanonicalLayoutCommand(RecordingCommand).execute() line: 135 CompoundCommand.execute() line: 261 EMFCommandOperation.doExecute(IProgressMonitor, IAdaptable) line: 119 EMFCommandOperation(AbstractEMFOperation).execute(IProgressMonitor, IAdaptable) line: 150 DefaultOperationHistory.execute(IUndoableOperation, IProgressMonitor, IAdaptable) line: 495 NonDirtyingCapableWorkspaceCommandStack(WorkspaceCommandStackImpl).doExecute(Command, Map<?,?>) line: 208 NonDirtyingCapableWorkspaceCommandStack.doExecute(Command, Map) line: 69 NonDirtyingCapableWorkspaceCommandStack(AbstractTransactionalCommandStack).execute(Command, Map<?,?>) line: 165 NonDirtyingCapableWorkspaceCommandStack(AbstractTransactionalCommandStack).execute(Command) line: 219 SiriusCanonicalLayoutHandler.launchArrangeCommand(DiagramEditPart, boolean) line: 107 SiriusCanonicalLayoutHandler.launchArrangeCommand(DiagramEditPart) line: 77 DOperationHistoryListener.historyNotification(OperationHistoryEvent) line: 45 DefaultOperationHistory$2.run() line: 875 SafeRunner.run(ISafeRunnable) line: 45 DefaultOperationHistory.notifyListeners(OperationHistoryEvent) line: 864 DefaultOperationHistory.notifyDone(IUndoableOperation) line: 930 DefaultOperationHistory.execute(IUndoableOperation, IProgressMonitor, IAdaptable) line: 511 NonDirtyingCapableWorkspaceCommandStack(WorkspaceCommandStackImpl).doExecute(Command, Map<?,?>) line: 208 NonDirtyingCapableWorkspaceCommandStack.doExecute(Command, Map) line: 69 NonDirtyingCapableWorkspaceCommandStack(AbstractTransactionalCommandStack).execute(Command, Map<?,?>) line: 165 NonDirtyingCapableWorkspaceCommandStack(AbstractTransactionalCommandStack).execute(Command) line: 219 RefreshEditorsPrecommitListener.notify(int) line: 260 CollaborativeDAnalysisSessionImpl(DAnalysisSessionImpl).notifyListeners(int) line: 1229 SessionResourcesSynchronizer.reloadResource(Resource) line: 237 But when the command is really executed, the three new edit parts are not yet activated and the layout is not performed: ArrangeCommand.initLayoutNodes(Collection<IGraphicalEditPart>) line: 111 ArrangeCommand.<init>(TransactionalEditingDomain, String, List, Collection<IGraphicalEditPart>, IAdaptable, boolean) line: 87 NodeCreationEditPolicy(SiriusContainerEditPolicy).doDuplicatedGetArrangeCommand(ArrangeRequest) line: 145 NodeCreationEditPolicy(SiriusContainerEditPolicy).getArrangeCommand(ArrangeRequest) line: 87 NodeCreationEditPolicy(ContainerEditPolicy).getCommand(Request) line: 477 NodeCreationEditPolicy(SiriusContainerEditPolicy).getCommand(Request) line: 75 DNodeContainerViewNodeContainerCompartmentEditPart(AbstractEditPart).getCommand(Request) line: 502 GraphicalEditPart.access$1(GraphicalEditPart, Request) line: 1 GraphicalEditPart$1.run() line: 482 CDOEditingDomainFactory$CDOEditingDomain(TransactionalEditingDomainImpl).runExclusive(Runnable) line: 328 DNodeContainerViewNodeContainerCompartmentEditPart(GraphicalEditPart).getCommand(Request) line: 477 DNodeContainerViewNodeContainerCompartmentEditPart(AbstractDNodeContainerCompartmentEditPart).getCommand(Request) line: 158 DeferredLayoutCommand.doExecuteWithResult(IProgressMonitor, IAdaptable) line: 196 DeferredLayoutCommand(AbstractTransactionalCommand).doExecute(IProgressMonitor, IAdaptable) line: 247 DeferredLayoutCommand(AbstractEMFOperation).execute(IProgressMonitor, IAdaptable) line: 150 Line 111. ep.isActive() return false: if (ep.isActive() && view != null && view instanceof Node && ep != layoutHint.getAdapter(EditPart.class))
Created attachment 281170 [details] Use case
Note that this issue is not specific to ELK but has been detected during the ELK layout experimental phase.
Reproduced using the steps mentioned.