package application.actions; import application.ApplicationWindow; import application.editor.Editor; import javax.swing.*; import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.event.ActionEvent; import java.io.File; public class OpenAction extends AbstractSystemAction { private static final long serialVersionUID = -8290761032629599683L; private String lastDir = null; public OpenAction(ApplicationWindow frame) { super("Open...", frame); } @Override public void actionPerformed(ActionEvent e) { Editor editor = frame.getEditor(); if (editor == null) { return; } String wd = (lastDir != null) ? lastDir : System.getProperty("user.dir"); JFileChooser fc = buildFileChooser(wd); int option = fc.showDialog(null, "Open Model File"); if (option == JFileChooser.APPROVE_OPTION) { lastDir = fc.getSelectedFile().getParent(); editor.open(fc.getSelectedFile()); frame.setTitle(ApplicationWindow.title + " - " + fc.getSelectedFile().getAbsolutePath()); } } private static JFileChooser buildFileChooser(String wd) { JFileChooser fc = new JFileChooser(wd); FileFilter model = new FileNameExtensionFilter("model", "model"); FileFilter dtram = new FileNameExtensionFilter("dtram", "dtram"); // Adds file filter for supported file format FileFilter defaultFilter = new FileFilter() { public boolean accept(File file) { String lowerCase = file.getName().toLowerCase(); return lowerCase.endsWith(".model"); } @Override public String getDescription() { return null; } }; fc.addChoosableFileFilter(defaultFilter); fc.addChoosableFileFilter(model); fc.addChoosableFileFilter(dtram); return fc; } }