2 * Jalview - A Sequence Alignment Editor and Viewer
3 * Copyright (C) 2006 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
21 import jalview.datamodel.*;
23 import jalview.jbgui.*;
25 import jalview.schemes.*;
27 import java.awt.event.*;
32 import javax.swing.event.*;
41 public class SliderPanel extends GSliderPanel
43 static JInternalFrame conservationSlider;
44 static JInternalFrame PIDSlider;
46 boolean forConservation = true;
50 * Creates a new SliderPanel object.
52 * @param ap DOCUMENT ME!
53 * @param value DOCUMENT ME!
54 * @param forConserve DOCUMENT ME!
55 * @param cs DOCUMENT ME!
57 public SliderPanel(AlignmentPanel ap, int value, boolean forConserve,
62 forConservation = forConserve;
63 undoButton.setVisible(false);
64 applyButton.setVisible(false);
68 label.setText("Enter value to increase conservation visibility");
70 slider.setMaximum(100);
74 label.setText("Enter % identity above which to colour residues");
76 slider.setMaximum(100);
79 slider.addChangeListener(new ChangeListener()
81 public void stateChanged(ChangeEvent evt)
83 valueField.setText(slider.getValue() + "");
84 valueChanged(slider.getValue());
88 slider.setValue(value);
89 valueField.setText(value + "");
96 * @param ap DOCUMENT ME!
97 * @param cs DOCUMENT ME!
98 * @param source DOCUMENT ME!
100 * @return DOCUMENT ME!
102 public static int setConservationSlider(AlignmentPanel ap,
103 ColourSchemeI cs, String source)
105 SliderPanel sp = null;
107 if (conservationSlider == null)
109 sp = new SliderPanel(ap, cs.getConservationInc(), true, cs);
110 conservationSlider = new JInternalFrame();
111 conservationSlider.setContentPane(sp);
112 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
116 sp = (SliderPanel) conservationSlider.getContentPane();
120 conservationSlider.setTitle("Conservation Colour Increment (" +
123 if (ap.av.alignment.getGroups() != null)
125 sp.setAllGroupsCheckEnabled(true);
129 sp.setAllGroupsCheckEnabled(false);
132 return sp.getValue();
138 public static void showConservationSlider()
142 PIDSlider.setClosed(true);
149 if (!conservationSlider.isVisible())
151 Desktop.addInternalFrame(conservationSlider,
152 conservationSlider.getTitle(), 420, 90, false);
153 conservationSlider.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
155 public void internalFrameClosed(
156 javax.swing.event.InternalFrameEvent e)
158 conservationSlider = null;
161 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
168 * @param ap DOCUMENT ME!
169 * @param cs DOCUMENT ME!
170 * @param source DOCUMENT ME!
172 * @return DOCUMENT ME!
174 public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs,
177 SliderPanel pid = null;
179 int threshold = cs.getThreshold();
181 if (PIDSlider == null)
183 pid = new SliderPanel(ap, threshold, false, cs);
184 PIDSlider = new JInternalFrame();
185 PIDSlider.setContentPane(pid);
186 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
190 pid = (SliderPanel) PIDSlider.getContentPane();
194 PIDSlider.setTitle("Percentage Identity Threshold (" + source + ")");
196 if (ap.av.alignment.getGroups() != null)
198 pid.setAllGroupsCheckEnabled(true);
202 pid.setAllGroupsCheckEnabled(false);
205 return pid.getValue();
211 public static void showPIDSlider()
215 conservationSlider.setClosed(true);
216 conservationSlider = null;
222 if (!PIDSlider.isVisible())
224 Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90,
226 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
227 PIDSlider.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
229 public void internalFrameClosed(
230 javax.swing.event.InternalFrameEvent e)
235 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
242 * @param i DOCUMENT ME!
244 public void valueChanged(int i)
251 ColourSchemeI toChange = null;
252 Vector allGroups = null;
255 if (allGroupsCheck.isSelected())
257 allGroups = ap.av.alignment.getGroups();
258 groupIndex = allGroups.size() - 1;
266 while (groupIndex > -1)
268 if (allGroups != null)
270 toChange = ((SequenceGroup) allGroups.get(groupIndex)).cs;
272 if (toChange == null)
282 if (toChange.conservationApplied())
284 toChange.setConservationInc(i);
289 toChange.setThreshold(i, ap.av.getIgnoreGapsConsensus());
295 ap.seqPanel.seqCanvas.repaint();
301 * @param b DOCUMENT ME!
303 public void setAllGroupsCheckEnabled(boolean b)
305 allGroupsCheck.setEnabled(b);
311 * @param e DOCUMENT ME!
313 public void valueField_actionPerformed(ActionEvent e)
317 int i = Integer.parseInt(valueField.getText());
320 catch (NumberFormatException ex)
322 valueField.setText(slider.getValue() + "");
329 * @param value DOCUMENT ME!
331 public void setValue(int value)
333 slider.setValue(value);
339 * @return DOCUMENT ME!
341 public int getValue()
343 return Integer.parseInt(valueField.getText());
346 public void slider_mouseReleased(MouseEvent e)
348 if (ap.overviewPanel != null)
349 ap.overviewPanel.updateOverviewImage();