IgnoreGapsConsensus
[jalview.git] / src / jalview / appletgui / SliderPanel.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 \r
20 package jalview.appletgui;\r
21 \r
22 import java.util.*;\r
23 \r
24 import java.awt.*;\r
25 import java.awt.event.*;\r
26 \r
27 import jalview.datamodel.*;\r
28 import jalview.jbappletgui.*;\r
29 import jalview.schemes.*;\r
30 \r
31 public class SliderPanel\r
32     extends GSliderPanel\r
33 {\r
34   AlignmentPanel ap;\r
35   boolean forConservation = true;\r
36   ColourSchemeI cs;\r
37 \r
38   static Frame conservationSlider;\r
39   static Frame PIDSlider;\r
40 \r
41   public static int setConservationSlider(AlignmentPanel ap, ColourSchemeI cs,\r
42                                           String source)\r
43   {\r
44     SliderPanel sp = null;\r
45     ConservationColourScheme ccs = (ConservationColourScheme) cs;\r
46 \r
47     if (conservationSlider == null)\r
48     {\r
49       sp = new SliderPanel(ap, ccs.inc, true, cs);\r
50       conservationSlider = new Frame();\r
51       conservationSlider.add(sp);\r
52     }\r
53     else\r
54     {\r
55       sp = (SliderPanel) conservationSlider.getComponent(0);\r
56       sp.cs = cs;\r
57     }\r
58 \r
59     conservationSlider.setTitle("Conservation Colour Increment  (" + source +\r
60                                 ")");\r
61     if (ap.av.alignment.getGroups() != null)\r
62     {\r
63       sp.setAllGroupsCheckEnabled(true);\r
64     }\r
65     else\r
66     {\r
67       sp.setAllGroupsCheckEnabled(false);\r
68     }\r
69 \r
70     return sp.getValue();\r
71   }\r
72 \r
73   public static void showConservationSlider()\r
74   {\r
75     try\r
76     {\r
77       PIDSlider.setVisible(false);\r
78       PIDSlider = null;\r
79     }\r
80     catch (Exception ex)\r
81     {}\r
82 \r
83     if (!conservationSlider.isVisible())\r
84     {\r
85       jalview.bin.JalviewLite.addFrame(conservationSlider,\r
86                                        conservationSlider.getTitle(), 420, 100);\r
87       conservationSlider.addWindowListener(new WindowAdapter()\r
88       {\r
89         public void windowClosing(WindowEvent e)\r
90         {\r
91           conservationSlider = null;\r
92         }\r
93       });\r
94 \r
95     }\r
96 \r
97   }\r
98 \r
99   public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs,\r
100                                        String source)\r
101   {\r
102     SliderPanel pid = null;\r
103     if (PIDSlider == null)\r
104     {\r
105       pid = new SliderPanel(ap, 50, false, cs);\r
106       PIDSlider = new Frame();\r
107       PIDSlider.add(pid);\r
108     }\r
109     else\r
110     {\r
111       pid = (SliderPanel) PIDSlider.getComponent(0);\r
112       pid.cs = cs;\r
113     }\r
114     PIDSlider.setTitle("Percentage Identity Threshold (" + source + ")");\r
115 \r
116     if (ap.av.alignment.getGroups() != null)\r
117     {\r
118       pid.setAllGroupsCheckEnabled(true);\r
119     }\r
120     else\r
121     {\r
122       pid.setAllGroupsCheckEnabled(false);\r
123     }\r
124 \r
125     return pid.getValue();\r
126 \r
127   }\r
128 \r
129   public static void showPIDSlider()\r
130   {\r
131     try\r
132     {\r
133       conservationSlider.setVisible(false);\r
134       conservationSlider = null;\r
135     }\r
136     catch (Exception ex)\r
137     {}\r
138 \r
139     if (!PIDSlider.isVisible())\r
140     {\r
141       jalview.bin.JalviewLite.addFrame(PIDSlider, PIDSlider.getTitle(), 420,\r
142                                        100);\r
143       PIDSlider.addWindowListener(new WindowAdapter()\r
144       {\r
145         public void windowClosing(WindowEvent e)\r
146         {\r
147           PIDSlider = null;\r
148         }\r
149       });\r
150     }\r
151 \r
152   }\r
153 \r
154   public SliderPanel(AlignmentPanel ap, int value, boolean forConserve,\r
155                      ColourSchemeI cs)\r
156   {\r
157     this.ap = ap;\r
158     this.cs = cs;\r
159     forConservation = forConserve;\r
160     undoButton.setVisible(false);\r
161     applyButton.setVisible(false);\r
162     if (forConservation)\r
163     {\r
164       label.setText("Modify conservation visibility");\r
165       slider.setMinimum(0);\r
166       slider.setMaximum(50 + slider.getVisibleAmount());\r
167       slider.setUnitIncrement(1);\r
168     }\r
169     else\r
170     {\r
171       label.setText("Colour residues above % occurence");\r
172       slider.setMinimum(0);\r
173       slider.setMaximum(100 + slider.getVisibleAmount());\r
174       slider.setBlockIncrement(1);\r
175     }\r
176 \r
177     slider.addAdjustmentListener(new AdjustmentListener()\r
178     {\r
179       public void adjustmentValueChanged(AdjustmentEvent evt)\r
180       {\r
181         valueField.setText(slider.getValue() + "");\r
182         valueChanged(slider.getValue());\r
183       }\r
184     });\r
185 \r
186     slider.setValue(value);\r
187     valueField.setText(value + "");\r
188   }\r
189 \r
190   public void valueChanged(int i)\r
191   {\r
192     if (cs == null)\r
193     {\r
194       return;\r
195     }\r
196 \r
197     ColourSchemeI toChange = null;\r
198     Vector allGroups = null;\r
199     int groupIndex = 0;\r
200 \r
201     if (allGroupsCheck.getState())\r
202     {\r
203       allGroups = ap.av.alignment.getGroups();\r
204       groupIndex = allGroups.size() - 1;\r
205     }\r
206     else\r
207     {\r
208       toChange = cs;\r
209     }\r
210 \r
211     while (groupIndex > -1)\r
212     {\r
213       if (allGroups != null)\r
214       {\r
215         toChange = ( (SequenceGroup) allGroups.elementAt(groupIndex)).cs;\r
216       }\r
217 \r
218       if (forConservation)\r
219       {\r
220         if (toChange instanceof ConservationColourScheme)\r
221         {\r
222           ( (ConservationColourScheme) toChange).inc = i;\r
223         }\r
224       }\r
225       else\r
226       {\r
227         ( (ResidueColourScheme) toChange).setThreshold(i, ap.av.getIgnoreGapsConsensus());\r
228       }\r
229 \r
230       groupIndex--;\r
231     }\r
232 \r
233     ap.seqPanel.seqCanvas.repaint();\r
234 \r
235   }\r
236 \r
237   public void setAllGroupsCheckEnabled(boolean b)\r
238   {\r
239     allGroupsCheck.setEnabled(b);\r
240   }\r
241 \r
242   public void valueField_actionPerformed(ActionEvent e)\r
243   {\r
244     try\r
245     {\r
246       int i = Integer.parseInt(valueField.getText());\r
247       slider.setValue(i);\r
248     }\r
249     catch (Exception ex)\r
250     {\r
251       valueField.setText(slider.getValue() + "");\r
252     }\r
253   }\r
254 \r
255   public void setValue(int value)\r
256   {\r
257     slider.setValue(value);\r
258   }\r
259 \r
260   public int getValue()\r
261   {\r
262     return Integer.parseInt(valueField.getText());\r
263   }\r
264 \r
265 }\r