2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
3 * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 import java.awt.event.*;
25 import javax.swing.event.*;
27 import jalview.datamodel.*;
28 import jalview.jbgui.*;
29 import jalview.schemes.*;
37 public class SliderPanel
40 static JInternalFrame conservationSlider;
41 static JInternalFrame PIDSlider;
43 boolean forConservation = true;
47 * Creates a new SliderPanel object.
49 * @param ap DOCUMENT ME!
50 * @param value DOCUMENT ME!
51 * @param forConserve DOCUMENT ME!
52 * @param cs DOCUMENT ME!
54 public SliderPanel(final AlignmentPanel ap, int value, boolean forConserve,
59 forConservation = forConserve;
60 undoButton.setVisible(false);
61 applyButton.setVisible(false);
65 label.setText("Enter value to increase conservation visibility");
67 slider.setMaximum(100);
71 label.setText("Enter % identity above which to colour residues");
73 slider.setMaximum(100);
76 slider.addChangeListener(new ChangeListener()
78 public void stateChanged(ChangeEvent evt)
80 valueField.setText(slider.getValue() + "");
81 valueChanged(slider.getValue());
85 slider.addMouseListener(new MouseAdapter()
87 public void mouseReleased(MouseEvent evt)
89 ap.paintAlignment(true);
93 slider.setValue(value);
94 valueField.setText(value + "");
100 * @param ap DOCUMENT ME!
101 * @param cs DOCUMENT ME!
102 * @param source DOCUMENT ME!
104 * @return DOCUMENT ME!
106 public static int setConservationSlider(AlignmentPanel ap,
107 ColourSchemeI cs, String source)
109 SliderPanel sp = null;
111 if (conservationSlider == null)
113 sp = new SliderPanel(ap, cs.getConservationInc(), true, cs);
114 conservationSlider = new JInternalFrame();
115 conservationSlider.setContentPane(sp);
116 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
120 sp = (SliderPanel) conservationSlider.getContentPane();
124 conservationSlider.setTitle("Conservation Colour Increment (" +
127 if (ap.av.alignment.getGroups() != null)
129 sp.setAllGroupsCheckEnabled(true);
133 sp.setAllGroupsCheckEnabled(false);
136 return sp.getValue();
142 public static void showConservationSlider()
146 PIDSlider.setClosed(true);
153 if (!conservationSlider.isVisible())
155 Desktop.addInternalFrame(conservationSlider,
156 conservationSlider.getTitle(), 420, 90, false);
157 conservationSlider.addInternalFrameListener(new javax.swing.event.
158 InternalFrameAdapter()
160 public void internalFrameClosed(
161 javax.swing.event.InternalFrameEvent e)
163 conservationSlider = null;
166 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
173 * @param ap DOCUMENT ME!
174 * @param cs DOCUMENT ME!
175 * @param source DOCUMENT ME!
177 * @return DOCUMENT ME!
179 public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs,
182 SliderPanel pid = null;
184 int threshold = cs.getThreshold();
186 if (PIDSlider == null)
188 pid = new SliderPanel(ap, threshold, false, cs);
189 PIDSlider = new JInternalFrame();
190 PIDSlider.setContentPane(pid);
191 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
195 pid = (SliderPanel) PIDSlider.getContentPane();
199 PIDSlider.setTitle("Percentage Identity Threshold (" + source + ")");
201 if (ap.av.alignment.getGroups() != null)
203 pid.setAllGroupsCheckEnabled(true);
207 pid.setAllGroupsCheckEnabled(false);
210 return pid.getValue();
216 public static void showPIDSlider()
220 conservationSlider.setClosed(true);
221 conservationSlider = null;
227 if (!PIDSlider.isVisible())
229 Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90,
231 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
232 PIDSlider.addInternalFrameListener(new javax.swing.event.
233 InternalFrameAdapter()
235 public void internalFrameClosed(
236 javax.swing.event.InternalFrameEvent e)
241 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
248 * @param i DOCUMENT ME!
250 public void valueChanged(int i)
257 ColourSchemeI toChange = null;
258 Vector allGroups = null;
261 if (allGroupsCheck.isSelected())
263 allGroups = ap.av.alignment.getGroups();
264 groupIndex = allGroups.size() - 1;
271 while (groupIndex > -1)
273 if (allGroups != null)
275 toChange = ( (SequenceGroup) allGroups.get(groupIndex)).cs;
277 if (toChange == null)
287 if (toChange.conservationApplied())
289 toChange.setConservationInc(i);
294 toChange.setThreshold(i, ap.av.getIgnoreGapsConsensus());
300 ap.seqPanel.seqCanvas.repaint();
306 * @param b DOCUMENT ME!
308 public void setAllGroupsCheckEnabled(boolean b)
310 allGroupsCheck.setEnabled(b);
316 * @param e DOCUMENT ME!
318 public void valueField_actionPerformed(ActionEvent e)
322 int i = Integer.parseInt(valueField.getText());
325 catch (NumberFormatException ex)
327 valueField.setText(slider.getValue() + "");
334 * @param value DOCUMENT ME!
336 public void setValue(int value)
338 slider.setValue(value);
344 * @return DOCUMENT ME!
346 public int getValue()
348 return Integer.parseInt(valueField.getText());
351 public void slider_mouseReleased(MouseEvent e)
353 if (ap.overviewPanel != null)
355 ap.overviewPanel.updateOverviewImage();