2 * Jalview - A Sequence Alignment Editor and Viewer
\r
3 * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
\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
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
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
20 package jalview.appletgui;
\r
25 import java.awt.event.*;
\r
27 import jalview.datamodel.*;
\r
28 import jalview.schemes.*;
\r
30 public class SliderPanel extends Panel
\r
33 boolean forConservation = true;
\r
36 static Frame conservationSlider;
\r
37 static Frame PIDSlider;
\r
39 public static int setConservationSlider(AlignmentPanel ap, ColourSchemeI cs,
\r
42 SliderPanel sp = null;
\r
44 if (conservationSlider == null)
\r
46 sp = new SliderPanel(ap, cs.getConservationInc(), true, cs);
\r
47 conservationSlider = new Frame();
\r
48 conservationSlider.add(sp);
\r
52 sp = (SliderPanel) conservationSlider.getComponent(0);
\r
56 conservationSlider.setTitle("Conservation Colour Increment (" + source +
\r
58 if (ap.av.alignment.getGroups() != null)
\r
60 sp.setAllGroupsCheckEnabled(true);
\r
64 sp.setAllGroupsCheckEnabled(false);
\r
67 return sp.getValue();
\r
70 public static void showConservationSlider()
\r
74 PIDSlider.setVisible(false);
\r
77 catch (Exception ex)
\r
80 if (!conservationSlider.isVisible())
\r
82 jalview.bin.JalviewLite.addFrame(conservationSlider,
\r
83 conservationSlider.getTitle(), 420, 100);
\r
84 conservationSlider.addWindowListener(new WindowAdapter()
\r
86 public void windowClosing(WindowEvent e)
\r
88 conservationSlider = null;
\r
96 public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs,
\r
99 SliderPanel pid = null;
\r
100 if (PIDSlider == null)
\r
102 pid = new SliderPanel(ap, 50, false, cs);
\r
103 PIDSlider = new Frame();
\r
104 PIDSlider.add(pid);
\r
108 pid = (SliderPanel) PIDSlider.getComponent(0);
\r
111 PIDSlider.setTitle("Percentage Identity Threshold (" + source + ")");
\r
113 if (ap.av.alignment.getGroups() != null)
\r
115 pid.setAllGroupsCheckEnabled(true);
\r
119 pid.setAllGroupsCheckEnabled(false);
\r
122 return pid.getValue();
\r
126 public static void showPIDSlider()
\r
130 conservationSlider.setVisible(false);
\r
131 conservationSlider = null;
\r
133 catch (Exception ex)
\r
136 if (!PIDSlider.isVisible())
\r
138 jalview.bin.JalviewLite.addFrame(PIDSlider, PIDSlider.getTitle(), 420,
\r
140 PIDSlider.addWindowListener(new WindowAdapter()
\r
142 public void windowClosing(WindowEvent e)
\r
151 public SliderPanel(AlignmentPanel ap, int value, boolean forConserve,
\r
156 } catch (Exception e) {
\r
157 e.printStackTrace();
\r
161 forConservation = forConserve;
\r
162 undoButton.setVisible(false);
\r
163 applyButton.setVisible(false);
\r
164 if (forConservation)
\r
166 label.setText("Modify conservation visibility");
\r
167 slider.setMinimum(0);
\r
168 slider.setMaximum(50 + slider.getVisibleAmount());
\r
169 slider.setUnitIncrement(1);
\r
173 label.setText("Colour residues above % occurence");
\r
174 slider.setMinimum(0);
\r
175 slider.setMaximum(100 + slider.getVisibleAmount());
\r
176 slider.setBlockIncrement(1);
\r
179 slider.addAdjustmentListener(new AdjustmentListener()
\r
181 public void adjustmentValueChanged(AdjustmentEvent evt)
\r
183 valueField.setText(slider.getValue() + "");
\r
184 valueChanged(slider.getValue());
\r
188 slider.setValue(value);
\r
189 valueField.setText(value + "");
\r
192 public void valueChanged(int i)
\r
199 ColourSchemeI toChange = null;
\r
200 Vector allGroups = null;
\r
201 int groupIndex = 0;
\r
203 if (allGroupsCheck.getState())
\r
205 allGroups = ap.av.alignment.getGroups();
\r
206 groupIndex = allGroups.size() - 1;
\r
213 while (groupIndex > -1)
\r
215 if (allGroups != null)
\r
217 toChange = ( (SequenceGroup) allGroups.elementAt(groupIndex)).cs;
\r
220 if (forConservation)
\r
222 toChange.setConservationInc(i);
\r
226 toChange.setThreshold(i, ap.av.getIgnoreGapsConsensus());
\r
232 ap.seqPanel.seqCanvas.repaint();
\r
236 public void setAllGroupsCheckEnabled(boolean b)
\r
238 allGroupsCheck.setEnabled(b);
\r
241 public void valueField_actionPerformed(ActionEvent e)
\r
245 int i = Integer.parseInt(valueField.getText());
\r
246 slider.setValue(i);
\r
248 catch (Exception ex)
\r
250 valueField.setText(slider.getValue() + "");
\r
254 public void setValue(int value)
\r
256 slider.setValue(value);
\r
259 public int getValue()
\r
261 return Integer.parseInt(valueField.getText());
\r
264 // this is used for conservation colours, PID colours and redundancy threshold
\r
265 protected Scrollbar slider = new Scrollbar();
\r
266 protected TextField valueField = new TextField();
\r
267 protected Label label = new Label();
\r
268 Panel jPanel1 = new Panel();
\r
269 Panel jPanel2 = new Panel();
\r
270 protected Button applyButton = new Button();
\r
271 protected Button undoButton = new Button();
\r
272 FlowLayout flowLayout1 = new FlowLayout();
\r
273 protected Checkbox allGroupsCheck = new Checkbox();
\r
274 BorderLayout borderLayout1 = new BorderLayout();
\r
275 BorderLayout borderLayout2 = new BorderLayout();
\r
276 FlowLayout flowLayout2 = new FlowLayout();
\r
278 private void jbInit() throws Exception {
\r
279 this.setLayout(borderLayout2);
\r
281 // slider.setMajorTickSpacing(10);
\r
282 // slider.setMinorTickSpacing(1);
\r
283 // slider.setPaintTicks(true);
\r
284 slider.setBackground(Color.white);
\r
285 slider.setFont(new java.awt.Font("Verdana", 0, 11));
\r
286 slider.setOrientation(0);
\r
287 valueField.setFont(new java.awt.Font("Verdana", 0, 11));
\r
288 valueField.setText(" ");
\r
289 valueField.addActionListener(new java.awt.event.ActionListener() {
\r
290 public void actionPerformed(ActionEvent e) {
\r
291 valueField_actionPerformed(e);
\r
294 label.setFont(new java.awt.Font("Verdana", 0, 11));
\r
295 label.setText("set this label text");
\r
296 jPanel1.setLayout(borderLayout1);
\r
297 jPanel2.setLayout(flowLayout1);
\r
298 applyButton.setFont(new java.awt.Font("Verdana", 0, 11));
\r
299 applyButton.setLabel("Apply");
\r
300 applyButton.addActionListener(new java.awt.event.ActionListener() {
\r
301 public void actionPerformed(ActionEvent e) {
\r
302 applyButton_actionPerformed(e);
\r
305 undoButton.setEnabled(false);
\r
306 undoButton.setFont(new java.awt.Font("Verdana", 0, 11));
\r
307 undoButton.setLabel("Undo");
\r
308 undoButton.addActionListener(new java.awt.event.ActionListener() {
\r
309 public void actionPerformed(ActionEvent e) {
\r
310 undoButton_actionPerformed(e);
\r
313 allGroupsCheck.setEnabled(false);
\r
314 allGroupsCheck.setFont(new java.awt.Font("Verdana", 0, 11));
\r
315 allGroupsCheck.setLabel("Apply threshold to all groups");
\r
316 allGroupsCheck.setName("Apply to all Groups");
\r
317 this.setBackground(Color.white);
\r
318 this.setForeground(Color.black);
\r
319 jPanel2.add(label, null);
\r
320 jPanel2.add(applyButton, null);
\r
321 jPanel2.add(undoButton, null);
\r
322 jPanel2.add(allGroupsCheck);
\r
323 jPanel1.add(valueField, java.awt.BorderLayout.EAST);
\r
324 jPanel1.add(slider, java.awt.BorderLayout.CENTER);
\r
325 this.add(jPanel1, java.awt.BorderLayout.SOUTH);
\r
326 this.add(jPanel2, java.awt.BorderLayout.CENTER);
\r
329 protected void applyButton_actionPerformed(ActionEvent e)
\r
333 protected void undoButton_actionPerformed(ActionEvent e)
\r