d27dcf012972f2a43fd081f4a29e20748803ec61
[jalview.git] / src / jalview / schemes / ColourSchemeProperty.java
1 /*\r
2 * Jalview - A Sequence Alignment Editor and Viewer\r
3 * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4 *\r
5 * This program is free software; you can redistribute it and/or\r
6 * modify it under the terms of the GNU General Public License\r
7 * as published by the Free Software Foundation; either version 2\r
8 * of the License, or (at your option) any later version.\r
9 *\r
10 * This program is distributed in the hope that it will be useful,\r
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 * GNU General Public License for more details.\r
14 *\r
15 * You should have received a copy of the GNU General Public License\r
16 * along with this program; if not, write to the Free Software\r
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18 */\r
19 package jalview.schemes;\r
20 \r
21 import java.awt.*;\r
22 /**\r
23  * DOCUMENT ME!\r
24  *\r
25  * @author $author$\r
26  * @version $Revision$\r
27  */\r
28 public class ColourSchemeProperty\r
29 {\r
30     /** DOCUMENT ME!! */\r
31     public static final int CLUSTAL = 0;\r
32 \r
33     /** DOCUMENT ME!! */\r
34     public static final int BLOSUM = 1;\r
35 \r
36     /** DOCUMENT ME!! */\r
37     public static final int PID = 2;\r
38 \r
39     /** DOCUMENT ME!! */\r
40     public static final int ZAPPO = 3;\r
41 \r
42     /** DOCUMENT ME!! */\r
43     public static final int HYDROPHOBIC = 4;\r
44 \r
45     /** DOCUMENT ME!! */\r
46     public static final int HELIX = 5;\r
47 \r
48     /** DOCUMENT ME!! */\r
49     public static final int STRAND = 6;\r
50 \r
51     /** DOCUMENT ME!! */\r
52     public static final int TURN = 7;\r
53 \r
54     /** DOCUMENT ME!! */\r
55     public static final int BURIED = 8;\r
56 \r
57     /** DOCUMENT ME!! */\r
58     public static final int NUCLEOTIDE = 9;\r
59 \r
60     /** DOCUMENT ME!! */\r
61     public static final int USER_DEFINED = 10;\r
62 \r
63     /** DOCUMENT ME!! */\r
64     public static final int NONE = 11;\r
65 \r
66     /**\r
67      * DOCUMENT ME!\r
68      *\r
69      * @param name DOCUMENT ME!\r
70      *\r
71      * @return DOCUMENT ME!\r
72      */\r
73     public static int getColourIndexFromName(String name)\r
74     {\r
75         int ret = 11;\r
76 \r
77         if (name.equalsIgnoreCase("Clustal"))\r
78         {\r
79             ret = CLUSTAL;\r
80         }\r
81         else if (name.equalsIgnoreCase("Blosum62"))\r
82         {\r
83             ret = BLOSUM;\r
84         }\r
85         else if (name.equalsIgnoreCase("% Identity"))\r
86         {\r
87             ret = PID;\r
88         }\r
89         else if (name.equalsIgnoreCase("Zappo"))\r
90         {\r
91             ret = ZAPPO;\r
92         }\r
93         else if (name.equalsIgnoreCase("Hydrophobic"))\r
94         {\r
95             ret = HYDROPHOBIC;\r
96         }\r
97         else if (name.equalsIgnoreCase("Helix Propensity"))\r
98         {\r
99             ret = HELIX;\r
100         }\r
101         else if (name.equalsIgnoreCase("Strand Propensity"))\r
102         {\r
103             ret = STRAND;\r
104         }\r
105         else if (name.equalsIgnoreCase("Turn Propensity"))\r
106         {\r
107             ret = TURN;\r
108         }\r
109         else if (name.equalsIgnoreCase("Buried Index"))\r
110         {\r
111             ret = BURIED;\r
112         }\r
113         else if (name.equalsIgnoreCase("Nucleotide"))\r
114         {\r
115             ret = NUCLEOTIDE;\r
116         }\r
117         else if (name.equalsIgnoreCase("User Defined"))\r
118         {\r
119             ret = USER_DEFINED;\r
120         }\r
121 \r
122         return ret;\r
123     }\r
124 \r
125     /**\r
126      * DOCUMENT ME!\r
127      *\r
128      * @param cs DOCUMENT ME!\r
129      *\r
130      * @return DOCUMENT ME!\r
131      */\r
132     public static String getColourName(ColourSchemeI cs)\r
133     {\r
134         if (cs instanceof ConservationColourScheme)\r
135         {\r
136             cs = ((ConservationColourScheme) cs).cs;\r
137         }\r
138 \r
139         int index = 11;\r
140 \r
141         if (cs instanceof ClustalxColourScheme)\r
142         {\r
143             index = CLUSTAL;\r
144         }\r
145         else if (cs instanceof Blosum62ColourScheme)\r
146         {\r
147             index = BLOSUM;\r
148         }\r
149         else if (cs instanceof PIDColourScheme)\r
150         {\r
151             index = PID;\r
152         }\r
153         else if (cs instanceof ZappoColourScheme)\r
154         {\r
155             index = ZAPPO;\r
156         }\r
157         else if (cs instanceof HydrophobicColourScheme)\r
158         {\r
159             index = HYDROPHOBIC;\r
160         }\r
161         else if (cs instanceof HelixColourScheme)\r
162         {\r
163             index = HELIX;\r
164         }\r
165         else if (cs instanceof StrandColourScheme)\r
166         {\r
167             index = STRAND;\r
168         }\r
169         else if (cs instanceof TurnColourScheme)\r
170         {\r
171             index = TURN;\r
172         }\r
173         else if (cs instanceof BuriedColourScheme)\r
174         {\r
175             index = BURIED;\r
176         }\r
177         else if (cs instanceof NucleotideColourScheme)\r
178         {\r
179             index = NUCLEOTIDE;\r
180         }\r
181         else if (cs instanceof UserColourScheme)\r
182         {\r
183             index = USER_DEFINED;\r
184         }\r
185 \r
186         return getColourName(index);\r
187     }\r
188 \r
189     /**\r
190      * DOCUMENT ME!\r
191      *\r
192      * @param index DOCUMENT ME!\r
193      *\r
194      * @return DOCUMENT ME!\r
195      */\r
196     public static String getColourName(int index)\r
197     {\r
198         String ret = null;\r
199 \r
200         switch (index)\r
201         {\r
202         case CLUSTAL:\r
203             ret = "Clustal";\r
204 \r
205             break;\r
206 \r
207         case BLOSUM:\r
208             ret = "Blosum62";\r
209 \r
210             break;\r
211 \r
212         case PID:\r
213             ret = "% Identity";\r
214 \r
215             break;\r
216 \r
217         case ZAPPO:\r
218             ret = "Zappo";\r
219 \r
220             break;\r
221 \r
222         case HYDROPHOBIC:\r
223             ret = "Hydrophobic";\r
224 \r
225             break;\r
226 \r
227         case HELIX:\r
228             ret = "Helix Propensity";\r
229 \r
230             break;\r
231 \r
232         case STRAND:\r
233             ret = "Strand Propensity";\r
234 \r
235             break;\r
236 \r
237         case TURN:\r
238             ret = "Turn Propensity";\r
239 \r
240             break;\r
241 \r
242         case BURIED:\r
243             ret = "Buried Index";\r
244 \r
245             break;\r
246 \r
247         case NUCLEOTIDE:\r
248             ret = "Nucleotide";\r
249 \r
250             break;\r
251 \r
252         case USER_DEFINED:\r
253             ret = "User Defined";\r
254 \r
255             break;\r
256 \r
257         default:\r
258             ret = "None";\r
259 \r
260             break;\r
261         }\r
262 \r
263         return ret;\r
264     }\r
265 \r
266     /**\r
267      * DOCUMENT ME!\r
268      *\r
269      * @param al DOCUMENT ME!\r
270      * @param name DOCUMENT ME!\r
271      *\r
272      * @return DOCUMENT ME!\r
273      */\r
274     public static ColourSchemeI getColour(jalview.datamodel.AlignmentI al,\r
275         String name)\r
276     {\r
277         return getColour(al.getSequences(), al.getWidth(), name);\r
278     }\r
279 \r
280     /**\r
281      * DOCUMENT ME!\r
282      *\r
283      * @param seqs DOCUMENT ME!\r
284      * @param width DOCUMENT ME!\r
285      * @param name DOCUMENT ME!\r
286      *\r
287      * @return DOCUMENT ME!\r
288      */\r
289     public static ColourSchemeI getColour(java.util.Vector seqs, int width,\r
290         String name)\r
291     {\r
292         return getColour(seqs, width, getColourIndexFromName(name));\r
293     }\r
294 \r
295     /**\r
296      * DOCUMENT ME!\r
297      *\r
298      * @param seqs DOCUMENT ME!\r
299      * @param width DOCUMENT ME!\r
300      * @param index DOCUMENT ME!\r
301      *\r
302      * @return DOCUMENT ME!\r
303      */\r
304     public static ColourSchemeI getColour(java.util.Vector seqs, int width,\r
305         int index)\r
306     {\r
307         ColourSchemeI cs = null;\r
308 \r
309         switch (index)\r
310         {\r
311         case CLUSTAL:\r
312             cs = new ClustalxColourScheme(seqs, width);\r
313 \r
314             break;\r
315 \r
316         case BLOSUM:\r
317             cs = new Blosum62ColourScheme();\r
318 \r
319             break;\r
320 \r
321         case PID:\r
322             cs = new PIDColourScheme();\r
323 \r
324             break;\r
325 \r
326         case ZAPPO:\r
327             cs = new ZappoColourScheme();\r
328 \r
329             break;\r
330 \r
331         case HYDROPHOBIC:\r
332             cs = new HydrophobicColourScheme();\r
333 \r
334             break;\r
335 \r
336         case HELIX:\r
337             cs = new HelixColourScheme();\r
338 \r
339             break;\r
340 \r
341         case STRAND:\r
342             cs = new StrandColourScheme();\r
343 \r
344             break;\r
345 \r
346         case TURN:\r
347             cs = new TurnColourScheme();\r
348 \r
349             break;\r
350 \r
351         case BURIED:\r
352             cs = new BuriedColourScheme();\r
353 \r
354             break;\r
355 \r
356         case NUCLEOTIDE:\r
357             cs = new NucleotideColourScheme();\r
358 \r
359             break;\r
360 \r
361         case USER_DEFINED:\r
362             cs = new UserColourScheme(new Color[0]);\r
363 \r
364             break;\r
365 \r
366         default:\r
367             break;\r
368         }\r
369 \r
370         return cs;\r
371     }\r
372 \r
373     public static Color getAWTColorFromName(String name)\r
374     {\r
375       Color col = null;\r
376       name = name.toLowerCase();\r
377       if(name.equals("black"))\r
378         col = Color.black;\r
379       else if(name.equals("blue"))\r
380         col = Color.blue;\r
381       else if(name.equals("cyan"))\r
382         col = Color.cyan;\r
383       else if(name.equals("darkGray"))\r
384         col = Color.darkGray;\r
385       else if(name.equals("gray"))\r
386         col = Color.gray;\r
387       else if(name.equals("green"))\r
388         col = Color.green;\r
389       else if(name.equals("lightGray"))\r
390         col = Color.lightGray;\r
391       else if(name.equals("magenta"))\r
392         col = Color.magenta;\r
393       else if(name.equals("orange"))\r
394         col = Color.orange;\r
395       else if(name.equals("pink"))\r
396         col = Color.pink;\r
397       else if(name.equals("red"))\r
398         col = Color.red;\r
399       else if(name.equals("white"))\r
400         col = Color.white;\r
401       else if(name.equals("yellow"))\r
402         col = Color.yellow;\r
403 \r
404       return col;\r
405     }\r
406 }\r