Merge branch 'develop' into trialMerge
[jalview.git] / src / jalview / io / JalviewFileChooser.java
index a4362dc..7ebe081 100755 (executable)
@@ -21,6 +21,7 @@
 //////////////////////////////////////////////////////////////////
 package jalview.io;
 
+import jalview.gui.JvOptionPane;
 import jalview.util.MessageManager;
 import jalview.util.Platform;
 
@@ -40,10 +41,10 @@ import java.util.Vector;
 import javax.swing.DefaultListCellRenderer;
 import javax.swing.JFileChooser;
 import javax.swing.JList;
-import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.SpringLayout;
+import javax.swing.filechooser.FileView;
 import javax.swing.plaf.basic.BasicFileChooserUI;
 
 /**
@@ -76,7 +77,7 @@ public class JalviewFileChooser extends JFileChooser
       if (format.isReadable())
       {
         extensions.add(format.getExtensions());
-        descs.add(format.getShortDescription());
+        descs.add(format.toString());
       }
     }
     return new JalviewFileChooser(directory,
@@ -106,7 +107,7 @@ public class JalviewFileChooser extends JFileChooser
       if (format.isWritable())
       {
         extensions.add(format.getExtensions());
-        descs.add(format.getShortDescription());
+        descs.add(format.toString());
       }
     }
     return new JalviewFileChooser(directory,
@@ -233,6 +234,11 @@ public class JalviewFileChooser extends JFileChooser
     }
   }
 
+  /**
+   * Returns the selected file format, or null if none selected
+   * 
+   * @return
+   */
   public FileFormatI getSelectedFormat()
   {
     if (getFileFilter() == null)
@@ -240,8 +246,27 @@ public class JalviewFileChooser extends JFileChooser
       return null;
     }
 
+    /*
+     * logic here depends on option description being formatted as 
+     * formatName (extension, extension...)
+     * or the 'no option selected' value
+     * All Files
+     * @see JalviewFileFilter.getDescription
+     */
     String format = getFileFilter().getDescription();
-    return FileFormat.valueOf(format);
+    int parenPos = format.indexOf("(");
+    if (parenPos > 0)
+    {
+      format = format.substring(0, parenPos).trim();
+      try
+      {
+        return FileFormat.valueOf(format);
+      } catch (IllegalArgumentException e)
+      {
+        System.err.println("Unexpected format: " + format);
+      }
+    }
+    return null;
   }
 
   @Override
@@ -269,12 +294,12 @@ public class JalviewFileChooser extends JFileChooser
     if ((ret == JalviewFileChooser.APPROVE_OPTION)
             && getSelectedFile().exists())
     {
-      int confirm = JOptionPane.showConfirmDialog(parent,
+      int confirm = JvOptionPane.showConfirmDialog(parent,
               MessageManager.getString("label.overwrite_existing_file"),
               MessageManager.getString("label.file_already_exists"),
-              JOptionPane.YES_NO_OPTION);
+              JvOptionPane.YES_NO_OPTION);
 
-      if (confirm != JOptionPane.YES_OPTION)
+      if (confirm != JvOptionPane.YES_OPTION)
       {
         ret = JalviewFileChooser.CANCEL_OPTION;
       }