d3325cadb068cff3d0541e0a03ed0c41a8af3080
[jalview.git] / src / jalview / schemes / ColourSchemeProperty.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer\r
3  * Copyright (C) 2007 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 /**\r
24  * DOCUMENT ME!\r
25  *\r
26  * @author $author$\r
27  * @version $Revision$\r
28  */\r
29 public class ColourSchemeProperty\r
30 {\r
31   /** DOCUMENT ME!! */\r
32   public static final int CLUSTAL = 0;\r
33 \r
34   /** DOCUMENT ME!! */\r
35   public static final int BLOSUM = 1;\r
36 \r
37   /** DOCUMENT ME!! */\r
38   public static final int PID = 2;\r
39 \r
40   /** DOCUMENT ME!! */\r
41   public static final int ZAPPO = 3;\r
42 \r
43   /** DOCUMENT ME!! */\r
44   public static final int TAYLOR = 4;\r
45 \r
46   /** DOCUMENT ME!! */\r
47   public static final int HYDROPHOBIC = 5;\r
48 \r
49   /** DOCUMENT ME!! */\r
50   public static final int HELIX = 6;\r
51 \r
52   /** DOCUMENT ME!! */\r
53   public static final int STRAND = 7;\r
54 \r
55   /** DOCUMENT ME!! */\r
56   public static final int TURN = 8;\r
57 \r
58   /** DOCUMENT ME!! */\r
59   public static final int BURIED = 9;\r
60 \r
61   /** DOCUMENT ME!! */\r
62   public static final int NUCLEOTIDE = 10;\r
63 \r
64   /** DOCUMENT ME!! */\r
65   public static final int USER_DEFINED = 11;\r
66 \r
67   /** DOCUMENT ME!! */\r
68   public static final int NONE = 12;\r
69 \r
70   /**\r
71    * DOCUMENT ME!\r
72    *\r
73    * @param name DOCUMENT ME!\r
74    *\r
75    * @return DOCUMENT ME!\r
76    */\r
77   public static int getColourIndexFromName(String name)\r
78   {\r
79     int ret = 12;\r
80 \r
81     if (name.equalsIgnoreCase("Clustal"))\r
82     {\r
83       ret = CLUSTAL;\r
84     }\r
85     else if (name.equalsIgnoreCase("Blosum62"))\r
86     {\r
87       ret = BLOSUM;\r
88     }\r
89     else if (name.equalsIgnoreCase("% Identity"))\r
90     {\r
91       ret = PID;\r
92     }\r
93     else if (name.equalsIgnoreCase("Zappo"))\r
94     {\r
95       ret = ZAPPO;\r
96     }\r
97     else if (name.equalsIgnoreCase("Taylor"))\r
98     {\r
99       ret = TAYLOR;\r
100     }\r
101     else if (name.equalsIgnoreCase("Hydrophobic"))\r
102     {\r
103       ret = HYDROPHOBIC;\r
104     }\r
105     else if (name.equalsIgnoreCase("Helix Propensity"))\r
106     {\r
107       ret = HELIX;\r
108     }\r
109     else if (name.equalsIgnoreCase("Strand Propensity"))\r
110     {\r
111       ret = STRAND;\r
112     }\r
113     else if (name.equalsIgnoreCase("Turn Propensity"))\r
114     {\r
115       ret = TURN;\r
116     }\r
117     else if (name.equalsIgnoreCase("Buried Index"))\r
118     {\r
119       ret = BURIED;\r
120     }\r
121     else if (name.equalsIgnoreCase("Nucleotide"))\r
122     {\r
123       ret = NUCLEOTIDE;\r
124     }\r
125     else if (name.equalsIgnoreCase("User Defined"))\r
126     {\r
127       ret = USER_DEFINED;\r
128     }\r
129 \r
130     return ret;\r
131   }\r
132 \r
133   /**\r
134    * DOCUMENT ME!\r
135    *\r
136    * @param cs DOCUMENT ME!\r
137    *\r
138    * @return DOCUMENT ME!\r
139    */\r
140   public static String getColourName(ColourSchemeI cs)\r
141   {\r
142 \r
143     int index = 12;\r
144 \r
145     if (cs instanceof ClustalxColourScheme)\r
146     {\r
147       index = CLUSTAL;\r
148     }\r
149     else if (cs instanceof Blosum62ColourScheme)\r
150     {\r
151       index = BLOSUM;\r
152     }\r
153     else if (cs instanceof PIDColourScheme)\r
154     {\r
155       index = PID;\r
156     }\r
157     else if (cs instanceof ZappoColourScheme)\r
158     {\r
159       index = ZAPPO;\r
160     }\r
161     else if (cs instanceof TaylorColourScheme)\r
162     {\r
163       index = TAYLOR;\r
164     }\r
165     else if (cs instanceof HydrophobicColourScheme)\r
166     {\r
167       index = HYDROPHOBIC;\r
168     }\r
169     else if (cs instanceof HelixColourScheme)\r
170     {\r
171       index = HELIX;\r
172     }\r
173     else if (cs instanceof StrandColourScheme)\r
174     {\r
175       index = STRAND;\r
176     }\r
177     else if (cs instanceof TurnColourScheme)\r
178     {\r
179       index = TURN;\r
180     }\r
181     else if (cs instanceof BuriedColourScheme)\r
182     {\r
183       index = BURIED;\r
184     }\r
185     else if (cs instanceof NucleotideColourScheme)\r
186     {\r
187       index = NUCLEOTIDE;\r
188     }\r
189     else if (cs instanceof UserColourScheme)\r
190     {\r
191       index = USER_DEFINED;\r
192     }\r
193 \r
194     return getColourName(index);\r
195   }\r
196 \r
197   /**\r
198    * DOCUMENT ME!\r
199    *\r
200    * @param index DOCUMENT ME!\r
201    *\r
202    * @return DOCUMENT ME!\r
203    */\r
204   public static String getColourName(int index)\r
205   {\r
206     String ret = null;\r
207 \r
208     switch (index)\r
209     {\r
210       case CLUSTAL:\r
211         ret = "Clustal";\r
212 \r
213         break;\r
214 \r
215       case BLOSUM:\r
216         ret = "Blosum62";\r
217 \r
218         break;\r
219 \r
220       case PID:\r
221         ret = "% Identity";\r
222 \r
223         break;\r
224 \r
225       case ZAPPO:\r
226         ret = "Zappo";\r
227 \r
228         break;\r
229 \r
230       case TAYLOR:\r
231         ret = "Taylor";\r
232         break;\r
233 \r
234       case HYDROPHOBIC:\r
235         ret = "Hydrophobic";\r
236 \r
237         break;\r
238 \r
239       case HELIX:\r
240         ret = "Helix Propensity";\r
241 \r
242         break;\r
243 \r
244       case STRAND:\r
245         ret = "Strand Propensity";\r
246 \r
247         break;\r
248 \r
249       case TURN:\r
250         ret = "Turn Propensity";\r
251 \r
252         break;\r
253 \r
254       case BURIED:\r
255         ret = "Buried Index";\r
256 \r
257         break;\r
258 \r
259       case NUCLEOTIDE:\r
260         ret = "Nucleotide";\r
261 \r
262         break;\r
263 \r
264       case USER_DEFINED:\r
265         ret = "User Defined";\r
266 \r
267         break;\r
268 \r
269       default:\r
270         ret = "None";\r
271 \r
272         break;\r
273     }\r
274 \r
275     return ret;\r
276   }\r
277 \r
278   /**\r
279    * DOCUMENT ME!\r
280    *\r
281    * @param al DOCUMENT ME!\r
282    * @param name DOCUMENT ME!\r
283    *\r
284    * @return DOCUMENT ME!\r
285    */\r
286   public static ColourSchemeI getColour(jalview.datamodel.AlignmentI al,\r
287                                         String name)\r
288   {\r
289     return getColour(al.getSequences(), al.getWidth(), name);\r
290   }\r
291 \r
292   /**\r
293    * DOCUMENT ME!\r
294    *\r
295    * @param seqs DOCUMENT ME!\r
296    * @param width DOCUMENT ME!\r
297    * @param name DOCUMENT ME!\r
298    *\r
299    * @return DOCUMENT ME!\r
300    */\r
301   public static ColourSchemeI getColour(java.util.Vector seqs, int width,\r
302                                         String name)\r
303   {\r
304     return getColour(seqs, width, getColourIndexFromName(name));\r
305   }\r
306 \r
307   /**\r
308    * DOCUMENT ME!\r
309    *\r
310    * @param seqs DOCUMENT ME!\r
311    * @param width DOCUMENT ME!\r
312    * @param index DOCUMENT ME!\r
313    *\r
314    * @return DOCUMENT ME!\r
315    */\r
316   public static ColourSchemeI getColour(java.util.Vector seqs, int width,\r
317                                         int index)\r
318   {\r
319     ColourSchemeI cs = null;\r
320 \r
321     switch (index)\r
322     {\r
323       case CLUSTAL:\r
324         cs = new ClustalxColourScheme(seqs, width);\r
325 \r
326         break;\r
327 \r
328       case BLOSUM:\r
329         cs = new Blosum62ColourScheme();\r
330 \r
331         break;\r
332 \r
333       case PID:\r
334         cs = new PIDColourScheme();\r
335 \r
336         break;\r
337 \r
338       case ZAPPO:\r
339         cs = new ZappoColourScheme();\r
340 \r
341         break;\r
342 \r
343       case TAYLOR:\r
344         cs = new TaylorColourScheme();\r
345         break;\r
346 \r
347       case HYDROPHOBIC:\r
348         cs = new HydrophobicColourScheme();\r
349 \r
350         break;\r
351 \r
352       case HELIX:\r
353         cs = new HelixColourScheme();\r
354 \r
355         break;\r
356 \r
357       case STRAND:\r
358         cs = new StrandColourScheme();\r
359 \r
360         break;\r
361 \r
362       case TURN:\r
363         cs = new TurnColourScheme();\r
364 \r
365         break;\r
366 \r
367       case BURIED:\r
368         cs = new BuriedColourScheme();\r
369 \r
370         break;\r
371 \r
372       case NUCLEOTIDE:\r
373         cs = new NucleotideColourScheme();\r
374 \r
375         break;\r
376 \r
377       case USER_DEFINED:\r
378         Color[] col = new Color[24];\r
379         for (int i = 0; i < 24; i++)\r
380         {\r
381           col[i] = Color.white;\r
382         }\r
383         cs = new UserColourScheme(col);\r
384         break;\r
385 \r
386       default:\r
387         break;\r
388     }\r
389 \r
390     return cs;\r
391   }\r
392 \r
393   public static Color getAWTColorFromName(String name)\r
394   {\r
395     Color col = null;\r
396     name = name.toLowerCase();\r
397     if (name.equals("black"))\r
398     {\r
399       col = Color.black;\r
400     }\r
401     else if (name.equals("blue"))\r
402     {\r
403       col = Color.blue;\r
404     }\r
405     else if (name.equals("cyan"))\r
406     {\r
407       col = Color.cyan;\r
408     }\r
409     else if (name.equals("darkGray"))\r
410     {\r
411       col = Color.darkGray;\r
412     }\r
413     else if (name.equals("gray"))\r
414     {\r
415       col = Color.gray;\r
416     }\r
417     else if (name.equals("green"))\r
418     {\r
419       col = Color.green;\r
420     }\r
421     else if (name.equals("lightGray"))\r
422     {\r
423       col = Color.lightGray;\r
424     }\r
425     else if (name.equals("magenta"))\r
426     {\r
427       col = Color.magenta;\r
428     }\r
429     else if (name.equals("orange"))\r
430     {\r
431       col = Color.orange;\r
432     }\r
433     else if (name.equals("pink"))\r
434     {\r
435       col = Color.pink;\r
436     }\r
437     else if (name.equals("red"))\r
438     {\r
439       col = Color.red;\r
440     }\r
441     else if (name.equals("white"))\r
442     {\r
443       col = Color.white;\r
444     }\r
445     else if (name.equals("yellow"))\r
446     {\r
447       col = Color.yellow;\r
448     }\r
449 \r
450     return col;\r
451   }\r
452 }\r