X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJalviewFileFilter.java;h=21f5b0fe36fddd092fc5cbed9af6993ae04fdae8;hb=ede7927272c6b59e01466d3120e834b26e021003;hp=85ac084ad9d5068aee5c65199197d1154f7241e2;hpb=e67588afd890cb74a529a4f69c076456725fead7;p=jalview.git diff --git a/src/jalview/io/JalviewFileFilter.java b/src/jalview/io/JalviewFileFilter.java index 85ac084..21f5b0f 100755 --- a/src/jalview/io/JalviewFileFilter.java +++ b/src/jalview/io/JalviewFileFilter.java @@ -1,118 +1,181 @@ -package jalview.io; - -import javax.swing.filechooser.*; -import java.io.File; -import java.util.*; - -public class JalviewFileFilter extends FileFilter -{ - private static String TYPE_UNKNOWN = "Type Unknown"; - private static String HIDDEN_FILE = "Hidden File"; - public static Hashtable suffixHash = new Hashtable(); - - private Hashtable filters = null; - private String description = "no description"; - private String fullDescription = "full description"; - private boolean useExtensionsInDescription = true; - - public JalviewFileFilter() { - this.filters = new Hashtable(); - } - - public JalviewFileFilter(String extension) { - this(extension,null); - } - - public JalviewFileFilter(String extension, String description) { - this(); - if(extension!=null) addExtension(extension); - if(description!=null) setDescription(description); - } - - public JalviewFileFilter(String[] filts) { - this(filts, null); - } - - public JalviewFileFilter(String[] filts, String description) { - this(); - for (int i = 0; i < filts.length; i++) { - // add filters one by one - addExtension(filts[i]); - } - if(description!=null) setDescription(description); - } - - // takes account of the fact that database is a directory - public boolean accept(File f) { - if(f != null) { - String extension = getExtension(f); - if(f.isDirectory()) { - if(extension == null || extension.equals("")) { - return true; - } else { - if(filters.get(getExtension(f)) != null) { - return true; - } - } - } - if(extension != null && filters.get(getExtension(f)) != null) { - return true; - } - } - return false; - } - - public String getExtension(File f) { - if(f != null) { - String filename = f.getName(); - int i = filename.lastIndexOf('.'); - if(i>0 && i. + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ +package jalview.io; + +import java.io.File; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.StringTokenizer; + +import javax.swing.filechooser.FileFilter; + +public class JalviewFileFilter extends FileFilter +{ + public static Hashtable suffixHash = new Hashtable(); + + private Map filters = null; + + private String description = "no description"; + + private String fullDescription = "full description"; + + private boolean useExtensionsInDescription = true; + + public JalviewFileFilter(String extension, String description) + { + StringTokenizer st = new StringTokenizer(extension, ","); + + while (st.hasMoreElements()) + { + addExtension(st.nextToken().trim()); + } + + setDescription(description); + } + + public JalviewFileFilter(String[] filts) + { + this(filts, null); + } + + public JalviewFileFilter(String[] filts, String description) + { + for (int i = 0; i < filts.length; i++) + { + // add filters one by one + addExtension(filts[i]); + } + + if (description != null) + { + setDescription(description); + } + } + + public String getAcceptableExtension() + { + return filters.keySet().iterator().next().toString(); + } + + // takes account of the fact that database is a directory + @Override + public boolean accept(File f) + { + if (f != null) + { + String extension = getExtension(f); + + if (f.isDirectory()) + { + return true; + } + + if ((extension != null) && (filters.get(extension) != null)) + { + return true; + } + } + + return false; + } + + public String getExtension(File f) + { + if (f != null) + { + String filename = f.getName(); + int i = filename.lastIndexOf('.'); + + if ((i > 0) && (i < (filename.length() - 1))) + { + return filename.substring(i + 1).toLowerCase(); + } + + ; + } + + return ""; + } + + public void addExtension(String extension) + { + if (filters == null) + { + filters = new LinkedHashMap<>(5); + } + + filters.put(extension.toLowerCase(), this); + fullDescription = null; + } + + @Override + public String getDescription() + { + if (fullDescription == null) + { + if ((description == null) || isExtensionListInDescription()) + { + fullDescription = (description == null) ? "(" + : (description + " ("); + + // build the description from the extension list + Iterator extensions = filters.keySet().iterator(); + + if (extensions != null) + { + fullDescription += ("." + extensions.next()); + + while (extensions.hasNext()) + { + fullDescription += (", " + extensions.next()); + } + } + + fullDescription += ")"; + } + else + { + fullDescription = description; + } + } + + return fullDescription; + } + + public void setDescription(String description) + { + this.description = description; + fullDescription = null; + } + + public void setExtensionListInDescription(boolean b) + { + useExtensionsInDescription = b; + fullDescription = null; + } + + public boolean isExtensionListInDescription() + { + return useExtensionsInDescription; + } +}