package pipe.actions.manager;
import pipe.actions.gui.*;
import pipe.controllers.application.PipeApplicationController;
import pipe.views.PipeApplicationView;
import java.awt.FileDialog;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
/**
* Stores the actions for modifying a Petri net
*/
public class PetriNetEditorManager implements ActionManager {
/**
* Creates a new Petri net
*/
private final GuiAction newPetriNetAction;
/**
* Loads a Petri net from an XML file
*/
private final GuiAction openAction;
/**
* Saves a Petri net to an XML file
*/
private final GuiAction saveAction;
/**
* Saves a Petri net to a specified XML file
*/
private final GuiAction saveAsAction;
/**
* Closes the Petri net tab
*/
private GuiAction closeAction;
/**
* Constructor
* @param view main PIPE application view
* @param applicationController main PIPE application controller
*/
public PetriNetEditorManager(PipeApplicationView view, PipeApplicationController applicationController) {
newPetriNetAction = new NewPetriNetAction(applicationController);
closeAction = new CloseWindowAction(applicationController);
FileDialog fileDialog = new FileDialog(view, "Save Petri Net", FileDialog.SAVE);
fileDialog.setFilenameFilter(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".xml");
}
});
FileDialog loadFileDialog = new FileDialog(view, "Open Petri Net", FileDialog.LOAD);
fileDialog.setFilenameFilter(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".xml");
}
});
saveAction = new SaveAction(applicationController, fileDialog);
saveAsAction = new SaveAsAction(applicationController, fileDialog);
openAction = new OpenAction(applicationController, loadFileDialog);
}
/**
*
* @return actions housed for creating and saving Petri nets
*/
@Override
public Iterable<GuiAction> getActions() {
return Arrays.asList(newPetriNetAction, openAction, saveAction, saveAsAction,
closeAction);
}
/**
* Enable actions for swapping into edit mode
*/
@Override
public void enableActions() {
saveAction.setEnabled(true);
saveAsAction.setEnabled(true);
}
/**
* Disable actions for swapping into animation mode
*/
@Override
public void disableActions() {
saveAction.setEnabled(false);
saveAsAction.setEnabled(false);
}
}