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.CollectionColourSchemeI;
26 import jalview.util.MessageManager;
28 import java.awt.event.ActionEvent;
29 import java.awt.event.MouseAdapter;
30 import java.awt.event.MouseEvent;
32 import javax.swing.JInternalFrame;
33 import javax.swing.JLayeredPane;
34 import javax.swing.event.ChangeEvent;
35 import javax.swing.event.ChangeListener;
43 public class SliderPanel extends GSliderPanel
45 static JInternalFrame conservationSlider;
47 static JInternalFrame PIDSlider;
51 boolean forConservation = true;
53 CollectionColourSchemeI cs;
56 * Creates a new SliderPanel object.
67 public SliderPanel(final AlignmentPanel ap, int value,
68 boolean forConserve, CollectionColourSchemeI scheme)
72 forConservation = forConserve;
73 undoButton.setVisible(false);
74 applyButton.setVisible(false);
78 label.setText(MessageManager
79 .getString("label.enter_value_increase_conservation_visibility"));
81 slider.setMaximum(100);
85 label.setText(MessageManager
86 .getString("label.enter_percentage_identity_above_which_colour_residues"));
88 slider.setMaximum(100);
91 slider.addChangeListener(new ChangeListener()
94 public void stateChanged(ChangeEvent evt)
96 valueField.setText(slider.getValue() + "");
97 valueChanged(slider.getValue());
101 slider.addMouseListener(new MouseAdapter()
104 public void mouseReleased(MouseEvent evt)
106 ap.paintAlignment(true);
110 slider.setValue(value);
111 valueField.setText(value + "");
124 * @return DOCUMENT ME!
126 public static int setConservationSlider(AlignmentPanel ap,
127 CollectionColourSchemeI cs, String source)
129 SliderPanel sp = null;
131 if (conservationSlider == null)
133 sp = new SliderPanel(ap, cs.getConservationInc(), true, cs);
134 conservationSlider = new JInternalFrame();
135 conservationSlider.setContentPane(sp);
136 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
140 sp = (SliderPanel) conservationSlider.getContentPane();
145 .setTitle(MessageManager.formatMessage(
146 "label.conservation_colour_increment",
147 new String[] { source }));
149 if (ap.av.getAlignment().getGroups() != null)
151 sp.setAllGroupsCheckEnabled(true);
155 sp.setAllGroupsCheckEnabled(false);
158 return sp.getValue();
164 public static void showConservationSlider()
168 PIDSlider.setClosed(true);
170 } catch (Exception ex)
174 if (!conservationSlider.isVisible())
176 Desktop.addInternalFrame(conservationSlider,
177 conservationSlider.getTitle(), 420, 90, false);
179 .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
182 public void internalFrameClosed(
183 javax.swing.event.InternalFrameEvent e)
185 conservationSlider = null;
188 conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
197 * @param collectionColourScheme
202 * @return DOCUMENT ME!
204 public static int setPIDSliderSource(AlignmentPanel ap,
205 CollectionColourSchemeI collectionColourScheme,
208 SliderPanel pid = null;
210 int threshold = collectionColourScheme.getThreshold();
212 if (PIDSlider == null)
214 pid = new SliderPanel(ap, threshold, false, collectionColourScheme);
215 PIDSlider = new JInternalFrame();
216 PIDSlider.setContentPane(pid);
217 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
221 pid = (SliderPanel) PIDSlider.getContentPane();
222 pid.cs = collectionColourScheme;
226 .setTitle(MessageManager.formatMessage(
227 "label.percentage_identity_threshold",
228 new String[] { source }));
230 if (ap.av.getAlignment().getGroups() != null)
232 pid.setAllGroupsCheckEnabled(true);
236 pid.setAllGroupsCheckEnabled(false);
239 return pid.getValue();
245 public static void showPIDSlider()
249 conservationSlider.setClosed(true);
250 conservationSlider = null;
251 } catch (Exception ex)
255 if (!PIDSlider.isVisible())
257 Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90,
259 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
261 .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
264 public void internalFrameClosed(
265 javax.swing.event.InternalFrameEvent e)
270 PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
275 * Updates the colour scheme with the current (identity threshold or
276 * conservation) percentage value. Also updates all groups if 'apply to all
277 * groups' is selected.
281 public void valueChanged(int percent)
283 if (!forConservation)
285 ap.av.setThreshold(percent);
287 updateColourScheme(percent, cs);
289 if (allGroupsCheck.isSelected())
291 for (SequenceGroup sg : ap.av.getAlignment().getGroups())
293 updateColourScheme(percent, sg.getGroupColourScheme());
297 ap.getSeqPanel().seqCanvas.repaint();
301 * Updates the colour scheme (if not null) with the current (identity
302 * threshold or conservation) percentage value
307 protected void updateColourScheme(int percent, CollectionColourSchemeI scheme)
315 scheme.setConservationInc(percent);
319 scheme.setThreshold(percent, ap.av.isIgnoreGapsConsensus());
329 public void setAllGroupsCheckEnabled(boolean b)
331 allGroupsCheck.setEnabled(b);
341 public void valueField_actionPerformed(ActionEvent e)
345 int i = Integer.parseInt(valueField.getText());
347 } catch (NumberFormatException ex)
349 valueField.setText(slider.getValue() + "");
359 public void setValue(int value)
361 slider.setValue(value);
367 * @return DOCUMENT ME!
369 public int getValue()
371 return Integer.parseInt(valueField.getText());
375 public void slider_mouseReleased(MouseEvent e)
377 if (ap.overviewPanel != null)
379 ap.overviewPanel.updateOverviewImage();
383 public static int getConservationValue()
385 return getValue(conservationSlider);
388 static int getValue(JInternalFrame slider)
390 return slider == null ? 0 : ((SliderPanel) slider.getContentPane())
394 public static int getPIDValue()
396 return getValue(PIDSlider);