X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJalviewFileChooser.java;h=2ba7bbf12d8a67b54370ea771c20bbbf2ab6a3bd;hb=109e015cd41fbdffb065131acd0d767dfefb2ef6;hp=7ccdaa96a456ce94a78be8627e0386c12cdb9c62;hpb=18a91cf8bf71500b0bfa020c8348227cce2fc279;p=jalview.git diff --git a/src/jalview/io/JalviewFileChooser.java b/src/jalview/io/JalviewFileChooser.java index 7ccdaa9..2ba7bbf 100755 --- a/src/jalview/io/JalviewFileChooser.java +++ b/src/jalview/io/JalviewFileChooser.java @@ -21,6 +21,7 @@ ////////////////////////////////////////////////////////////////// package jalview.io; +import jalview.bin.Cache; import jalview.gui.JvOptionPane; import jalview.util.MessageManager; import jalview.util.Platform; @@ -64,16 +65,17 @@ public class JalviewFileChooser extends JFileChooser * @param selected * @return */ - public static JalviewFileChooser forRead(String directory, String selected) + public static JalviewFileChooser forRead(String directory, + String selected) { List extensions = new ArrayList(); List descs = new ArrayList(); - for (FileFormatI format : FileFormat.values()) + for (FileFormatI format : FileFormats.getInstance().getFormats()) { if (format.isReadable()) { extensions.add(format.getExtensions()); - descs.add(format.toString()); + descs.add(format.getName()); } } return new JalviewFileChooser(directory, @@ -96,12 +98,12 @@ public class JalviewFileChooser extends JFileChooser // with a lambda expression parameter for isReadable/isWritable List extensions = new ArrayList(); List descs = new ArrayList(); - for (FileFormatI format : FileFormat.values()) + for (FileFormatI format : FileFormats.getInstance().getFormats()) { if (format.isWritable()) { extensions.add(format.getExtensions()); - descs.add(format.toString()); + descs.add(format.getName()); } } return new JalviewFileChooser(directory, @@ -124,16 +126,14 @@ public class JalviewFileChooser extends JFileChooser /** * Constructor for a single choice of file extension and description * - * @param dir * @param extension * @param desc */ - public JalviewFileChooser(String dir, String extension, String desc) + public JalviewFileChooser(String extension, String desc) { - // TODO inline dir as Cache.getProperty("LAST_DIRECTORY") ? if applet - // builds ok - this(dir, new String[] { extension }, new String[] { desc }, desc, - true); + this(Cache.getProperty("LAST_DIRECTORY"), new String[] { extension }, + new String[] + { desc }, desc, true); } JalviewFileChooser(String dir, String[] extensions, String[] descs, @@ -269,7 +269,7 @@ public class JalviewFileChooser extends JFileChooser format = format.substring(0, parenPos).trim(); try { - return FileFormat.valueOf(format); + return FileFormats.getInstance().forName(format); } catch (IllegalArgumentException e) { System.err.println("Unexpected format: " + format); @@ -278,6 +278,19 @@ public class JalviewFileChooser extends JFileChooser return null; } + File ourselectedFile = null; + + @Override + public File getSelectedFile() + { + File selfile = super.getSelectedFile(); + if (selfile == null && ourselectedFile != null) + { + return ourselectedFile; + } + return selfile; + } + @Override public int showSaveDialog(Component parent) throws HeadlessException { @@ -285,23 +298,26 @@ public class JalviewFileChooser extends JFileChooser setDialogType(SAVE_DIALOG); + this.setSelectedFile(null); int ret = showDialog(parent, MessageManager.getString("action.save")); + ourselectedFile = getSelectedFile(); if (getFileFilter() instanceof JalviewFileFilter) { JalviewFileFilter jvf = (JalviewFileFilter) getFileFilter(); - if (!jvf.accept(getSelectedFile())) + if (!jvf.accept(ourselectedFile)) { - String withExtension = getSelectedFile() + "." + String withExtension = getSelectedFile().getName() + "." + jvf.getAcceptableExtension(); - setSelectedFile(new File(withExtension)); + ourselectedFile = (new File(getCurrentDirectory(), withExtension)); + setSelectedFile(ourselectedFile); } } // TODO: ENSURE THAT FILES SAVED WITH A ':' IN THE NAME ARE REFUSED AND THE // USER PROMPTED FOR A NEW FILENAME if ((ret == JalviewFileChooser.APPROVE_OPTION) - && getSelectedFile().exists()) + && ourselectedFile.exists()) { int confirm = JvOptionPane.showConfirmDialog(parent, MessageManager.getString("label.overwrite_existing_file"), @@ -373,8 +389,8 @@ public class JalviewFileChooser extends JFileChooser } }); - this.setBorder(new javax.swing.border.TitledBorder(MessageManager - .getString("label.recently_opened"))); + this.setBorder(new javax.swing.border.TitledBorder( + MessageManager.getString("label.recently_opened"))); final JScrollPane scroller = new JScrollPane(list); @@ -400,8 +416,8 @@ public class JalviewFileChooser extends JFileChooser @Override public void run() { - scroller.getHorizontalScrollBar().setValue( - scroller.getHorizontalScrollBar().getMaximum()); + scroller.getHorizontalScrollBar() + .setValue(scroller.getHorizontalScrollBar().getMaximum()); } });