2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1)
3 * Copyright (C) 2014 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 of the License, or (at your option) any later version.
11 * Jalview is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty
13 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 * PURPOSE. See the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
17 * The Jalview Authors are detailed in the 'AUTHORS' file.
23 import java.awt.event.*;
25 import javax.swing.event.*;
27 import jalview.datamodel.*;
28 import jalview.jbgui.*;
29 import jalview.schemes.*;
30 import jalview.util.MessageManager;
38 public class SliderPanel extends GSliderPanel
40 static JInternalFrame conservationSlider;
42 static JInternalFrame PIDSlider;
46 boolean forConservation = true;
51 * Creates a new SliderPanel object.
62 public SliderPanel(final AlignmentPanel ap, int value,
63 boolean forConserve, ColourSchemeI cs)
67 forConservation = forConserve;
68 undoButton.setVisible(false);
69 applyButton.setVisible(false);
73 label.setText(MessageManager.getString("label.enter_value_increase_conservation_visibility"));
75 slider.setMaximum(100);
79 label.setText(MessageManager.getString("label.enter_percentage_identity_above_which_colour_residues"));
81 slider.setMaximum(100);
84 slider.addChangeListener(new ChangeListener()
86 public void stateChanged(ChangeEvent evt)
88 valueField.setText(slider.getValue() + "");
89 valueChanged(slider.getValue());
93 slider.addMouseListener(new MouseAdapter()
95 public void mouseReleased(MouseEvent evt)
97 ap.paintAlignment(true);
101 slider.setValue(value);
102 valueField.setText(value + "");
115 * @return DOCUMENT ME!
117 public static int setConservationSlider(AlignmentPanel ap,
118 ColourSchemeI cs, String source)
120 SliderPanel sp = null;
122 if (conservationSlider == null)
124 sp = new SliderPanel(ap, cs.getConservationInc(), true, cs);
125 conservationSlider = new JInternalFrame();
126 conservationSlider.setContentPane(sp);
127 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
131 sp = (SliderPanel) conservationSlider.getContentPane();
135 conservationSlider.setTitle("Conservation Colour Increment (" + source
138 if (ap.av.getAlignment().getGroups() != null)
140 sp.setAllGroupsCheckEnabled(true);
144 sp.setAllGroupsCheckEnabled(false);
147 return sp.getValue();
153 public static void showConservationSlider()
157 PIDSlider.setClosed(true);
159 } catch (Exception ex)
163 if (!conservationSlider.isVisible())
165 Desktop.addInternalFrame(conservationSlider,
166 conservationSlider.getTitle(), 420, 90, false);
168 .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
170 public void internalFrameClosed(
171 javax.swing.event.InternalFrameEvent e)
173 conservationSlider = null;
176 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
190 * @return DOCUMENT ME!
192 public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs,
195 SliderPanel pid = null;
197 int threshold = cs.getThreshold();
199 if (PIDSlider == null)
201 pid = new SliderPanel(ap, threshold, false, cs);
202 PIDSlider = new JInternalFrame();
203 PIDSlider.setContentPane(pid);
204 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
208 pid = (SliderPanel) PIDSlider.getContentPane();
212 PIDSlider.setTitle("Percentage Identity Threshold (" + source + ")");
214 if (ap.av.getAlignment().getGroups() != null)
216 pid.setAllGroupsCheckEnabled(true);
220 pid.setAllGroupsCheckEnabled(false);
223 return pid.getValue();
229 public static void showPIDSlider()
233 conservationSlider.setClosed(true);
234 conservationSlider = null;
235 } catch (Exception ex)
239 if (!PIDSlider.isVisible())
241 Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90,
243 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
245 .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
247 public void internalFrameClosed(
248 javax.swing.event.InternalFrameEvent e)
253 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
263 public void valueChanged(int i)
270 ColourSchemeI toChange = cs;
271 Iterator<SequenceGroup> allGroups = null;
273 if (allGroupsCheck.isSelected())
275 allGroups = ap.av.getAlignment().getGroups().listIterator();
278 while (toChange != null)
282 toChange.setConservationInc(i);
286 toChange.setThreshold(i, ap.av.getIgnoreGapsConsensus());
288 if (allGroups != null && allGroups.hasNext())
290 while ((toChange = allGroups.next().cs) == null
291 && allGroups.hasNext())
300 ap.seqPanel.seqCanvas.repaint();
309 public void setAllGroupsCheckEnabled(boolean b)
311 allGroupsCheck.setEnabled(b);
320 public void valueField_actionPerformed(ActionEvent e)
324 int i = Integer.parseInt(valueField.getText());
326 } catch (NumberFormatException ex)
328 valueField.setText(slider.getValue() + "");
338 public void setValue(int value)
340 slider.setValue(value);
346 * @return DOCUMENT ME!
348 public int getValue()
350 return Integer.parseInt(valueField.getText());
353 public void slider_mouseReleased(MouseEvent e)
355 if (ap.overviewPanel != null)
357 ap.overviewPanel.updateOverviewImage();