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