JAL-2136 Introduced DynamicData model, modified AnnotionFile to store Phyre meta...
[jalview.git] / src / jalview / schemes / ColourSchemes.java
index 21faa2a..269811b 100644 (file)
@@ -1,7 +1,8 @@
 package jalview.schemes;
 
-import jalview.api.AlignViewportI;
 import jalview.datamodel.AnnotatedCollectionI;
+import jalview.datamodel.SequenceCollectionI;
+import jalview.datamodel.SequenceI;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -14,7 +15,7 @@ public class ColourSchemes
   private static ColourSchemes instance = new ColourSchemes();
 
   /*
-   * a map from scheme name to an instance of it
+   * a map from scheme name (lower-cased) to an instance of it
    */
   private Map<String, ColourSchemeI> schemes;
 
@@ -93,7 +94,10 @@ public class ColourSchemes
    */
   public void removeColourScheme(String name)
   {
-    schemes.remove(name);
+    if (name != null)
+    {
+      schemes.remove(name.toLowerCase());
+    }
   }
   
   /**
@@ -102,33 +106,39 @@ public class ColourSchemes
    * 
    * @param name
    *          name of the colour scheme
-   * @param viewport
+   * @param forData
+   *          the data to be coloured
+   * @param optional
+   *          map from hidden representative sequences to the sequences they
+   *          represent
    * @return
    */
-  public ColourSchemeI getColourScheme(String name, AlignViewportI viewport)
+  public ColourSchemeI getColourScheme(String name,
+          AnnotatedCollectionI forData,
+          Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
   {
     if (name == null)
     {
       return null;
     }
     ColourSchemeI cs = schemes.get(name.toLowerCase());
-    return cs == null ? null : cs.getInstance(viewport.getAlignment(),
-            viewport.getHiddenRepSequences());
+    return cs == null ? null : cs.getInstance(forData, hiddenRepSequences);
   }
 
   /**
-   * Returns an instance of the colour scheme with which the given data may be
+   * Returns an instance of the colour scheme with which the given view may be
    * coloured
    * 
    * @param name
+   *          name of the colour scheme
    * @param forData
+   *          the data to be coloured
    * @return
    */
   public ColourSchemeI getColourScheme(String name,
           AnnotatedCollectionI forData)
   {
-    ColourSchemeI cs = schemes.get(name.toLowerCase());
-    return cs == null ? null : cs.getInstance(forData, null);
+    return getColourScheme(name, forData, null);
   }
 
   /**
@@ -141,4 +151,20 @@ public class ColourSchemes
   {
     return schemes.values();
   }
+
+  /**
+   * Answers true if there is a scheme with the given name, else false. The test
+   * is not case-sensitive.
+   * 
+   * @param name
+   * @return
+   */
+  public boolean nameExists(String name)
+  {
+    if (name == null)
+    {
+      return false;
+    }
+    return schemes.containsKey(name.toLowerCase());
+  }
 }