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