package pipe.actions.gui;
import pipe.controllers.application.PipeApplicationController;
import pipe.utilities.gui.GuiUtils;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
/**
* Unfolds a coloured Petri net to an ordinary Petri net.
*/
@SuppressWarnings("serial")
public class UnfoldAction extends GuiAction {
/**
* Main PIPE application controller
*/
private final PipeApplicationController pipeApplicationController;
/**
* Constructor
* @param pipeApplicationController main PIPE application controller
*/
public UnfoldAction(PipeApplicationController pipeApplicationController) {
super("unfoldAction", "Unfold Petri Net", KeyEvent.VK_U,
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | InputEvent.SHIFT_DOWN_MASK);
this.pipeApplicationController = pipeApplicationController;
}
/**
* Unfolds the Petri net and creates a new Petri net tab with it.
*
* This functionality has not yet been implemented.
*
* @param e event
*/
@Override
public void actionPerformed(ActionEvent e) {
GuiUtils.displayErrorMessage(null,
"Currently unfolding a Petri net is not supported due to errors found in the PIPE 4 implementation. We hope to fix them soon!");
// PetriNetController controller = pipeApplicationController.getActivePetriNetController();
//TODO: SHOW MESSAGES
// if(controller.getNetTokens().size() > 1 && controller.hasFunctionalRatesOrWeights()){
// JOptionPane.showMessageDialog(null, "This is CGSPN. The analysis will only apply to default color (black). \r\n"+"This net contains functional rates or weights. The unfolder will replace these rates or weights with " +
// "their current constant tokens.",
// "Information", JOptionPane.INFORMATION_MESSAGE);
// }else if(!(pipeApplicationView.getCurrentPetriNetView().getEnabledTokenClassNumber()>1) && pipeApplicationView.getCurrentPetriNetView().hasFunctionalRatesOrWeights()){
// JOptionPane.showMessageDialog(null, "This net contains functional rates or weights. The unfolder will replace these rates or weights with " +
// "their current constant tokens.",
// "Information", JOptionPane.INFORMATION_MESSAGE);
// }else if((pipeApplicationView.getCurrentPetriNetView().getEnabledTokenClassNumber()>1) && !pipeApplicationView.getCurrentPetriNetView().hasFunctionalRatesOrWeights()){
// JOptionPane.showMessageDialog(null, "This is CGSPN. The analysis will only apply to default color (black). ",
// "Information", JOptionPane.INFORMATION_MESSAGE);
// }
// PetriNet petriNet = controller.getPetriNet();
// Expander expander = new Expander(petriNet);
// PetriNet unfolded = expander.unfold();
//TODO: REIMPLEMENT
// pipeApplicationController.createNewTab(unfolded, pipeApplicationView);
}
}