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