Merge branch 'improvement/JAL-4250_secondary_structure_annotation_antialias' into...
[jalview.git] / src / jalview / io / JalviewFileFilter.java
index 21f5b0f..5e9a242 100755 (executable)
@@ -24,6 +24,7 @@ import java.io.File;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
+import java.util.Locale;
 import java.util.Map;
 import java.util.StringTokenizer;
 
@@ -41,6 +42,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, ",");
@@ -81,6 +84,7 @@ public class JalviewFileFilter extends FileFilter
   @Override
   public boolean accept(File f)
   {
+
     if (f != null)
     {
       String extension = getExtension(f);
@@ -94,6 +98,29 @@ public class JalviewFileFilter extends FileFilter
       {
         return true;
       }
+
+    }
+
+    if (parentJFC != null && parentJFC.includeBackupFiles)
+    {
+      Iterator<String> 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;
@@ -108,7 +135,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);
       }
 
       ;
@@ -124,7 +151,7 @@ public class JalviewFileFilter extends FileFilter
       filters = new LinkedHashMap<>(5);
     }
 
-    filters.put(extension.toLowerCase(), this);
+    filters.put(extension.toLowerCase(Locale.ROOT), this);
     fullDescription = null;
   }
 
@@ -147,7 +174,7 @@ public class JalviewFileFilter extends FileFilter
 
           while (extensions.hasNext())
           {
-            fullDescription += (", " + extensions.next());
+            fullDescription += (", ." + extensions.next());
           }
         }
 
@@ -178,4 +205,10 @@ public class JalviewFileFilter extends FileFilter
   {
     return useExtensionsInDescription;
   }
+
+  protected void setParentJFC(JalviewFileChooser p)
+  {
+    this.parentJFC = p;
+  }
+
 }