2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
23 import jalview.datamodel.SequenceGroup;
24 import jalview.jbgui.GSliderPanel;
25 import jalview.schemes.ColourSchemeI;
26 import jalview.util.MessageManager;
28 import java.awt.event.MouseAdapter;
29 import java.awt.event.MouseEvent;
30 import java.beans.PropertyVetoException;
31 import java.util.Iterator;
33 import javax.swing.JInternalFrame;
34 import javax.swing.JLayeredPane;
35 import javax.swing.event.ChangeEvent;
36 import javax.swing.event.ChangeListener;
37 import javax.swing.event.InternalFrameAdapter;
38 import javax.swing.event.InternalFrameEvent;
46 public class SliderPanel extends GSliderPanel
48 static JInternalFrame conservationSlider;
50 static JInternalFrame PIDSlider;
54 boolean forConservation = true;
59 * Creates a new SliderPanel object.
70 public SliderPanel(final AlignmentPanel ap, int value,
71 boolean forConserve, ColourSchemeI cs)
75 forConservation = forConserve;
76 undoButton.setVisible(false);
77 applyButton.setVisible(false);
81 label.setText(MessageManager
82 .getString("label.enter_value_increase_conservation_visibility"));
84 slider.setMaximum(100);
88 label.setText(MessageManager
89 .getString("label.enter_percentage_identity_above_which_colour_residues"));
91 slider.setMaximum(100);
94 slider.addChangeListener(new ChangeListener()
97 public void stateChanged(ChangeEvent evt)
99 valueField.setText(slider.getValue() + "");
100 valueChanged(slider.getValue());
104 slider.addMouseListener(new MouseAdapter()
107 public void mouseReleased(MouseEvent evt)
109 ap.paintAlignment(true);
113 slider.setValue(value);
114 valueField.setText(value + "");
127 * @return DOCUMENT ME!
129 public static int setConservationSlider(AlignmentPanel ap,
130 ColourSchemeI cs, String source)
132 SliderPanel sp = null;
134 if (conservationSlider == null)
136 sp = new SliderPanel(ap, cs.getConservationInc(), true, cs);
137 conservationSlider = new JInternalFrame();
138 conservationSlider.setContentPane(sp);
139 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
143 sp = (SliderPanel) conservationSlider.getContentPane();
144 sp.valueField.setText(String.valueOf(cs.getConservationInc()));
149 .setTitle(MessageManager.formatMessage(
150 "label.conservation_colour_increment",
151 new String[] { source }));
153 if (ap.av.getAlignment().getGroups() != null)
155 sp.setAllGroupsCheckEnabled(true);
159 sp.setAllGroupsCheckEnabled(false);
162 return sp.getValue();
166 * Hides the PID slider panel if it is shown
168 public static void hidePIDSlider()
170 if (PIDSlider != null)
174 PIDSlider.setClosed(true);
176 } catch (PropertyVetoException ex)
183 * Hides the conservation slider panel if it is shown
185 public static void hideConservationSlider()
187 if (conservationSlider != null)
191 conservationSlider.setClosed(true);
192 conservationSlider = null;
193 } catch (PropertyVetoException ex)
202 public static void showConservationSlider()
206 if (!conservationSlider.isVisible())
208 Desktop.addInternalFrame(conservationSlider,
209 conservationSlider.getTitle(), 420, 90, false);
211 .addInternalFrameListener(new InternalFrameAdapter()
214 public void internalFrameClosed(InternalFrameEvent e)
216 conservationSlider = null;
219 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
233 * @return DOCUMENT ME!
235 public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs,
238 SliderPanel pid = null;
240 int threshold = cs.getThreshold();
242 if (PIDSlider == null)
244 pid = new SliderPanel(ap, threshold, false, cs);
245 PIDSlider = new JInternalFrame();
246 PIDSlider.setContentPane(pid);
247 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
251 pid = (SliderPanel) PIDSlider.getContentPane();
252 pid.valueField.setText(String.valueOf(cs.getThreshold()));
257 .setTitle(MessageManager.formatMessage(
258 "label.percentage_identity_threshold",
259 new String[] { source }));
261 if (ap.av.getAlignment().getGroups() != null)
263 pid.setAllGroupsCheckEnabled(true);
267 pid.setAllGroupsCheckEnabled(false);
270 return pid.getValue();
276 public static void showPIDSlider()
278 hideConservationSlider();
280 if (!PIDSlider.isVisible())
282 Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90,
284 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
285 PIDSlider.addInternalFrameListener(new InternalFrameAdapter()
288 public void internalFrameClosed(InternalFrameEvent e)
293 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
303 public void valueChanged(int i)
310 ColourSchemeI toChange = cs;
311 Iterator<SequenceGroup> allGroups = null;
313 if (allGroupsCheck.isSelected())
315 allGroups = ap.av.getAlignment().getGroups().listIterator();
318 while (toChange != null)
322 toChange.setConservationInc(i);
326 toChange.setThreshold(i, ap.av.isIgnoreGapsConsensus());
328 if (allGroups != null && allGroups.hasNext())
330 while ((toChange = allGroups.next().cs) == null
331 && allGroups.hasNext())
342 ap.getSeqPanel().seqCanvas.repaint();
351 public void setAllGroupsCheckEnabled(boolean b)
353 allGroupsCheck.setEnabled(b);
362 public void setValue(int value)
364 slider.setValue(value);
370 * @return DOCUMENT ME!
372 public int getValue()
374 return Integer.parseInt(valueField.getText());
378 public void slider_mouseReleased(MouseEvent e)
380 if (ap.overviewPanel != null)
382 ap.overviewPanel.updateOverviewImage();