/** * Inform that the command has been undone and delete or update the created notification * * @see * org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand#didUndo(org.eclipse.emf.transaction.Transaction) * @param tx a transaction that has been undone. */ @Override protected void didUndo(Transaction tx) { for (ChooseChildrenNotificationConfigurator notifConfigurator : createdNotificationConfigurator) { notifConfigurator.closeNotification(); } super.didUndo(tx); }
@Override protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { if (!getEditPartFromEditPartAdapter()) { if (!allChildren.isEmpty()) { getEditPartFromViewAdapter(allChildren.get(0)); } } if (mainEditPart != null) { createdNotificationConfigurator = new ArrayList<ChooseChildrenNotificationConfigurator>(); NotificationConfigurator configurator = PendingGroupNotificationsManager.getInstanceForDiagram(diagramPart) .getChooseChildrenPendingNotification(mainEditPart); ChooseChildrenNotificationConfigurator notificationConfigurator = null; if (configurator == null) { // If there is no a pending notification for this main edit part then it create one if (!allChildren.isEmpty() && isChildrenToChoose()) { notificationConfigurator = new ChooseChildrenNotificationConfigurator( mainEditPart, allChildren, automaticChildren, host, manager); notificationConfigurator.runConfigurator(); } } else { // Else update the old one if needed TODO TODO // 1 - Compare if there is any modification TODO if (configurator instanceof ChooseChildrenNotificationConfigurator) { notificationConfigurator = (ChooseChildrenNotificationConfigurator) configurator; if (notificationConfigurator.isThereAnyModification( mainEditPart, allChildren, automaticChildren, host)) { // 2 - There are some update the old notification TODO notificationConfigurator.closeNotification(); if (!allChildren.isEmpty() && isChildrenToChoose()) { notificationConfigurator = new ChooseChildrenNotificationConfigurator( mainEditPart, allChildren, automaticChildren, host, manager); notificationConfigurator.runConfigurator(); } } } } if (notificationConfigurator != null) { createdNotificationConfigurator.add(notificationConfigurator); } return CommandResult.newOKCommandResult(); } return CommandResult.newErrorCommandResult( "The editPart of the adaptable element has not been found"); //$NON-NLS-1$ }