JAL-2360 ColourSchemes holds configured schemes, AlignFrame colour menu
[jalview.git] / src / jalview / schemes / NucleotideColourScheme.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.schemes;
22
23 import jalview.datamodel.AnnotatedCollectionI;
24 import jalview.datamodel.SequenceCollectionI;
25 import jalview.datamodel.SequenceI;
26
27 import java.awt.Color;
28 import java.util.Map;
29
30 /**
31  * DOCUMENT ME!
32  * 
33  * @author $author$
34  * @version $Revision$
35  */
36 public class NucleotideColourScheme extends ResidueColourScheme
37 {
38   /**
39    * Creates a new NucleotideColourScheme object.
40    */
41   public NucleotideColourScheme()
42   {
43     super(ResidueProperties.nucleotideIndex, ResidueProperties.nucleotide,
44             0);
45   }
46
47   /**
48    * DOCUMENT ME!
49    * 
50    * @param n
51    *          DOCUMENT ME!
52    * 
53    * @return DOCUMENT ME!
54    */
55   @Override
56   public Color findColour(char c)
57   {
58     // System.out.println("called"); log.debug
59     return colors[ResidueProperties.nucleotideIndex[c]];
60   }
61
62   /**
63    * DOCUMENT ME!
64    * 
65    * @param n
66    *          DOCUMENT ME!
67    * @param j
68    *          DOCUMENT ME!
69    * 
70    * @return DOCUMENT ME!
71    */
72   @Override
73   public Color findColour(char c, int j, SequenceI seq)
74   {
75     Color currentColour;
76     if ((threshold == 0) || aboveThreshold(c, j))
77     {
78       try
79       {
80         currentColour = colors[ResidueProperties.nucleotideIndex[c]];
81       } catch (Exception ex)
82       {
83         return Color.white;
84       }
85     }
86     else
87     {
88       return Color.white;
89     }
90
91     if (conservationColouring)
92     {
93       currentColour = applyConservation(currentColour, j);
94     }
95
96     return currentColour;
97   }
98
99   @Override
100   public boolean isNucleotideSpecific()
101   {
102     return true;
103   }
104
105   @Override
106   public String getSchemeName()
107   {
108     return JalviewColourScheme.Nucleotide.toString();
109   }
110
111   /**
112    * Returns a new instance of this colour scheme with which the given data may
113    * be coloured
114    */
115   @Override
116   public ColourSchemeI getInstance(AnnotatedCollectionI coll,
117           Map<SequenceI, SequenceCollectionI> hrs)
118   {
119     return new NucleotideColourScheme();
120   }
121 }