0cf954b44d127b98edebac6c0dc5a6ad342e0972
[jalview.git] / src / jalview / datamodel / SequenceGroup.java
1 package jalview.datamodel;\r
2 \r
3 import jalview.schemes.*;\r
4 import jalview.analysis.*;\r
5 import jalview.datamodel.*;\r
6 import java.util.Vector;\r
7 import java.awt.*;\r
8 \r
9 public class SequenceGroup\r
10 {\r
11   String groupName;\r
12   Conservation conserve;\r
13   Vector aaFrequency;\r
14   boolean displayBoxes;\r
15   boolean displayText;\r
16   boolean colourText;\r
17   boolean aaFrequencyValid = false;\r
18   public Vector sequences = new Vector();\r
19   int width = -1;\r
20   public ColourSchemeI cs;\r
21   int startRes = 0;\r
22   int endRes = 0;\r
23   Color outlineColour = Color.black;\r
24 \r
25   public SequenceGroup()\r
26   {\r
27     groupName = "Group";\r
28     this.displayBoxes = true;\r
29     this.displayText = true;\r
30     this.colourText = false;\r
31     cs = null;\r
32   }\r
33 \r
34   public SequenceGroup(String groupName, ColourSchemeI scheme,\r
35                        boolean displayBoxes, boolean displayText,\r
36                        boolean colourText,\r
37                        int start,\r
38                        int end)\r
39   {\r
40 \r
41     this.groupName = groupName;\r
42     this.displayBoxes = displayBoxes;\r
43     this.displayText = displayText;\r
44     this.colourText = colourText;\r
45     this.cs = scheme;\r
46     startRes = start;\r
47     endRes = end;\r
48   }\r
49 \r
50   public boolean adjustForRemoveLeft(int col)\r
51   {\r
52     // return value is true if the group still exists\r
53     if(startRes>=col)\r
54       startRes = startRes - col;\r
55     if(endRes>=col)\r
56     {\r
57       endRes = endRes - col;\r
58       if(startRes>endRes)\r
59         startRes = 0;\r
60     }\r
61     else\r
62     {\r
63         // must delete this group!!\r
64         return false;\r
65     }\r
66 \r
67     return true;\r
68   }\r
69 \r
70   public boolean adjustForRemoveRight(int col)\r
71   {\r
72 \r
73     if(startRes>col)\r
74     {\r
75       // delete this group\r
76       return false;\r
77     }\r
78 \r
79     if(endRes>=col)\r
80       endRes = col;\r
81 \r
82 \r
83     return true;\r
84   }\r
85 \r
86 \r
87   public String getName()\r
88   {\r
89     return groupName;\r
90   }\r
91 \r
92   public void setName(String name)\r
93   {\r
94     groupName = name;\r
95   }\r
96 \r
97   public Conservation getConservation()\r
98   {\r
99     return conserve;\r
100   }\r
101 \r
102   public void setConservation(Conservation c)\r
103   {\r
104     conserve = c;\r
105   }\r
106 \r
107   public void addSequence(SequenceI s)\r
108   {\r
109     if(!sequences.contains(s))\r
110       sequences.addElement(s);\r
111   }\r
112 \r
113   public void addOrRemove(SequenceI s)\r
114   {\r
115     if(sequences.contains(s))\r
116       deleteSequence(s);\r
117     else\r
118       addSequence(s);\r
119   }\r
120 \r
121   public void deleteSequence(SequenceI s)\r
122   {\r
123     sequences.removeElement(s);\r
124   }\r
125 \r
126 \r
127   public int getStartRes()\r
128   {\r
129     return startRes;\r
130   }\r
131 \r
132   public int getEndRes()\r
133   {\r
134     return endRes;\r
135   }\r
136 \r
137   public void setStartRes(int i)\r
138   {\r
139     startRes = i;\r
140   }\r
141 \r
142   public void setEndRes(int i)\r
143   {\r
144     endRes = i;\r
145   }\r
146 \r
147   public int getSize()\r
148   {\r
149     return sequences.size();\r
150   }\r
151 \r
152   public SequenceI getSequenceAt(int i)\r
153   {\r
154     return (SequenceI) sequences.elementAt(i);\r
155   }\r
156 \r
157   public void setColourText(boolean state)\r
158   {\r
159     colourText = state;\r
160   }\r
161 \r
162   public boolean getColourText()\r
163   {\r
164     return colourText;\r
165   }\r
166 \r
167   public void setDisplayText(boolean state)\r
168   {\r
169     displayText = state;\r
170   }\r
171 \r
172   public boolean getDisplayText()\r
173   {\r
174     return displayText;\r
175   }\r
176 \r
177   public void setDisplayBoxes(boolean state)\r
178   {\r
179     displayBoxes = state;\r
180   }\r
181 \r
182   public boolean getDisplayBoxes()\r
183   {\r
184     return displayBoxes;\r
185   }\r
186 \r
187   public Vector getAAFrequency()\r
188   {\r
189     if (aaFrequency == null || aaFrequencyValid == false)\r
190     {\r
191       aaFrequency = AAFrequency.calculate(sequences, 0, getWidth());\r
192       aaFrequencyValid = true;\r
193     }\r
194     return aaFrequency;\r
195   }\r
196 \r
197   public int getWidth()\r
198   {\r
199     System.out.println("it is called");\r
200     // MC This needs to get reset when characters are inserted and deleted\r
201     for (int i = 0; i < sequences.size(); i++)\r
202     {\r
203       SequenceI seq = (SequenceI) sequences.elementAt(i);\r
204       if (seq.getLength() > width)\r
205         width = seq.getLength();\r
206     }\r
207     return width;\r
208   }\r
209 \r
210 \r
211   public void setOutlineColour(Color c)\r
212   {\r
213     outlineColour = c;\r
214   }\r
215   public Color getOutlineColour()\r
216   {\r
217     return outlineColour;\r
218   }\r
219 }\r