package pipe.actions.manager;
import pipe.actions.gui.*;
import pipe.controllers.application.PipeApplicationController;
import java.util.Arrays;
/**
* Manager to store all animate actions displayed on the tool bar
*/
public final class AnimateActionManager implements ActionManager {
/**
* Flag for toggling animation mode
*/
private final GuiAction toggleAnimationAction;
/**
* Step backwards action to step back in the animation history
*/
private final StepBackwardAction stepbackwardAction;
/**
* Step forwards action to step forward in the animation history
*/
private final StepForwardAction stepforwardAction;
/**
* Fires a random transition
*/
private final GuiAction randomAction;
/**
* Fires multiple random transitions
*/
private final AnimateAction multipleRandomAction;
/**
* Constructor
* @param applicationModel main PIPE application model
* @param applicationController main PIPE application controller
*/
public AnimateActionManager(PipeApplicationModel applicationModel, PipeApplicationController applicationController) {
toggleAnimationAction = new ToggleAnimateAction("Animation mode", "Toggle Animation Mode", "Ctrl A",
applicationModel, applicationController);
stepforwardAction = new StepForwardAction("Forward", "Step forward a firing", "6", applicationController);
stepbackwardAction = new StepBackwardAction("Back", "Step backward a firing", "4", applicationController, stepforwardAction);
stepforwardAction.registerStepBack(stepbackwardAction);
randomAction =
new RandomAnimateAction("Random", "Randomly fire a transition", "5", applicationController, stepforwardAction, stepbackwardAction);
multipleRandomAction = new MultiRandomAnimateAction("Animate", "Randomly fire a number of transitions", "7", stepbackwardAction,
applicationController);
}
/**
*
* @return all actions stored
*/
@Override
public Iterable<GuiAction> getActions() {
return Arrays.asList(toggleAnimationAction, stepbackwardAction, stepforwardAction, randomAction, multipleRandomAction);
}
/**
* Enables the actions when changing to animation mode
*/
@Override
public void enableActions() {
randomAction.setEnabled(true);
multipleRandomAction.setEnabled(true);
stepbackwardAction.setEnabled(false);
stepforwardAction.setEnabled(false);
}
/**
* Disables the actions for changing to edit mode
*/
@Override
public void disableActions() {
for (GuiAction action : getAnimateActions()) {
action.setEnabled(false);
}
}
public Iterable<GuiAction> getEditActions() {
return Arrays.asList(toggleAnimationAction);
}
public Iterable<GuiAction> getAnimateActions() {
return Arrays.asList(stepbackwardAction, stepforwardAction, randomAction, multipleRandomAction);
}
}