X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJalviewFileFilter.java;h=10dc9ea939b2d22d600be98037bfb66028acb005;hb=5a352aa2f3330ae269d9b70c4a7374c2518bfb2e;hp=623f372e43ceb6e7be690953138e6358495a8c41;hpb=ad15cff29620f960119f80176f1fd443da9f6763;p=jalview.git diff --git a/src/jalview/io/JalviewFileFilter.java b/src/jalview/io/JalviewFileFilter.java index 623f372..10dc9ea 100755 --- a/src/jalview/io/JalviewFileFilter.java +++ b/src/jalview/io/JalviewFileFilter.java @@ -20,8 +20,14 @@ */ package jalview.io; -import java.io.*; -import java.util.*; +import java.util.Locale; + +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; @@ -29,7 +35,7 @@ public class JalviewFileFilter extends FileFilter { public static Hashtable suffixHash = new Hashtable(); - private Hashtable filters = null; + private Map filters = null; private String description = "no description"; @@ -37,6 +43,8 @@ public class JalviewFileFilter extends FileFilter private boolean useExtensionsInDescription = true; + private JalviewFileChooser parentJFC = null; + public JalviewFileFilter(String extension, String description) { StringTokenizer st = new StringTokenizer(extension, ","); @@ -70,12 +78,14 @@ public class JalviewFileFilter extends FileFilter public String getAcceptableExtension() { - return filters.keys().nextElement().toString(); + 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); @@ -85,10 +95,33 @@ public class JalviewFileFilter extends FileFilter return true; } - if ((extension != null) && (filters.get(getExtension(f)) != null)) + if ((extension != null) && (filters.get(extension) != null)) { return true; } + + } + + if (parentJFC != null && parentJFC.includeBackupFiles) + { + Iterator it = filters.keySet().iterator(); + EXTENSION: while (it.hasNext()) + { + String ext = it.next(); + + // quick negative test + if (!f.getName().contains(ext)) + { + continue EXTENSION; + } + + BackupFilenameParts bfp = BackupFilenameParts + .currentBackupFilenameParts(f.getName(), ext, true); + if (bfp.isBackupFile()) + { + return true; + } + } } return false; @@ -103,7 +136,7 @@ public class JalviewFileFilter extends FileFilter if ((i > 0) && (i < (filename.length() - 1))) { - return filename.substring(i + 1).toLowerCase(); + return filename.substring(i + 1).toLowerCase(Locale.ROOT); } ; @@ -116,13 +149,14 @@ public class JalviewFileFilter extends FileFilter { if (filters == null) { - filters = new Hashtable(5); + filters = new LinkedHashMap<>(5); } - filters.put(extension.toLowerCase(), this); + filters.put(extension.toLowerCase(Locale.ROOT), this); fullDescription = null; } + @Override public String getDescription() { if (fullDescription == null) @@ -133,15 +167,15 @@ public class JalviewFileFilter extends FileFilter : (description + " ("); // build the description from the extension list - Enumeration extensions = filters.keys(); + Iterator extensions = filters.keySet().iterator(); if (extensions != null) { - fullDescription += ("." + (String) extensions.nextElement()); + fullDescription += ("." + extensions.next()); - while (extensions.hasMoreElements()) + while (extensions.hasNext()) { - fullDescription += (", " + (String) extensions.nextElement()); + fullDescription += (", " + extensions.next()); } } @@ -172,4 +206,10 @@ public class JalviewFileFilter extends FileFilter { return useExtensionsInDescription; } + + protected void setParentJFC(JalviewFileChooser p) + { + this.parentJFC = p; + } + }