package pipe.actions.gui; import java.awt.Frame; import java.awt.event.ActionEvent; import java.io.File; import java.util.zip.ZipEntry; import javax.swing.ImageIcon; import pipe.controllers.application.PipeApplicationController; import pipe.gui.PipeResourceLocator; import pipe.utilities.gui.GuiUtils; import pipe.utilities.io.JarUtilities; import uk.ac.imperial.pipe.parsers.UnparsableException; /** * Class responsible for loading the specified example file in the PIPE petri net example menu */ @SuppressWarnings("serial") public class ExampleFileAction extends GuiAction { /** * File location of the example file */ private final File filename; /** * Parent of this action */ private final Frame parent; /** * PIPE main application controller */ private final PipeApplicationController applicationController; /** * * @param file example PNML file * @param parent parent of this frame * @param applicationController PIPE main application controller */ public ExampleFileAction(File file, Frame parent, PipeApplicationController applicationController) { super(file.getName(), "Open example file \"" + file.getName() + "\""); filename = file; this.parent = parent; this.applicationController = applicationController; PipeResourceLocator locator = new PipeResourceLocator(); putValue(SMALL_ICON, new ImageIcon(locator.getImage("Net"))); } /** * * @param entry example PNML file stored as a ZipEntry in a jar * @param parent parent of this frame * @param applicationController PIPE main application controller */ public ExampleFileAction(ZipEntry entry, Frame parent, PipeApplicationController applicationController) { super(entry.getName().substring(1 + entry.getName().indexOf(System.getProperty("file.separator"))), "Open example file \"" + entry.getName() + "\""); this.parent = parent; filename = JarUtilities.getFile(entry); this.applicationController = applicationController; PipeResourceLocator locator = new PipeResourceLocator(); putValue(SMALL_ICON, new ImageIcon(locator.getImage("Net"))); } /** * When performed this action creates a new tab from the specified example Petri net file * @param e event */ @Override public void actionPerformed(ActionEvent e) { try { applicationController.createNewTabFromFile(filename); } catch (UnparsableException e1) { GuiUtils.displayErrorMessage(parent, e1.getMessage()); } } }