apply gpl development license
[jalview.git] / src / jalview / schemes / ColourSchemeProperty.java
index ef2feac..3333a82 100755 (executable)
@@ -1,17 +1,17 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
- *
+ * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)
+ * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * 
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
  * of the License, or (at your option) any later version.
- *
+ * 
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
+ * 
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
@@ -67,20 +67,23 @@ public class ColourSchemeProperty
   /** DOCUMENT ME!! */
   public static final int USER_DEFINED = 11;
 
-  /** DOCUMENT ME!! */
+  /** No Colourscheme Index */
   public static final int NONE = 12;
 
+  /** Undefined Colourscheme Index */
+  public static final int UNDEFINED = 13;
+
   /**
    * DOCUMENT ME!
    * 
    * @param name
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * 
    * @return DOCUMENT ME!
    */
   public static int getColourIndexFromName(String name)
   {
-    int ret = 12;
+    int ret = UNDEFINED;
 
     if (name.equalsIgnoreCase("Clustal"))
     {
@@ -130,6 +133,10 @@ public class ColourSchemeProperty
     {
       ret = USER_DEFINED;
     }
+    else if (name.equalsIgnoreCase("None"))
+    {
+      ret = NONE;
+    }
 
     return ret;
   }
@@ -138,14 +145,14 @@ public class ColourSchemeProperty
    * DOCUMENT ME!
    * 
    * @param cs
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * 
    * @return DOCUMENT ME!
    */
   public static String getColourName(ColourSchemeI cs)
   {
 
-    int index = 12;
+    int index = NONE;
 
     if (cs instanceof ClustalxColourScheme)
     {
@@ -209,7 +216,7 @@ public class ColourSchemeProperty
    * DOCUMENT ME!
    * 
    * @param index
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * 
    * @return DOCUMENT ME!
    */
@@ -291,9 +298,9 @@ public class ColourSchemeProperty
    * DOCUMENT ME!
    * 
    * @param al
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * @param name
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * 
    * @return DOCUMENT ME!
    */
@@ -304,29 +311,48 @@ public class ColourSchemeProperty
   }
 
   /**
-   * DOCUMENT ME!
+   * retrieve or create colourscheme associated with name
    * 
    * @param seqs
-   *                DOCUMENT ME!
+   *          sequences to colour
    * @param width
-   *                DOCUMENT ME!
+   *          range of sequences to colour
    * @param name
-   *                DOCUMENT ME!
-   * 
-   * @return DOCUMENT ME!
+   *          colourscheme name, applet colour parameter specification, or
+   *          string to parse as colour for new coloursheme
+   * @return Valid Colourscheme
    */
   public static ColourSchemeI getColour(java.util.Vector seqs, int width,
           String name)
   {
     int colindex = getColourIndexFromName(name);
-    if (colindex > USER_DEFINED)
+    if (colindex == UNDEFINED)
     {
-      try
+      if (name.indexOf('=') == -1)
       {
-        return new UserColourScheme(name);
-      } catch (Exception e)
+        // try to build a colour from the string directly
+        try
+        {
+          return new UserColourScheme(name);
+        } catch (Exception e)
+        {
+          // System.err.println("Ignoring unknown colourscheme name");
+        }
+      }
+      else
       {
-        // System.err.println("Ignoring unknown colourscheme name");
+        // try to parse the string as a residue colourscheme
+        try
+        {
+          // fix the launchApp user defined coloursheme transfer bug
+          jalview.schemes.UserColourScheme ucs = new jalview.schemes.UserColourScheme(
+                  "white");
+          ucs.parseAppletParameter(name);
+
+        } catch (Exception e)
+        {
+          // System.err.println("Ignoring exception when parsing colourscheme as applet-parameter");
+        }
       }
     }
     return getColour(seqs, width, getColourIndexFromName(name));
@@ -336,11 +362,11 @@ public class ColourSchemeProperty
    * DOCUMENT ME!
    * 
    * @param seqs
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * @param width
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * @param index
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    * 
    * @return DOCUMENT ME!
    */