JAL-2446 merged to spike branch
[jalview.git] / src / jalview / io / FileFormats.java
index a18d4e8..19a61cf 100644 (file)
@@ -26,10 +26,9 @@ public class FileFormats
   private static Map<String, FileFormatI> formats;
 
   /*
-   * Formats in this set are built in to Jalview and instantiated
-   * on startup, any others are added dynamically 
+   * Formats in this set are capable of being identified by IdentifyFile 
    */
-  private static Set<FileFormatI> builtIn;
+  private static Set<FileFormatI> identifiable;
 
   public static FileFormats getInstance()
   {
@@ -52,21 +51,20 @@ public class FileFormats
   public synchronized void reset()
   {
     formats = new LinkedHashMap<String, FileFormatI>();
-    builtIn = new HashSet<FileFormatI>();
+    identifiable = new HashSet<FileFormatI>();
     for (FileFormat format : FileFormat.values())
     {
-      registerFileFormat(format, true);
+      registerFileFormat(format, format.isIdentifiable());
     }
   }
 
   /**
-   * Answers false if the format is one 'built in' to Jalview, or true if not
-   * (meaning it has been added dynamically at runtime). Only built-in formats
-   * can be validated by IdentifyFile. Answers true for a null input.
+   * Answers true if the format is one that can be identified by IdentifyFile.
+   * Answers false for a null value.
    */
-  public boolean isDynamic(FileFormatI f)
+  public boolean isIdentifiable(FileFormatI f)
   {
-    return !builtIn.contains(f);
+    return identifiable.contains(f);
   }
 
   /**
@@ -76,11 +74,13 @@ public class FileFormats
    */
   public void registerFileFormat(FileFormatI format)
   {
-    registerFileFormat(format, false);
+    boolean isIdentifiable = format instanceof FileFormat
+            && ((FileFormat) format).isIdentifiable();
+    registerFileFormat(format, isIdentifiable);
   }
 
   protected void registerFileFormat(FileFormatI format,
-          boolean isBuiltIn)
+          boolean isIdentifiable)
   {
     String name = format.getName().toUpperCase();
     if (formats.containsKey(name))
@@ -88,9 +88,9 @@ public class FileFormats
       System.err.println("Overwriting file format: " + format.getName());
     }
     formats.put(name, format);
-    if (isBuiltIn)
+    if (isIdentifiable)
     {
-      builtIn.add(format);
+      identifiable.add(format);
     }
   }
 
@@ -102,7 +102,7 @@ public class FileFormats
   public void deregisterFileFormat(String name)
   {
     FileFormatI ff = formats.remove(name.toUpperCase());
-    builtIn.remove(ff);
+    identifiable.remove(ff);
   }
 
   /**