X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJalviewFileFilter.java;h=cc63a2240afb19699e753dc897f4218e4ef7af86;hb=c4c37610dc373b9b3349e5c0915c6eddda2efe31;hp=623f372e43ceb6e7be690953138e6358495a8c41;hpb=ad15cff29620f960119f80176f1fd443da9f6763;p=jalview.git diff --git a/src/jalview/io/JalviewFileFilter.java b/src/jalview/io/JalviewFileFilter.java index 623f372..cc63a22 100755 --- a/src/jalview/io/JalviewFileFilter.java +++ b/src/jalview/io/JalviewFileFilter.java @@ -20,16 +20,17 @@ */ package jalview.io; -import java.io.*; -import java.util.*; +import java.io.File; +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 Hashtable filters = null; + private Map filters = null; private String description = "no description"; @@ -37,6 +38,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 +73,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,12 +90,35 @@ 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; } @@ -105,8 +133,6 @@ public class JalviewFileFilter extends FileFilter { return filename.substring(i + 1).toLowerCase(); } - - ; } return ""; @@ -116,13 +142,14 @@ public class JalviewFileFilter extends FileFilter { if (filters == null) { - filters = new Hashtable(5); + filters = new LinkedHashMap<>(5); } filters.put(extension.toLowerCase(), this); fullDescription = null; } + @Override public String getDescription() { if (fullDescription == null) @@ -133,15 +160,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 +199,10 @@ public class JalviewFileFilter extends FileFilter { return useExtensionsInDescription; } + + protected void setParentJFC(JalviewFileChooser p) + { + this.parentJFC = p; + } + }