2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
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.*;
37 public class SliderPanel extends GSliderPanel
39 static JInternalFrame conservationSlider;
41 static JInternalFrame PIDSlider;
45 boolean forConservation = true;
50 * Creates a new SliderPanel object.
61 public SliderPanel(final AlignmentPanel ap, int value,
62 boolean forConserve, ColourSchemeI cs)
66 forConservation = forConserve;
67 undoButton.setVisible(false);
68 applyButton.setVisible(false);
72 label.setText("Enter value to increase conservation visibility");
74 slider.setMaximum(100);
78 label.setText("Enter % identity above which to colour residues");
80 slider.setMaximum(100);
83 slider.addChangeListener(new ChangeListener()
85 public void stateChanged(ChangeEvent evt)
87 valueField.setText(slider.getValue() + "");
88 valueChanged(slider.getValue());
92 slider.addMouseListener(new MouseAdapter()
94 public void mouseReleased(MouseEvent evt)
96 ap.paintAlignment(true);
100 slider.setValue(value);
101 valueField.setText(value + "");
114 * @return DOCUMENT ME!
116 public static int setConservationSlider(AlignmentPanel ap,
117 ColourSchemeI cs, String source)
119 SliderPanel sp = null;
121 if (conservationSlider == null)
123 sp = new SliderPanel(ap, cs.getConservationInc(), true, cs);
124 conservationSlider = new JInternalFrame();
125 conservationSlider.setContentPane(sp);
126 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
130 sp = (SliderPanel) conservationSlider.getContentPane();
134 conservationSlider.setTitle("Conservation Colour Increment (" + source
137 if (ap.av.getAlignment().getGroups() != null)
139 sp.setAllGroupsCheckEnabled(true);
143 sp.setAllGroupsCheckEnabled(false);
146 return sp.getValue();
152 public static void showConservationSlider()
156 PIDSlider.setClosed(true);
158 } catch (Exception ex)
162 if (!conservationSlider.isVisible())
164 Desktop.addInternalFrame(conservationSlider,
165 conservationSlider.getTitle(), 420, 90, false);
167 .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
169 public void internalFrameClosed(
170 javax.swing.event.InternalFrameEvent e)
172 conservationSlider = null;
175 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
189 * @return DOCUMENT ME!
191 public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs,
194 SliderPanel pid = null;
196 int threshold = cs.getThreshold();
198 if (PIDSlider == null)
200 pid = new SliderPanel(ap, threshold, false, cs);
201 PIDSlider = new JInternalFrame();
202 PIDSlider.setContentPane(pid);
203 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
207 pid = (SliderPanel) PIDSlider.getContentPane();
211 PIDSlider.setTitle("Percentage Identity Threshold (" + source + ")");
213 if (ap.av.getAlignment().getGroups() != null)
215 pid.setAllGroupsCheckEnabled(true);
219 pid.setAllGroupsCheckEnabled(false);
222 return pid.getValue();
228 public static void showPIDSlider()
232 conservationSlider.setClosed(true);
233 conservationSlider = null;
234 } catch (Exception ex)
238 if (!PIDSlider.isVisible())
240 Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90,
242 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
244 .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
246 public void internalFrameClosed(
247 javax.swing.event.InternalFrameEvent e)
252 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
262 public void valueChanged(int i)
269 ColourSchemeI toChange = null;
270 List<SequenceGroup> allGroups = null;
273 if (allGroupsCheck.isSelected())
275 allGroups = ap.av.getAlignment().getGroups();
276 groupIndex = allGroups.size() - 1;
283 while (groupIndex > -1)
285 if (allGroups != null)
287 toChange = ((SequenceGroup) allGroups.get(groupIndex)).cs;
289 if (toChange == null)
299 if (toChange.conservationApplied())
301 toChange.setConservationInc(i);
306 toChange.setThreshold(i, ap.av.getIgnoreGapsConsensus());
312 ap.seqPanel.seqCanvas.repaint();
321 public void setAllGroupsCheckEnabled(boolean b)
323 allGroupsCheck.setEnabled(b);
332 public void valueField_actionPerformed(ActionEvent e)
336 int i = Integer.parseInt(valueField.getText());
338 } catch (NumberFormatException ex)
340 valueField.setText(slider.getValue() + "");
350 public void setValue(int value)
352 slider.setValue(value);
358 * @return DOCUMENT ME!
360 public int getValue()
362 return Integer.parseInt(valueField.getText());
365 public void slider_mouseReleased(MouseEvent e)
367 if (ap.overviewPanel != null)
369 ap.overviewPanel.updateOverviewImage();