JAL-3253 jalview.bin.Instance handles all singleton instances -
[jalview.git] / src / jalview / schemes / ColourSchemeProperty.java
index 53e9b60..877f375 100755 (executable)
@@ -20,6 +20,8 @@
  */
 package jalview.schemes;
 
+import jalview.api.AlignViewportI;
+import jalview.bin.Instance;
 import jalview.datamodel.AnnotatedCollectionI;
 import jalview.util.ColorUtils;
 
@@ -44,6 +46,9 @@ public class ColourSchemeProperty
    * Returns a colour scheme for the given name, with which the given data may
    * be coloured. The name is not case-sensitive, and may be one of
    * <ul>
+   * <li>any currently registered colour scheme; Jalview by default
+   * provides</li>
+   * <ul>
    * <li>Clustal</li>
    * <li>Blosum62</li>
    * <li>% Identity</li>
@@ -58,11 +63,13 @@ public class ColourSchemeProperty
    * <li>Purine/Pyrimidine</li>
    * <li>T-Coffee Scores</li>
    * <li>RNA Helices</li>
-   * <li>User Defined</li>
+   * </ul>
+   * <li>the name of a programmatically added colour scheme</li>
    * <li>an AWT colour name e.g. red</li>
    * <li>an AWT hex rgb colour e.g. ff2288</li>
    * <li>residue colours list e.g. D,E=red;K,R,H=0022FF;c=yellow</li>
    * </ul>
+   * 
    * If none of these formats is matched, the string is converted to a colour
    * using a hashing algorithm. For name "None", returns null.
    * 
@@ -70,7 +77,8 @@ public class ColourSchemeProperty
    * @param name
    * @return
    */
-  public static ColourSchemeI getColourScheme(AnnotatedCollectionI forData,
+  public static ColourSchemeI getColourScheme(AlignViewportI view,
+          AnnotatedCollectionI forData,
           String name)
   {
     if (ResidueColourScheme.NONE.equalsIgnoreCase(name))
@@ -83,8 +91,9 @@ public class ColourSchemeProperty
      * if this is the name of a registered colour scheme, just
      * create a new instance of it
      */
-    ColourSchemeI scheme = ColourSchemes.getInstance().getColourScheme(
-            name, forData);
+    ColourSchemeI scheme = ColourSchemes.getInstance().getColourScheme(name,
+            view,
+            forData, null);
     if (scheme != null)
     {
       return scheme;
@@ -101,30 +110,30 @@ public class ColourSchemeProperty
     return ucs;
   }
 
-  public static Color rnaHelices[] = null;
-
   public static void initRnaHelicesShading(int n)
   {
-    int j = 0;
-    if (rnaHelices == null)
+    int i = 0;
+    Instance j = Instance.getInstance();
+
+    if (j.rnaHelices == null)
     {
-      rnaHelices = new Color[n + 1];
+      j.rnaHelices = new Color[n + 1];
     }
-    else if (rnaHelices != null && rnaHelices.length <= n)
+    else if (j.rnaHelices != null && j.rnaHelices.length <= n)
     {
       Color[] t = new Color[n + 1];
-      System.arraycopy(rnaHelices, 0, t, 0, rnaHelices.length);
-      j = rnaHelices.length;
-      rnaHelices = t;
+      System.arraycopy(j.rnaHelices, 0, t, 0, j.rnaHelices.length);
+      i = j.rnaHelices.length;
+      j.rnaHelices = t;
     }
     else
     {
       return;
     }
     // Generate random colors and store
-    for (; j <= n; j++)
+    for (; i <= n; i++)
     {
-      rnaHelices[j] = ColorUtils.generateRandomColor(Color.white);
+      j.rnaHelices[i] = ColorUtils.generateRandomColor(Color.white);
     }
   }
 
@@ -133,7 +142,7 @@ public class ColourSchemeProperty
    */
   public static void resetRnaHelicesShading()
   {
-    rnaHelices = null;
+    Instance.getInstance().rnaHelices = null;
   }
 
   /**
@@ -144,8 +153,7 @@ public class ColourSchemeProperty
    */
   public static String getColourName(ColourSchemeI cs)
   {
-    return cs == null ? ResidueColourScheme.NONE : cs
-            .getSchemeName();
+    return cs == null ? ResidueColourScheme.NONE : cs.getSchemeName();
   }
 
 }