@Override public < A extends FlexoUndoableAction<A, T1, T2>, T1 extends FlexoModelObject, T2 extends FlexoModelObject> A performRedoAction(A action, EventObject event) { boolean confirmRedoAction = true; ActionInitializer<A, T1, T2> actionInitializer = getActionInitializer(action.getActionType()); FlexoActionRedoInitializer<A> initializer = null; if (actionInitializer != null) { initializer = actionInitializer.getDefaultRedoInitializer(); if (initializer != null) { confirmRedoAction = initializer.run(event, action); } } if (confirmRedoAction) { actionWillBeRedone(action); try { if (getProject() != null) { getProject().clearRecentlyCreatedObjects(); } action.redoActionInContext(); if (getProject() != null) { getProject().notifyRecentlyCreatedObjects(); } actionHasBeenRedone(action, true); // Action succeeded } catch (FlexoException exception) { actionHasBeenUndone(action, false); // Action failed ProgressWindow.hideProgressWindow(); FlexoExceptionHandler<A> exceptionHandler = null; if (actionInitializer != null) { exceptionHandler = actionInitializer.getDefaultExceptionHandler(); } if (exceptionHandler != null) { if (exceptionHandler.handleException(exception, action)) { // The exception has been handled, we may still have to execute finalizer, if any } else { return action; } } else { return action; } } FlexoActionRedoFinalizer<A> finalizer = null; if (actionInitializer != null) { finalizer = actionInitializer.getDefaultRedoFinalizer(); if (finalizer != null) { confirmRedoAction = finalizer.run(event, action); } } } ProgressWindow.hideProgressWindow(); return action; }
private < A extends org.openflexo.foundation.action.FlexoAction<A, T1, T2>, T1 extends FlexoModelObject, T2 extends FlexoModelObject> void runFinalizer(final A action, EventObject event) { ActionInitializer<A, T1, T2> actionInitializer = getActionInitializer(action.getActionType()); if (actionInitializer != null) { FlexoActionFinalizer<A> finalizer = actionInitializer.getDefaultFinalizer(); if (finalizer != null) { finalizer.run(event, action); } } }
private < A extends FlexoAction<A, T1, T2>, T1 extends FlexoModelObject, T2 extends FlexoModelObject> boolean runInitializer(A action, EventObject event) { ActionInitializer<A, T1, T2> actionInitializer = getActionInitializer(action.getActionType()); if (actionInitializer != null) { FlexoActionInitializer<A> initializer = actionInitializer.getDefaultInitializer(); if (initializer != null) { return initializer.run(event, action); } } return true; }
@Override public < A extends org.openflexo.foundation.action.FlexoAction<A, T1, T2>, T1 extends FlexoModelObject, T2 extends FlexoModelObject> A performAction(final A action, final EventObject e) { if (!action.getActionType().isEnabled(action.getFocusedObject(), action.getGlobalSelection())) { return null; } if (!(action instanceof FlexoGUIAction<?, ?, ?>) && action.getFocusedObject() != null && action.getFocusedObject().getProject() != getProject()) { if (logger.isLoggable(Level.INFO)) { logger.info( "Cannot execute action because focused object is within another project than the one of this editor"); } return null; } executeAction(action, e); return action; }
private < A extends FlexoAction<A, T1, T2>, T1 extends FlexoModelObject, T2 extends FlexoModelObject> boolean runExceptionHandler(FlexoException exception, final A action) { actionHasBeenPerformed(action, false); // Action failed ProgressWindow.hideProgressWindow(); FlexoExceptionHandler<A> exceptionHandler = null; ActionInitializer<A, T1, T2> actionInitializer = getActionInitializer(action.getActionType()); if (actionInitializer != null) { exceptionHandler = actionInitializer.getDefaultExceptionHandler(); } if (exceptionHandler != null) { if (exceptionHandler.handleException(exception, action)) { // The exception has been handled, we may still have to execute finalizer, if any return true; } else { return false; } } else { return false; } }