spelling err
[jalview.git] / src / jalview / io / JalviewFileFilter.java
index 85ac084..3252a98 100755 (executable)
+/*\r
+ * Jalview - A Sequence Alignment Editor and Viewer\r
+ * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
+ */\r
 package jalview.io;\r
 \r
-import javax.swing.filechooser.*;\r
-import java.io.File;\r
+import java.io.*;\r
 import java.util.*;\r
 \r
-public class JalviewFileFilter extends FileFilter\r
+import javax.swing.filechooser.FileFilter;\r
+\r
+public class JalviewFileFilter\r
+    extends FileFilter\r
 {\r
-      private static String TYPE_UNKNOWN = "Type Unknown";\r
-      private static String HIDDEN_FILE = "Hidden File";\r
-      public static Hashtable suffixHash = new Hashtable();\r
+  public static Hashtable suffixHash = new Hashtable();\r
+  private Hashtable filters = null;\r
+  private String description = "no description";\r
+  private String fullDescription = "full description";\r
+  private boolean useExtensionsInDescription = true;\r
+\r
+  public JalviewFileFilter(String extension, String description)\r
+  {\r
+    StringTokenizer st = new StringTokenizer(extension, ",");\r
+\r
+    while (st.hasMoreElements())\r
+    {\r
+      addExtension(st.nextToken().trim());\r
+    }\r
+\r
+    setDescription(description);\r
+  }\r
 \r
-      private Hashtable filters = null;\r
-      private String description = "no description";\r
-      private String fullDescription = "full description";\r
-      private boolean useExtensionsInDescription = true;\r
+  public JalviewFileFilter(String[] filts)\r
+  {\r
+    this(filts, null);\r
+  }\r
 \r
-      public JalviewFileFilter() {\r
-          this.filters = new Hashtable();\r
-      }\r
+  public JalviewFileFilter(String[] filts, String description)\r
+  {\r
+    for (int i = 0; i < filts.length; i++)\r
+    {\r
+      // add filters one by one\r
+      addExtension(filts[i]);\r
+    }\r
+\r
+    if (description != null)\r
+    {\r
+      setDescription(description);\r
+    }\r
+  }\r
 \r
-      public JalviewFileFilter(String extension) {\r
-          this(extension,null);\r
-      }\r
+  public String getAcceptableExtension()\r
+  {\r
+    return filters.keys().nextElement().toString();\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
+  // takes account of the fact that database is a directory\r
+  public boolean accept(File f)\r
+  {\r
+    if (f != null)\r
+    {\r
+      String extension = getExtension(f);\r
 \r
-      public JalviewFileFilter(String[] filts) {\r
-          this(filts, null);\r
+      if (f.isDirectory())\r
+      {\r
+          return true;\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
-          }\r
-           if(description!=null) setDescription(description);\r
+      if ( (extension != null) && (filters.get(getExtension(f)) != null))\r
+      {\r
+        return true;\r
       }\r
+    }\r
 \r
-      // takes account of the fact that database is a directory\r
-      public boolean accept(File f) {\r
-          if(f != null) {\r
-              String extension = getExtension(f);\r
-              if(f.isDirectory()) {\r
-                 if(extension == null || extension.equals("")) {\r
-                    return true;\r
-                 } else {\r
-                    if(filters.get(getExtension(f)) != null) {\r
-                       return true;\r
-                    }\r
-                 }\r
-              }\r
-              if(extension != null && filters.get(getExtension(f)) != null) {\r
-                  return true;\r
-              }\r
-          }\r
-          return false;\r
-      }\r
+    return false;\r
+  }\r
 \r
-       public String getExtension(File f) {\r
-          if(f != null) {\r
-              String filename = f.getName();\r
-              int i = filename.lastIndexOf('.');\r
-              if(i>0 && i<filename.length()-1) {\r
-                  return filename.substring(i+1).toLowerCase();\r
-              };\r
-          }\r
-          return "";\r
-      }\r
+  public String getExtension(File f)\r
+  {\r
+    if (f != null)\r
+    {\r
+      String filename = f.getName();\r
+      int i = filename.lastIndexOf('.');\r
 \r
-      public void addExtension(String extension) {\r
-          if(filters == null) {\r
-              filters = new Hashtable(5);\r
-          }\r
-          filters.put(extension.toLowerCase(), this);\r
-          fullDescription = null;\r
+      if ( (i > 0) && (i < (filename.length() - 1)))\r
+      {\r
+        return filename.substring(i + 1).toLowerCase();\r
       }\r
 \r
+      ;\r
+    }\r
 \r
-      public String getDescription() {\r
-          if(fullDescription == null) {\r
-              if(description == null || isExtensionListInDescription()) {\r
-                   fullDescription = description==null ? "(" : description + " (";\r
-                  // build the description from the extension list\r
-                  Enumeration extensions = filters.keys();\r
-                  if(extensions != null) {\r
-                      fullDescription += "." + (String) extensions.nextElement();\r
-                      while (extensions.hasMoreElements()) {\r
-                          fullDescription += ", " + (String) extensions.nextElement();\r
-                      }\r
-                  }\r
-                  fullDescription += ")";\r
-              } else {\r
-                  fullDescription = description;\r
-              }\r
+    return "";\r
+  }\r
+\r
+  public void addExtension(String extension)\r
+  {\r
+    if (filters == null)\r
+    {\r
+      filters = new Hashtable(5);\r
+    }\r
+\r
+    filters.put(extension.toLowerCase(), this);\r
+    fullDescription = null;\r
+  }\r
+\r
+  public String getDescription()\r
+  {\r
+    if (fullDescription == null)\r
+    {\r
+      if ( (description == null) || isExtensionListInDescription())\r
+      {\r
+        fullDescription = (description == null) ? "(" : (description +\r
+            " (");\r
+\r
+        // build the description from the extension list\r
+        Enumeration extensions = filters.keys();\r
+\r
+        if (extensions != null)\r
+        {\r
+          fullDescription += ("." +\r
+                              (String) extensions.nextElement());\r
+\r
+          while (extensions.hasMoreElements())\r
+          {\r
+            fullDescription += (", " +\r
+                                (String) extensions.nextElement());\r
           }\r
-          return fullDescription;\r
-      }\r
+        }\r
 \r
-      public void setDescription(String description) {\r
-          this.description = description;\r
-          fullDescription = null;\r
+        fullDescription += ")";\r
       }\r
-\r
-      public void setExtensionListInDescription(boolean b) {\r
-          useExtensionsInDescription = b;\r
-          fullDescription = null;\r
+      else\r
+      {\r
+        fullDescription = description;\r
       }\r
+    }\r
 \r
-      public boolean isExtensionListInDescription() {\r
-          return useExtensionsInDescription;\r
-      }\r
+    return fullDescription;\r
+  }\r
+\r
+  public void setDescription(String description)\r
+  {\r
+    this.description = description;\r
+    fullDescription = null;\r
+  }\r
+\r
+  public void setExtensionListInDescription(boolean b)\r
+  {\r
+    useExtensionsInDescription = b;\r
+    fullDescription = null;\r
+  }\r
+\r
+  public boolean isExtensionListInDescription()\r
+  {\r
+    return useExtensionsInDescription;\r
   }\r
+}\r