-/*\r
- * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\r
- */\r
-package jalview.schemes;\r
-\r
-import java.awt.*;\r
-\r
-/**\r
- * DOCUMENT ME!\r
- *\r
- * @author $author$\r
- * @version $Revision$\r
- */\r
-public class ColourSchemeProperty\r
-{\r
- /** DOCUMENT ME!! */\r
- public static final int CLUSTAL = 0;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int BLOSUM = 1;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int PID = 2;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int ZAPPO = 3;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int TAYLOR = 4;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int HYDROPHOBIC = 5;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int HELIX = 6;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int STRAND = 7;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int TURN = 8;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int BURIED = 9;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int NUCLEOTIDE = 10;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int USER_DEFINED = 11;\r
-\r
- /** DOCUMENT ME!! */\r
- public static final int NONE = 12;\r
-\r
- /**\r
- * DOCUMENT ME!\r
- *\r
- * @param name DOCUMENT ME!\r
- *\r
- * @return DOCUMENT ME!\r
- */\r
- public static int getColourIndexFromName(String name)\r
- {\r
- int ret = 12;\r
-\r
- if (name.equalsIgnoreCase("Clustal"))\r
- {\r
- ret = CLUSTAL;\r
- }\r
- else if (name.equalsIgnoreCase("Blosum62"))\r
- {\r
- ret = BLOSUM;\r
- }\r
- else if (name.equalsIgnoreCase("% Identity"))\r
- {\r
- ret = PID;\r
- }\r
- else if (name.equalsIgnoreCase("Zappo"))\r
- {\r
- ret = ZAPPO;\r
- }\r
- else if (name.equalsIgnoreCase("Taylor"))\r
- {\r
- ret = TAYLOR;\r
- }\r
- else if (name.equalsIgnoreCase("Hydrophobic"))\r
- {\r
- ret = HYDROPHOBIC;\r
- }\r
- else if (name.equalsIgnoreCase("Helix Propensity"))\r
- {\r
- ret = HELIX;\r
- }\r
- else if (name.equalsIgnoreCase("Strand Propensity"))\r
- {\r
- ret = STRAND;\r
- }\r
- else if (name.equalsIgnoreCase("Turn Propensity"))\r
- {\r
- ret = TURN;\r
- }\r
- else if (name.equalsIgnoreCase("Buried Index"))\r
- {\r
- ret = BURIED;\r
- }\r
- else if (name.equalsIgnoreCase("Nucleotide"))\r
- {\r
- ret = NUCLEOTIDE;\r
- }\r
- else if (name.equalsIgnoreCase("User Defined"))\r
- {\r
- ret = USER_DEFINED;\r
- }\r
-\r
- return ret;\r
- }\r
-\r
- /**\r
- * DOCUMENT ME!\r
- *\r
- * @param cs DOCUMENT ME!\r
- *\r
- * @return DOCUMENT ME!\r
- */\r
- public static String getColourName(ColourSchemeI cs)\r
- {\r
-\r
- int index = 12;\r
-\r
- if (cs instanceof ClustalxColourScheme)\r
- {\r
- index = CLUSTAL;\r
- }\r
- else if (cs instanceof Blosum62ColourScheme)\r
- {\r
- index = BLOSUM;\r
- }\r
- else if (cs instanceof PIDColourScheme)\r
- {\r
- index = PID;\r
- }\r
- else if (cs instanceof ZappoColourScheme)\r
- {\r
- index = ZAPPO;\r
- }\r
- else if (cs instanceof TaylorColourScheme)\r
- {\r
- index = TAYLOR;\r
- }\r
- else if (cs instanceof HydrophobicColourScheme)\r
- {\r
- index = HYDROPHOBIC;\r
- }\r
- else if (cs instanceof HelixColourScheme)\r
- {\r
- index = HELIX;\r
- }\r
- else if (cs instanceof StrandColourScheme)\r
- {\r
- index = STRAND;\r
- }\r
- else if (cs instanceof TurnColourScheme)\r
- {\r
- index = TURN;\r
- }\r
- else if (cs instanceof BuriedColourScheme)\r
- {\r
- index = BURIED;\r
- }\r
- else if (cs instanceof NucleotideColourScheme)\r
- {\r
- index = NUCLEOTIDE;\r
- }\r
- else if (cs instanceof UserColourScheme)\r
- {\r
- index = USER_DEFINED;\r
- }\r
-\r
- return getColourName(index);\r
- }\r
-\r
- /**\r
- * DOCUMENT ME!\r
- *\r
- * @param index DOCUMENT ME!\r
- *\r
- * @return DOCUMENT ME!\r
- */\r
- public static String getColourName(int index)\r
- {\r
- String ret = null;\r
-\r
- switch (index)\r
- {\r
- case CLUSTAL:\r
- ret = "Clustal";\r
-\r
- break;\r
-\r
- case BLOSUM:\r
- ret = "Blosum62";\r
-\r
- break;\r
-\r
- case PID:\r
- ret = "% Identity";\r
-\r
- break;\r
-\r
- case ZAPPO:\r
- ret = "Zappo";\r
-\r
- break;\r
-\r
- case TAYLOR:\r
- ret = "Taylor";\r
- break;\r
-\r
- case HYDROPHOBIC:\r
- ret = "Hydrophobic";\r
-\r
- break;\r
-\r
- case HELIX:\r
- ret = "Helix Propensity";\r
-\r
- break;\r
-\r
- case STRAND:\r
- ret = "Strand Propensity";\r
-\r
- break;\r
-\r
- case TURN:\r
- ret = "Turn Propensity";\r
-\r
- break;\r
-\r
- case BURIED:\r
- ret = "Buried Index";\r
-\r
- break;\r
-\r
- case NUCLEOTIDE:\r
- ret = "Nucleotide";\r
-\r
- break;\r
-\r
- case USER_DEFINED:\r
- ret = "User Defined";\r
-\r
- break;\r
-\r
- default:\r
- ret = "None";\r
-\r
- break;\r
- }\r
-\r
- return ret;\r
- }\r
-\r
- /**\r
- * DOCUMENT ME!\r
- *\r
- * @param al DOCUMENT ME!\r
- * @param name DOCUMENT ME!\r
- *\r
- * @return DOCUMENT ME!\r
- */\r
- public static ColourSchemeI getColour(jalview.datamodel.AlignmentI al,\r
- String name)\r
- {\r
- return getColour(al.getSequences(), al.getWidth(), name);\r
- }\r
-\r
- /**\r
- * DOCUMENT ME!\r
- *\r
- * @param seqs DOCUMENT ME!\r
- * @param width DOCUMENT ME!\r
- * @param name DOCUMENT ME!\r
- *\r
- * @return DOCUMENT ME!\r
- */\r
- public static ColourSchemeI getColour(java.util.Vector seqs, int width,\r
- String name)\r
- {\r
- return getColour(seqs, width, getColourIndexFromName(name));\r
- }\r
-\r
- /**\r
- * DOCUMENT ME!\r
- *\r
- * @param seqs DOCUMENT ME!\r
- * @param width DOCUMENT ME!\r
- * @param index DOCUMENT ME!\r
- *\r
- * @return DOCUMENT ME!\r
- */\r
- public static ColourSchemeI getColour(java.util.Vector seqs, int width,\r
- int index)\r
- {\r
- ColourSchemeI cs = null;\r
-\r
- switch (index)\r
- {\r
- case CLUSTAL:\r
- cs = new ClustalxColourScheme(seqs, width);\r
-\r
- break;\r
-\r
- case BLOSUM:\r
- cs = new Blosum62ColourScheme();\r
-\r
- break;\r
-\r
- case PID:\r
- cs = new PIDColourScheme();\r
-\r
- break;\r
-\r
- case ZAPPO:\r
- cs = new ZappoColourScheme();\r
-\r
- break;\r
-\r
- case TAYLOR:\r
- cs = new TaylorColourScheme();\r
- break;\r
-\r
- case HYDROPHOBIC:\r
- cs = new HydrophobicColourScheme();\r
-\r
- break;\r
-\r
- case HELIX:\r
- cs = new HelixColourScheme();\r
-\r
- break;\r
-\r
- case STRAND:\r
- cs = new StrandColourScheme();\r
-\r
- break;\r
-\r
- case TURN:\r
- cs = new TurnColourScheme();\r
-\r
- break;\r
-\r
- case BURIED:\r
- cs = new BuriedColourScheme();\r
-\r
- break;\r
-\r
- case NUCLEOTIDE:\r
- cs = new NucleotideColourScheme();\r
-\r
- break;\r
-\r
- case USER_DEFINED:\r
- Color[] col = new Color[24];\r
- for (int i = 0; i < 24; i++)\r
- {\r
- col[i] = Color.white;\r
- }\r
- cs = new UserColourScheme(col);\r
- break;\r
-\r
- default:\r
- break;\r
- }\r
-\r
- return cs;\r
- }\r
-\r
- public static Color getAWTColorFromName(String name)\r
- {\r
- Color col = null;\r
- name = name.toLowerCase();\r
- if (name.equals("black"))\r
- {\r
- col = Color.black;\r
- }\r
- else if (name.equals("blue"))\r
- {\r
- col = Color.blue;\r
- }\r
- else if (name.equals("cyan"))\r
- {\r
- col = Color.cyan;\r
- }\r
- else if (name.equals("darkGray"))\r
- {\r
- col = Color.darkGray;\r
- }\r
- else if (name.equals("gray"))\r
- {\r
- col = Color.gray;\r
- }\r
- else if (name.equals("green"))\r
- {\r
- col = Color.green;\r
- }\r
- else if (name.equals("lightGray"))\r
- {\r
- col = Color.lightGray;\r
- }\r
- else if (name.equals("magenta"))\r
- {\r
- col = Color.magenta;\r
- }\r
- else if (name.equals("orange"))\r
- {\r
- col = Color.orange;\r
- }\r
- else if (name.equals("pink"))\r
- {\r
- col = Color.pink;\r
- }\r
- else if (name.equals("red"))\r
- {\r
- col = Color.red;\r
- }\r
- else if (name.equals("white"))\r
- {\r
- col = Color.white;\r
- }\r
- else if (name.equals("yellow"))\r
- {\r
- col = Color.yellow;\r
- }\r
-\r
- return col;\r
- }\r
-}\r
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer
+ * Copyright (C) 2007 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
+ */
+package jalview.schemes;
+
+import java.awt.*;
+
+/**
+ * ColourSchemeProperty Binds names to hardwired colourschemes and tries to deal
+ * intelligently with mapping unknown names to user defined colourschemes (that
+ * exist or can be created from the string representation of the colourscheme
+ * name - either a hex RGB triplet or a named colour under java.awt.color )
+ *
+ * @author $author$
+ * @version $Revision$
+ */
+public class ColourSchemeProperty
+{
+ /** DOCUMENT ME!! */
+ public static final int CLUSTAL = 0;
+
+ /** DOCUMENT ME!! */
+ public static final int BLOSUM = 1;
+
+ /** DOCUMENT ME!! */
+ public static final int PID = 2;
+
+ /** DOCUMENT ME!! */
+ public static final int ZAPPO = 3;
+
+ /** DOCUMENT ME!! */
+ public static final int TAYLOR = 4;
+
+ /** DOCUMENT ME!! */
+ public static final int HYDROPHOBIC = 5;
+
+ /** DOCUMENT ME!! */
+ public static final int HELIX = 6;
+
+ /** DOCUMENT ME!! */
+ public static final int STRAND = 7;
+
+ /** DOCUMENT ME!! */
+ public static final int TURN = 8;
+
+ /** DOCUMENT ME!! */
+ public static final int BURIED = 9;
+
+ /** DOCUMENT ME!! */
+ public static final int NUCLEOTIDE = 10;
+
+ /** DOCUMENT ME!! */
+ public static final int USER_DEFINED = 11;
+
+ /** DOCUMENT ME!! */
+ public static final int NONE = 12;
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param name
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public static int getColourIndexFromName(String name)
+ {
+ int ret = 12;
+
+ if (name.equalsIgnoreCase("Clustal"))
+ {
+ ret = CLUSTAL;
+ }
+ else if (name.equalsIgnoreCase("Blosum62"))
+ {
+ ret = BLOSUM;
+ }
+ else if (name.equalsIgnoreCase("% Identity"))
+ {
+ ret = PID;
+ }
+ else if (name.equalsIgnoreCase("Zappo"))
+ {
+ ret = ZAPPO;
+ }
+ else if (name.equalsIgnoreCase("Taylor"))
+ {
+ ret = TAYLOR;
+ }
+ else if (name.equalsIgnoreCase("Hydrophobic"))
+ {
+ ret = HYDROPHOBIC;
+ }
+ else if (name.equalsIgnoreCase("Helix Propensity"))
+ {
+ ret = HELIX;
+ }
+ else if (name.equalsIgnoreCase("Strand Propensity"))
+ {
+ ret = STRAND;
+ }
+ else if (name.equalsIgnoreCase("Turn Propensity"))
+ {
+ ret = TURN;
+ }
+ else if (name.equalsIgnoreCase("Buried Index"))
+ {
+ ret = BURIED;
+ }
+ else if (name.equalsIgnoreCase("Nucleotide"))
+ {
+ ret = NUCLEOTIDE;
+ }
+ else if (name.equalsIgnoreCase("User Defined"))
+ {
+ ret = USER_DEFINED;
+ }
+
+ return ret;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param cs
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public static String getColourName(ColourSchemeI cs)
+ {
+
+ int index = 12;
+
+ if (cs instanceof ClustalxColourScheme)
+ {
+ index = CLUSTAL;
+ }
+ else if (cs instanceof Blosum62ColourScheme)
+ {
+ index = BLOSUM;
+ }
+ else if (cs instanceof PIDColourScheme)
+ {
+ index = PID;
+ }
+ else if (cs instanceof ZappoColourScheme)
+ {
+ index = ZAPPO;
+ }
+ else if (cs instanceof TaylorColourScheme)
+ {
+ index = TAYLOR;
+ }
+ else if (cs instanceof HydrophobicColourScheme)
+ {
+ index = HYDROPHOBIC;
+ }
+ else if (cs instanceof HelixColourScheme)
+ {
+ index = HELIX;
+ }
+ else if (cs instanceof StrandColourScheme)
+ {
+ index = STRAND;
+ }
+ else if (cs instanceof TurnColourScheme)
+ {
+ index = TURN;
+ }
+ else if (cs instanceof BuriedColourScheme)
+ {
+ index = BURIED;
+ }
+ else if (cs instanceof NucleotideColourScheme)
+ {
+ index = NUCLEOTIDE;
+ }
+ else if (cs instanceof UserColourScheme)
+ {
+ if ((((UserColourScheme) cs).getName() != null)
+ && (((UserColourScheme) cs).getName().length() > 0))
+ {
+ return ((UserColourScheme) cs).getName();
+ }
+ // get default colourscheme name
+ index = USER_DEFINED;
+ }
+
+ return getColourName(index);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param index
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public static String getColourName(int index)
+ {
+ String ret = null;
+
+ switch (index)
+ {
+ case CLUSTAL:
+ ret = "Clustal";
+
+ break;
+
+ case BLOSUM:
+ ret = "Blosum62";
+
+ break;
+
+ case PID:
+ ret = "% Identity";
+
+ break;
+
+ case ZAPPO:
+ ret = "Zappo";
+
+ break;
+
+ case TAYLOR:
+ ret = "Taylor";
+ break;
+
+ case HYDROPHOBIC:
+ ret = "Hydrophobic";
+
+ break;
+
+ case HELIX:
+ ret = "Helix Propensity";
+
+ break;
+
+ case STRAND:
+ ret = "Strand Propensity";
+
+ break;
+
+ case TURN:
+ ret = "Turn Propensity";
+
+ break;
+
+ case BURIED:
+ ret = "Buried Index";
+
+ break;
+
+ case NUCLEOTIDE:
+ ret = "Nucleotide";
+
+ break;
+
+ case USER_DEFINED:
+ ret = "User Defined";
+
+ break;
+
+ default:
+ ret = "None";
+
+ break;
+ }
+
+ return ret;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param al
+ * DOCUMENT ME!
+ * @param name
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public static ColourSchemeI getColour(jalview.datamodel.AlignmentI al,
+ String name)
+ {
+ return getColour(al.getSequences(), al.getWidth(), name);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param seqs
+ * DOCUMENT ME!
+ * @param width
+ * DOCUMENT ME!
+ * @param name
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public static ColourSchemeI getColour(java.util.Vector seqs, int width,
+ String name)
+ {
+ int colindex = getColourIndexFromName(name);
+ if (colindex > USER_DEFINED)
+ {
+ try
+ {
+ return new UserColourScheme(name);
+ } catch (Exception e)
+ {
+ // System.err.println("Ignoring unknown colourscheme name");
+ }
+ }
+ return getColour(seqs, width, getColourIndexFromName(name));
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param seqs
+ * DOCUMENT ME!
+ * @param width
+ * DOCUMENT ME!
+ * @param index
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public static ColourSchemeI getColour(java.util.Vector seqs, int width,
+ int index)
+ {
+ ColourSchemeI cs = null;
+
+ switch (index)
+ {
+ case CLUSTAL:
+ cs = new ClustalxColourScheme(seqs, width);
+
+ break;
+
+ case BLOSUM:
+ cs = new Blosum62ColourScheme();
+
+ break;
+
+ case PID:
+ cs = new PIDColourScheme();
+
+ break;
+
+ case ZAPPO:
+ cs = new ZappoColourScheme();
+
+ break;
+
+ case TAYLOR:
+ cs = new TaylorColourScheme();
+ break;
+
+ case HYDROPHOBIC:
+ cs = new HydrophobicColourScheme();
+
+ break;
+
+ case HELIX:
+ cs = new HelixColourScheme();
+
+ break;
+
+ case STRAND:
+ cs = new StrandColourScheme();
+
+ break;
+
+ case TURN:
+ cs = new TurnColourScheme();
+
+ break;
+
+ case BURIED:
+ cs = new BuriedColourScheme();
+
+ break;
+
+ case NUCLEOTIDE:
+ cs = new NucleotideColourScheme();
+
+ break;
+
+ case USER_DEFINED:
+ Color[] col = new Color[24];
+ for (int i = 0; i < 24; i++)
+ {
+ col[i] = Color.white;
+ }
+ cs = new UserColourScheme(col);
+ break;
+
+ default:
+ break;
+ }
+
+ return cs;
+ }
+
+ public static Color getAWTColorFromName(String name)
+ {
+ Color col = null;
+ name = name.toLowerCase();
+ if (name.equals("black"))
+ {
+ col = Color.black;
+ }
+ else if (name.equals("blue"))
+ {
+ col = Color.blue;
+ }
+ else if (name.equals("cyan"))
+ {
+ col = Color.cyan;
+ }
+ else if (name.equals("darkGray"))
+ {
+ col = Color.darkGray;
+ }
+ else if (name.equals("gray"))
+ {
+ col = Color.gray;
+ }
+ else if (name.equals("green"))
+ {
+ col = Color.green;
+ }
+ else if (name.equals("lightGray"))
+ {
+ col = Color.lightGray;
+ }
+ else if (name.equals("magenta"))
+ {
+ col = Color.magenta;
+ }
+ else if (name.equals("orange"))
+ {
+ col = Color.orange;
+ }
+ else if (name.equals("pink"))
+ {
+ col = Color.pink;
+ }
+ else if (name.equals("red"))
+ {
+ col = Color.red;
+ }
+ else if (name.equals("white"))
+ {
+ col = Color.white;
+ }
+ else if (name.equals("yellow"))
+ {
+ col = Color.yellow;
+ }
+
+ return col;
+ }
+}
-/*\r
- * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\r
- */\r
-package jalview.schemes;\r
-\r
-import java.util.*;\r
-\r
-import java.awt.*;\r
-\r
-public class UserColourScheme\r
- extends ResidueColourScheme\r
-{\r
- Color[] lowerCaseColours;\r
-\r
- protected String schemeName;\r
-\r
- public UserColourScheme()\r
- {}\r
-\r
- public UserColourScheme(Color[] newColors)\r
- {\r
- colors = newColors;\r
- }\r
-\r
- public UserColourScheme(String colour)\r
- {\r
- Color col = getColourFromString(colour);\r
-\r
- if (col == null)\r
- {\r
- System.out.println("Unknown colour!! " + colour);\r
- col = createColourFromName(colour);\r
- }\r
-\r
- colors = new Color[24];\r
- for (int i = 0; i < 24; i++)\r
- {\r
- colors[i] = col;\r
- }\r
- }\r
-\r
- public Color[] getColours()\r
- {\r
- return colors;\r
- }\r
-\r
- public Color[] getLowerCaseColours()\r
- {\r
- return lowerCaseColours;\r
- }\r
-\r
- public void setName(String name)\r
- {\r
- schemeName = name;\r
- }\r
-\r
- public String getName()\r
- {\r
- return schemeName;\r
- }\r
-\r
- public Color getColourFromString(String colour)\r
- {\r
- colour = colour.trim();\r
-\r
- Color col = null;\r
- try\r
- {\r
- int value = Integer.parseInt(colour, 16);\r
- col = new Color(value);\r
- }\r
- catch (NumberFormatException ex)\r
- {}\r
-\r
- if (col == null)\r
- {\r
- col = ColourSchemeProperty.getAWTColorFromName(colour);\r
- }\r
-\r
- if (col == null)\r
- {\r
- try\r
- {\r
- java.util.StringTokenizer st = new java.util.StringTokenizer(colour,\r
- ",");\r
- int r = Integer.parseInt(st.nextToken());\r
- int g = Integer.parseInt(st.nextToken());\r
- int b = Integer.parseInt(st.nextToken());\r
- col = new Color(r, g, b);\r
- }\r
- catch (Exception ex)\r
- {}\r
- }\r
-\r
- return col;\r
-\r
- }\r
-\r
- public Color createColourFromName(String name)\r
- {\r
- int r, g, b;\r
-\r
- int lsize = name.length();\r
- int start = 0, end = lsize / 3;\r
-\r
- int rgbOffset = Math.abs(name.hashCode() % 10) * 15;\r
-\r
- r = Math.abs(name.substring(start, end).hashCode() + rgbOffset) % 210 + 20;\r
- start = end;\r
- end += lsize / 3;\r
- if (end > lsize)\r
- {\r
- end = lsize;\r
- }\r
-\r
- g = Math.abs(name.substring(start, end).hashCode() + rgbOffset) % 210 + 20;\r
-\r
- b = Math.abs(name.substring(end).hashCode() + rgbOffset) % 210 + 20;\r
-\r
- Color color = new Color(r, g, b);\r
-\r
- return color;\r
- }\r
-\r
- public void parseAppletParameter(String paramValue)\r
- {\r
- StringTokenizer st = new StringTokenizer(paramValue, ";");\r
- StringTokenizer st2;\r
- String token = null, colour, residues;\r
- try\r
- {\r
- while (st.hasMoreElements())\r
- {\r
- token = st.nextToken().trim();\r
- residues = token.substring(0, token.indexOf("="));\r
- colour = token.substring(token.indexOf("=") + 1);\r
-\r
- st2 = new StringTokenizer(residues, " ,");\r
- while (st2.hasMoreTokens())\r
- {\r
- token = st2.nextToken();\r
-\r
- if (ResidueProperties.aaIndex[token.charAt(0)] == -1)\r
- {\r
- continue;\r
- }\r
-\r
- int colIndex = ResidueProperties.aaIndex[token.charAt(0)];\r
-\r
- if (token.equalsIgnoreCase("lowerCase"))\r
- {\r
- if (lowerCaseColours == null)\r
- {\r
- lowerCaseColours = new Color[23];\r
- }\r
- for (int i = 0; i < 23; i++)\r
- {\r
- if (lowerCaseColours[i] == null)\r
- {\r
- lowerCaseColours[i] = getColourFromString(colour);\r
- }\r
- }\r
-\r
- continue;\r
- }\r
-\r
- if (token.equals(token.toLowerCase()))\r
- {\r
- if (lowerCaseColours == null)\r
- {\r
- lowerCaseColours = new Color[23];\r
- }\r
- lowerCaseColours[colIndex] = getColourFromString(colour);\r
- }\r
- else\r
- {\r
- colors[colIndex] = getColourFromString(colour);\r
- }\r
- }\r
- }\r
- }\r
- catch (Exception ex)\r
- {\r
- System.out.println("Error parsing userDefinedColours:\n"\r
- + token + "\n" + ex);\r
- }\r
-\r
- }\r
-\r
- public Color findColour(char c, int j)\r
- {\r
- Color currentColour;\r
- int index = ResidueProperties.aaIndex[c];\r
-\r
- if ( (threshold == 0) || aboveThreshold(c, j))\r
- {\r
- if (lowerCaseColours != null && 'a' <= c && c <= 'z')\r
- {\r
- currentColour = lowerCaseColours[index];\r
- }\r
- else\r
- {\r
- currentColour = colors[index];\r
- }\r
- }\r
- else\r
- {\r
- currentColour = Color.white;\r
- }\r
-\r
- if (conservationColouring)\r
- {\r
- currentColour = applyConservation(currentColour, j);\r
- }\r
-\r
- return currentColour;\r
- }\r
-\r
- public void setLowerCaseColours(Color[] lcolours)\r
- {\r
- lowerCaseColours = lcolours;\r
- }\r
-\r
-}\r
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer
+ * Copyright (C) 2007 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
+ */
+package jalview.schemes;
+
+import java.util.*;
+
+import java.awt.*;
+
+public class UserColourScheme
+ extends ResidueColourScheme
+{
+ Color[] lowerCaseColours;
+
+ protected String schemeName;
+
+ public UserColourScheme()
+ {}
+
+ public UserColourScheme(Color[] newColors)
+ {
+ colors = newColors;
+ }
+
+ public UserColourScheme(String colour)
+ {
+ Color col = getColourFromString(colour);
+
+ if (col == null)
+ {
+ System.out.println("Unknown colour!! " + colour);
+ col = createColourFromName(colour);
+ }
+
+ colors = new Color[24];
+ for (int i = 0; i < 24; i++)
+ {
+ colors[i] = col;
+ }
+ schemeName = colour;
+ }
+
+ public Color[] getColours()
+ {
+ return colors;
+ }
+
+ public Color[] getLowerCaseColours()
+ {
+ return lowerCaseColours;
+ }
+
+ public void setName(String name)
+ {
+ schemeName = name;
+ }
+
+ public String getName()
+ {
+ return schemeName;
+ }
+
+ public Color getColourFromString(String colour)
+ {
+ colour = colour.trim();
+
+ Color col = null;
+ try
+ {
+ int value = Integer.parseInt(colour, 16);
+ col = new Color(value);
+ }
+ catch (NumberFormatException ex)
+ {}
+
+ if (col == null)
+ {
+ col = ColourSchemeProperty.getAWTColorFromName(colour);
+ }
+
+ if (col == null)
+ {
+ try
+ {
+ java.util.StringTokenizer st = new java.util.StringTokenizer(colour,
+ ",");
+ int r = Integer.parseInt(st.nextToken());
+ int g = Integer.parseInt(st.nextToken());
+ int b = Integer.parseInt(st.nextToken());
+ col = new Color(r, g, b);
+ }
+ catch (Exception ex)
+ {}
+ }
+
+ return col;
+
+ }
+
+ public Color createColourFromName(String name)
+ {
+ int r, g, b;
+
+ int lsize = name.length();
+ int start = 0, end = lsize / 3;
+
+ int rgbOffset = Math.abs(name.hashCode() % 10) * 15;
+
+ r = Math.abs(name.substring(start, end).hashCode() + rgbOffset) % 210 + 20;
+ start = end;
+ end += lsize / 3;
+ if (end > lsize)
+ {
+ end = lsize;
+ }
+
+ g = Math.abs(name.substring(start, end).hashCode() + rgbOffset) % 210 + 20;
+
+ b = Math.abs(name.substring(end).hashCode() + rgbOffset) % 210 + 20;
+
+ Color color = new Color(r, g, b);
+
+ return color;
+ }
+
+ public void parseAppletParameter(String paramValue)
+ {
+ StringTokenizer st = new StringTokenizer(paramValue, ";");
+ StringTokenizer st2;
+ String token = null, colour, residues;
+ try
+ {
+ while (st.hasMoreElements())
+ {
+ token = st.nextToken().trim();
+ residues = token.substring(0, token.indexOf("="));
+ colour = token.substring(token.indexOf("=") + 1);
+
+ st2 = new StringTokenizer(residues, " ,");
+ while (st2.hasMoreTokens())
+ {
+ token = st2.nextToken();
+
+ if (ResidueProperties.aaIndex[token.charAt(0)] == -1)
+ {
+ continue;
+ }
+
+ int colIndex = ResidueProperties.aaIndex[token.charAt(0)];
+
+ if (token.equalsIgnoreCase("lowerCase"))
+ {
+ if (lowerCaseColours == null)
+ {
+ lowerCaseColours = new Color[23];
+ }
+ for (int i = 0; i < 23; i++)
+ {
+ if (lowerCaseColours[i] == null)
+ {
+ lowerCaseColours[i] = getColourFromString(colour);
+ }
+ }
+
+ continue;
+ }
+
+ if (token.equals(token.toLowerCase()))
+ {
+ if (lowerCaseColours == null)
+ {
+ lowerCaseColours = new Color[23];
+ }
+ lowerCaseColours[colIndex] = getColourFromString(colour);
+ }
+ else
+ {
+ colors[colIndex] = getColourFromString(colour);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ System.out.println("Error parsing userDefinedColours:\n"
+ + token + "\n" + ex);
+ }
+
+ }
+
+ public Color findColour(char c, int j)
+ {
+ Color currentColour;
+ int index = ResidueProperties.aaIndex[c];
+
+ if ( (threshold == 0) || aboveThreshold(c, j))
+ {
+ if (lowerCaseColours != null && 'a' <= c && c <= 'z')
+ {
+ currentColour = lowerCaseColours[index];
+ }
+ else
+ {
+ currentColour = colors[index];
+ }
+ }
+ else
+ {
+ currentColour = Color.white;
+ }
+
+ if (conservationColouring)
+ {
+ currentColour = applyConservation(currentColour, j);
+ }
+
+ return currentColour;
+ }
+
+ public void setLowerCaseColours(Color[] lcolours)
+ {
+ lowerCaseColours = lcolours;
+ }
+
+}