all colours can threshold
[jalview.git] / src / jalview / gui / SliderPanel.java
1 package jalview.gui;\r
2 \r
3 import jalview.jbgui.*;\r
4 import jalview.schemes.*;\r
5 import jalview.datamodel.*;\r
6 import java.awt.event.*;\r
7 import javax.swing.event.*;\r
8 import javax.swing.*;\r
9 import java.util.*;\r
10 \r
11 public class SliderPanel extends GSliderPanel\r
12 {\r
13   AlignmentPanel ap;\r
14   boolean forConservation = true;\r
15   ColourSchemeI cs;\r
16 \r
17   static JInternalFrame conservationSlider;\r
18   static JInternalFrame PIDSlider;\r
19 \r
20   public static int setConservationSlider(AlignmentPanel ap, ColourSchemeI cs, String source)\r
21   {\r
22     SliderPanel sp = null;\r
23     ConservationColourScheme ccs = (ConservationColourScheme)cs;\r
24 \r
25     if(conservationSlider == null)\r
26     {\r
27       sp = new SliderPanel(ap, ccs.inc, true, cs);\r
28       conservationSlider = new JInternalFrame();\r
29       conservationSlider.setContentPane(sp);\r
30       conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
31     }\r
32     else\r
33     {\r
34         sp = (SliderPanel)conservationSlider.getContentPane();\r
35         sp.cs = cs;\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.setClosed(true);\r
51       PIDSlider = null;\r
52     }catch(Exception ex){}\r
53 \r
54 \r
55     if(!conservationSlider.isVisible())\r
56     {\r
57       Desktop.addInternalFrame(conservationSlider, conservationSlider.getTitle(), 420, 90, false);\r
58       conservationSlider.addInternalFrameListener(new javax.swing.event.\r
59                                                   InternalFrameAdapter()\r
60       {\r
61         public void internalFrameClosed(javax.swing.event.InternalFrameEvent e)\r
62         {\r
63           conservationSlider = null;\r
64         }\r
65       });\r
66       conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
67     }\r
68 \r
69   }\r
70 \r
71   public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs, String source)\r
72    {\r
73      SliderPanel pid = null;\r
74 \r
75      int threshold = 50;\r
76      if (cs instanceof ResidueColourScheme)\r
77        threshold = ( ( (ResidueColourScheme) cs).getThreshold());\r
78      else if (cs instanceof ScoreColourScheme)\r
79        threshold = ( ( (ScoreColourScheme) cs).getThreshold());\r
80 \r
81 \r
82      if(PIDSlider == null)\r
83      {\r
84        pid = new SliderPanel(ap, threshold, false, cs);\r
85        PIDSlider = new JInternalFrame();\r
86        PIDSlider.setContentPane(pid);\r
87        PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
88      }\r
89      else\r
90      {\r
91          pid = (SliderPanel)PIDSlider.getContentPane();\r
92          pid.cs = cs;\r
93      }\r
94      PIDSlider.setTitle("Percentage Identity Threshold ("+source+")");\r
95 \r
96      if (ap.av.alignment.getGroups() != null)\r
97        pid.setAllGroupsCheckEnabled(true);\r
98      else\r
99        pid.setAllGroupsCheckEnabled(false);\r
100 \r
101      return pid.getValue();\r
102 \r
103    }\r
104 \r
105    public static void showPIDSlider()\r
106    {\r
107      try{\r
108        conservationSlider.setClosed(true);\r
109        conservationSlider = null;\r
110      }catch(Exception ex){}\r
111 \r
112      if(!PIDSlider.isVisible())\r
113     {\r
114       Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90, false);\r
115       PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
116       PIDSlider.addInternalFrameListener(new javax.swing.event.\r
117                                                   InternalFrameAdapter()\r
118       {\r
119         public void internalFrameClosed(javax.swing.event.InternalFrameEvent e)\r
120         {\r
121           PIDSlider = null;\r
122         }\r
123       });\r
124       PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
125     }\r
126 \r
127    }\r
128 \r
129 \r
130   public SliderPanel(AlignmentPanel ap, int value, boolean forConserve, ColourSchemeI cs)\r
131   {\r
132     this.ap = ap;\r
133     this.cs = cs;\r
134     forConservation = forConserve;\r
135     undoButton.setVisible(false);\r
136     applyButton.setVisible(false);\r
137     if(forConservation)\r
138     {\r
139       label.setText("Enter value to increase conservation visibility");\r
140       slider.setMinimum(0);\r
141       slider.setMaximum(50);\r
142     }\r
143     else\r
144     {\r
145       label.setText("Enter % identity above which to colour residues");\r
146       slider.setMinimum(0);\r
147       slider.setMaximum(100);\r
148     }\r
149 \r
150 \r
151 \r
152     slider.addChangeListener( new ChangeListener()\r
153     {\r
154       public void stateChanged(ChangeEvent evt)\r
155       {\r
156         valueField.setText( slider.getValue()+"" );\r
157         valueChanged( slider.getValue() );\r
158       }\r
159     });\r
160 \r
161     slider.setValue(value);\r
162     valueField.setText(value+"");\r
163   }\r
164 \r
165   public void valueChanged(int i)\r
166   {\r
167     if(cs == null)\r
168       return;\r
169 \r
170     ColourSchemeI toChange = null;\r
171     Vector allGroups = null;\r
172     int groupIndex = 0;\r
173 \r
174     if(allGroupsCheck.isSelected())\r
175     {\r
176       allGroups = ap.av.alignment.getGroups();\r
177       groupIndex = allGroups.size()-1;\r
178     }\r
179     else\r
180       toChange = cs;\r
181 \r
182 \r
183     while( groupIndex > -1 )\r
184     {\r
185       if(allGroups!=null)\r
186         toChange = ((SequenceGroup)allGroups.get(groupIndex)).cs;\r
187 \r
188       if (forConservation)\r
189       {\r
190         if (toChange instanceof ConservationColourScheme)\r
191           ( (ConservationColourScheme) toChange).inc = i;\r
192       }\r
193       else\r
194       {\r
195           ( (ResidueColourScheme) toChange).setThreshold(i);\r
196       }\r
197 \r
198       groupIndex--;\r
199     }\r
200 \r
201     ap.seqPanel.seqCanvas.repaint();\r
202 \r
203   }\r
204 \r
205   public void setAllGroupsCheckEnabled(boolean b)\r
206   {\r
207     allGroupsCheck.setEnabled(b);\r
208   }\r
209 \r
210 \r
211   public void valueField_actionPerformed(ActionEvent e)\r
212   {\r
213     try{\r
214       int i = Integer.parseInt(valueField.getText());\r
215       slider.setValue(i);\r
216     }\r
217     catch(Exception ex)\r
218     {\r
219       valueField.setText( slider.getValue()+"" );\r
220     }\r
221   }\r
222 \r
223   public void setValue(int value)\r
224   {\r
225     slider.setValue(value);\r
226   }\r
227   public int getValue()\r
228   {\r
229     return Integer.parseInt(valueField.getText());\r
230   }\r
231 \r
232 \r
233 }\r