bugfix for transfer of user defined colourscheme from applet to application via jnlp...
[jalview.git] / src / jalview / schemes / ColourSchemeProperty.java
index ef2feac..6fc4e2b 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 (Version 2.4)
+ * Copyright (C) 2008 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,9 +67,12 @@ 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!
    * 
@@ -80,7 +83,7 @@ public class ColourSchemeProperty
    */
   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;
   }
@@ -145,7 +152,7 @@ public class ColourSchemeProperty
   public static String getColourName(ColourSchemeI cs)
   {
 
-    int index = 12;
+    int index = NONE;
 
     if (cs instanceof ClustalxColourScheme)
     {
@@ -304,22 +311,18 @@ public class ColourSchemeProperty
   }
 
   /**
-   * DOCUMENT ME!
-   * 
-   * @param seqs
-   *                DOCUMENT ME!
-   * @param width
-   *                DOCUMENT ME!
-   * @param name
-   *                DOCUMENT ME!
+   * retrieve or create colourscheme associated with name
    * 
-   * @return DOCUMENT ME!
+   * @param seqs sequences to colour
+   * @param width range of sequences to colour
+   * @param name 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) // USER_DEFINED)
     {
       try
       {
@@ -328,6 +331,16 @@ public class ColourSchemeProperty
       {
         // System.err.println("Ignoring unknown colourscheme name");
       }
+      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));
   }