X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJalviewFileFilter.java;h=bc20342411989ab165db672f9462cfd5a7e77b9a;hb=9bb594782eecfaa798bbfdfff955ccd100a02b4f;hp=2a8f078e881c59305fcca39b532cec6aac2c60b9;hpb=47168f025aefdaa044802bd5f8f510ffe43a4808;p=jalview.git diff --git a/src/jalview/io/JalviewFileFilter.java b/src/jalview/io/JalviewFileFilter.java index 2a8f078..bc20342 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.8.2) - * Copyright (C) 2014 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. * @@ -20,8 +20,12 @@ */ package jalview.io; -import java.io.*; -import java.util.*; +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 +33,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 +41,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 +76,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 +93,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; } @@ -116,13 +147,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 +165,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 +204,10 @@ public class JalviewFileFilter extends FileFilter { return useExtensionsInDescription; } + + protected void setParentJFC(JalviewFileChooser p) + { + this.parentJFC = p; + } + }