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;
44 public class SliderPanel extends GSliderPanel
46 static JInternalFrame conservationSlider;
48 static JInternalFrame PIDSlider;
52 boolean forConservation = true;
57 * Creates a new SliderPanel object.
68 public SliderPanel(final AlignmentPanel ap, int value,
69 boolean forConserve, ColourSchemeI cs)
73 forConservation = forConserve;
74 undoButton.setVisible(false);
75 applyButton.setVisible(false);
79 label.setText(MessageManager
80 .getString("label.enter_value_increase_conservation_visibility"));
82 slider.setMaximum(100);
86 label.setText(MessageManager
87 .getString("label.enter_percentage_identity_above_which_colour_residues"));
89 slider.setMaximum(100);
92 slider.addChangeListener(new ChangeListener()
95 public void stateChanged(ChangeEvent evt)
97 valueField.setText(slider.getValue() + "");
98 valueChanged(slider.getValue());
102 slider.addMouseListener(new MouseAdapter()
105 public void mouseReleased(MouseEvent evt)
107 ap.paintAlignment(true);
111 slider.setValue(value);
112 valueField.setText(value + "");
125 * @return DOCUMENT ME!
127 public static int setConservationSlider(AlignmentPanel ap,
128 ColourSchemeI cs, String source)
130 SliderPanel sp = null;
132 if (conservationSlider == null)
134 sp = new SliderPanel(ap, cs.getConservationInc(), true, cs);
135 conservationSlider = new JInternalFrame();
136 conservationSlider.setContentPane(sp);
137 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
141 sp = (SliderPanel) conservationSlider.getContentPane();
146 .setTitle(MessageManager.formatMessage(
147 "label.conservation_colour_increment",
148 new String[] { source }));
150 if (ap.av.getAlignment().getGroups() != null)
152 sp.setAllGroupsCheckEnabled(true);
156 sp.setAllGroupsCheckEnabled(false);
159 return sp.getValue();
162 public static void hidePIDSlider()
166 PIDSlider.setClosed(true);
168 } catch (PropertyVetoException ex)
173 public static void hideConservationSlider()
177 conservationSlider.setClosed(true);
178 conservationSlider = null;
179 } catch (PropertyVetoException ex)
187 public static void showConservationSlider()
191 PIDSlider.setClosed(true);
193 } catch (Exception ex)
197 if (!conservationSlider.isVisible())
199 Desktop.addInternalFrame(conservationSlider,
200 conservationSlider.getTitle(), 420, 90, false);
202 .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
205 public void internalFrameClosed(
206 javax.swing.event.InternalFrameEvent e)
208 conservationSlider = null;
211 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
225 * @return DOCUMENT ME!
227 public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs,
230 SliderPanel pid = null;
232 int threshold = cs.getThreshold();
234 if (PIDSlider == null)
236 pid = new SliderPanel(ap, threshold, false, cs);
237 PIDSlider = new JInternalFrame();
238 PIDSlider.setContentPane(pid);
239 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
243 pid = (SliderPanel) PIDSlider.getContentPane();
248 .setTitle(MessageManager.formatMessage(
249 "label.percentage_identity_threshold",
250 new String[] { source }));
252 if (ap.av.getAlignment().getGroups() != null)
254 pid.setAllGroupsCheckEnabled(true);
258 pid.setAllGroupsCheckEnabled(false);
261 return pid.getValue();
267 public static void showPIDSlider()
271 conservationSlider.setClosed(true);
272 conservationSlider = null;
273 } catch (Exception ex)
277 if (!PIDSlider.isVisible())
279 Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90,
281 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
283 .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
286 public void internalFrameClosed(
287 javax.swing.event.InternalFrameEvent e)
292 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
302 public void valueChanged(int i)
309 ColourSchemeI toChange = cs;
310 Iterator<SequenceGroup> allGroups = null;
312 if (allGroupsCheck.isSelected())
314 allGroups = ap.av.getAlignment().getGroups().listIterator();
317 while (toChange != null)
321 toChange.setConservationInc(i);
325 toChange.setThreshold(i, ap.av.isIgnoreGapsConsensus());
327 if (allGroups != null && allGroups.hasNext())
329 while ((toChange = allGroups.next().cs) == null
330 && allGroups.hasNext())
341 ap.getSeqPanel().seqCanvas.repaint();
350 public void setAllGroupsCheckEnabled(boolean b)
352 allGroupsCheck.setEnabled(b);
361 public void setValue(int value)
363 slider.setValue(value);
369 * @return DOCUMENT ME!
371 public int getValue()
373 return Integer.parseInt(valueField.getText());
377 public void slider_mouseReleased(MouseEvent e)
379 if (ap.overviewPanel != null)
381 ap.overviewPanel.updateOverviewImage();