filechooser has multiple filters
authoramwaterhouse <Andrew Waterhouse>
Thu, 19 May 2005 17:57:57 +0000 (17:57 +0000)
committeramwaterhouse <Andrew Waterhouse>
Thu, 19 May 2005 17:57:57 +0000 (17:57 +0000)
src/jalview/io/HTMLOutput.java
src/jalview/io/JalviewFileChooser.java
src/jalview/io/JalviewFileFilter.java

index fd51823..76de744 100755 (executable)
@@ -19,8 +19,11 @@ public class HTMLOutput
   {\r
     this.av = av;\r
     sr = new SequenceRenderer(av);\r
-    JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty("LAST_DIRECTORY")\r
-        , new String[]{"html"}, "HTML files");\r
+    JalviewFileChooser chooser = new JalviewFileChooser(\r
+      jalview.bin.Cache.getProperty("LAST_DIRECTORY"),\r
+      new String[]{"html"},\r
+      new String[]{"HTML files"},\r
+      "HTML files");\r
 \r
     chooser.setFileView(new JalviewFileView());\r
     chooser.setDialogTitle("Save as HTML");\r
@@ -29,7 +32,7 @@ public class HTMLOutput
     if(value == JalviewFileChooser.APPROVE_OPTION)\r
     {\r
       String choice =  chooser.getSelectedFile().getPath();\r
-      jalview.bin.Cache.setProperty("LAST_DIRECTORY",  choice);\r
+      jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser.getSelectedFile().getParent());\r
       try{\r
         PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(choice));\r
         out.println("<HTML>");\r
index 5b4fa21..c8248ef 100755 (executable)
@@ -31,14 +31,44 @@ public class JalviewFileChooser extends JFileChooser
   private static String[] COLUMNS = null;\r
 \r
 \r
-  public JalviewFileChooser(String dir, String [] suffix, String desc)\r
+  public JalviewFileChooser(String dir, String [] suffix, String [] desc, String selected)\r
   {\r
     super(dir);\r
-    JalviewFileFilter filter = new JalviewFileFilter(suffix, desc);\r
-    this.setFileFilter(filter);\r
+\r
+    JalviewFileFilter chosen = null;\r
+    for(int i=0; i<suffix.length; i++)\r
+    {\r
+      JalviewFileFilter jvf = new JalviewFileFilter(suffix[i], desc[i]);\r
+      addChoosableFileFilter(jvf);\r
+      if(selected!=null && selected.equals(desc[i]))\r
+        chosen = jvf;\r
+    }\r
+    if(chosen!=null)\r
+      setFileFilter(chosen);\r
     initColumns();\r
   }\r
 \r
+  public String getSelectedFormat()\r
+  {\r
+\r
+    String format = getFileFilter().getDescription();\r
+    if (format.startsWith("Jalview"))\r
+      format = "Jalview";\r
+    else if (format.startsWith("Fasta"))\r
+      format = "FASTA";\r
+    else if (format.startsWith("MSF"))\r
+      format = "MSF";\r
+    else if (format.startsWith("Clustal"))\r
+      format = "CLUSTAL";\r
+    else if (format.startsWith("BLC"))\r
+      format = "BLC";\r
+    else if (format.startsWith("PIR"))\r
+      format = "PIR";\r
+    else if (format.startsWith("PFAM"))\r
+      format = "PFAM";\r
+\r
+    return format;\r
+  }\r
   public JalviewFileChooser(String dir)\r
   {\r
     super(dir);\r
@@ -49,6 +79,13 @@ public class JalviewFileChooser extends JFileChooser
       setDialogType(SAVE_DIALOG);\r
       int ret = showDialog(parent, null);\r
 \r
+      JalviewFileFilter jvf = (JalviewFileFilter)getFileFilter();\r
+      if( !jvf.accept( getSelectedFile() ) )\r
+      {\r
+        String withExtension = getSelectedFile()+"."+jvf.getAcceptableExtension();\r
+        setSelectedFile(new File(withExtension));\r
+      }\r
+\r
       if(ret == JalviewFileChooser.APPROVE_OPTION  &&  getSelectedFile().exists() )\r
       {\r
        int confirm =  JOptionPane.showConfirmDialog(parent,\r
index 85ac084..f19e5ea 100755 (executable)
@@ -15,26 +15,27 @@ public class JalviewFileFilter extends FileFilter
       private String fullDescription = "full description";\r
       private boolean useExtensionsInDescription = true;\r
 \r
-      public JalviewFileFilter() {\r
-          this.filters = new Hashtable();\r
-      }\r
-\r
-      public JalviewFileFilter(String extension) {\r
-          this(extension,null);\r
-      }\r
 \r
       public JalviewFileFilter(String extension, String description) {\r
-          this();\r
-          if(extension!=null) addExtension(extension);\r
-           if(description!=null) setDescription(description);\r
+\r
+       StringTokenizer st = new StringTokenizer(extension, ",");\r
+       while(st.hasMoreElements())\r
+       {\r
+         addExtension(st.nextToken().trim());\r
+       }\r
+       setDescription(description);\r
       }\r
 \r
       public JalviewFileFilter(String[] filts) {\r
           this(filts, null);\r
       }\r
 \r
+      public String getAcceptableExtension()\r
+      {\r
+        return filters.keys().nextElement().toString();\r
+      }\r
+\r
       public JalviewFileFilter(String[] filts, String description) {\r
-          this();\r
           for (int i = 0; i < filts.length; i++) {\r
               // add filters one by one\r
               addExtension(filts[i]);\r