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