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