X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJalviewFileFilter.java;h=cc63a2240afb19699e753dc897f4218e4ef7af86;hb=c4c37610dc373b9b3349e5c0915c6eddda2efe31;hp=3b73ba3fa9ab386eb23527ba1ff53998b140d0fd;hpb=c19d2a91ca05e052e3408bf5852d88eb5d0608f1;p=jalview.git diff --git a/src/jalview/io/JalviewFileFilter.java b/src/jalview/io/JalviewFileFilter.java index 3b73ba3..cc63a22 100755 --- a/src/jalview/io/JalviewFileFilter.java +++ b/src/jalview/io/JalviewFileFilter.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2) - * Copyright (C) 2015 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -21,17 +21,16 @@ package jalview.io; import java.io.File; -import java.util.Enumeration; -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 Hashtable filters = null; + private Map filters = null; private String description = "no description"; @@ -39,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, ","); @@ -72,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); @@ -87,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; } @@ -107,8 +133,6 @@ public class JalviewFileFilter extends FileFilter { return filename.substring(i + 1).toLowerCase(); } - - ; } return ""; @@ -118,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) @@ -135,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()); } } @@ -174,4 +199,10 @@ public class JalviewFileFilter extends FileFilter { return useExtensionsInDescription; } + + protected void setParentJFC(JalviewFileChooser p) + { + this.parentJFC = p; + } + }