update author list in license for (JAL-826)
[jalview.git] / src / jalview / gui / SliderPanel.java
index 23b76e3..4cbb985 100755 (executable)
-/*\r
- * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
- */\r
-package jalview.gui;\r
-\r
-import java.util.*;\r
-\r
-import java.awt.event.*;\r
-import javax.swing.*;\r
-import javax.swing.event.*;\r
-\r
-import jalview.datamodel.*;\r
-import jalview.jbgui.*;\r
-import jalview.schemes.*;\r
-\r
-/**\r
- * DOCUMENT ME!\r
- *\r
- * @author $author$\r
- * @version $Revision$\r
- */\r
-public class SliderPanel\r
-    extends GSliderPanel\r
-{\r
-  static JInternalFrame conservationSlider;\r
-  static JInternalFrame PIDSlider;\r
-  AlignmentPanel ap;\r
-  boolean forConservation = true;\r
-  ColourSchemeI cs;\r
-\r
-  /**\r
-   * Creates a new SliderPanel object.\r
-   *\r
-   * @param ap DOCUMENT ME!\r
-   * @param value DOCUMENT ME!\r
-   * @param forConserve DOCUMENT ME!\r
-   * @param cs DOCUMENT ME!\r
-   */\r
-  public SliderPanel(final AlignmentPanel ap, int value, boolean forConserve,\r
-                     ColourSchemeI cs)\r
-  {\r
-    this.ap = ap;\r
-    this.cs = cs;\r
-    forConservation = forConserve;\r
-    undoButton.setVisible(false);\r
-    applyButton.setVisible(false);\r
-\r
-    if (forConservation)\r
-    {\r
-      label.setText("Enter value to increase conservation visibility");\r
-      slider.setMinimum(0);\r
-      slider.setMaximum(100);\r
-    }\r
-    else\r
-    {\r
-      label.setText("Enter % identity above which to colour residues");\r
-      slider.setMinimum(0);\r
-      slider.setMaximum(100);\r
-    }\r
-\r
-    slider.addChangeListener(new ChangeListener()\r
-    {\r
-      public void stateChanged(ChangeEvent evt)\r
-      {\r
-        valueField.setText(slider.getValue() + "");\r
-        valueChanged(slider.getValue());\r
-      }\r
-    });\r
-\r
-    slider.addMouseListener(new MouseAdapter()\r
-    {\r
-      public void mouseReleased(MouseEvent evt)\r
-      {\r
-         ap.paintAlignment(true);\r
-      }\r
-    });\r
-\r
-    slider.setValue(value);\r
-    valueField.setText(value + "");\r
-  }\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   *\r
-   * @param ap DOCUMENT ME!\r
-   * @param cs DOCUMENT ME!\r
-   * @param source DOCUMENT ME!\r
-   *\r
-   * @return DOCUMENT ME!\r
-   */\r
-  public static int setConservationSlider(AlignmentPanel ap,\r
-                                          ColourSchemeI cs, String source)\r
-  {\r
-    SliderPanel sp = null;\r
-\r
-    if (conservationSlider == null)\r
-    {\r
-      sp = new SliderPanel(ap, cs.getConservationInc(), true, cs);\r
-      conservationSlider = new JInternalFrame();\r
-      conservationSlider.setContentPane(sp);\r
-      conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
-    }\r
-    else\r
-    {\r
-      sp = (SliderPanel) conservationSlider.getContentPane();\r
-      sp.cs = cs;\r
-    }\r
-\r
-    conservationSlider.setTitle("Conservation Colour Increment  (" +\r
-                                source + ")");\r
-\r
-    if (ap.av.alignment.getGroups() != null)\r
-    {\r
-      sp.setAllGroupsCheckEnabled(true);\r
-    }\r
-    else\r
-    {\r
-      sp.setAllGroupsCheckEnabled(false);\r
-    }\r
-\r
-    return sp.getValue();\r
-  }\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   */\r
-  public static void showConservationSlider()\r
-  {\r
-    try\r
-    {\r
-      PIDSlider.setClosed(true);\r
-      PIDSlider = null;\r
-    }\r
-    catch (Exception ex)\r
-    {\r
-    }\r
-\r
-    if (!conservationSlider.isVisible())\r
-    {\r
-      Desktop.addInternalFrame(conservationSlider,\r
-                               conservationSlider.getTitle(), 420, 90, false);\r
-      conservationSlider.addInternalFrameListener(new javax.swing.event.\r
-                                                  InternalFrameAdapter()\r
-      {\r
-        public void internalFrameClosed(\r
-            javax.swing.event.InternalFrameEvent e)\r
-        {\r
-          conservationSlider = null;\r
-        }\r
-      });\r
-      conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
-    }\r
-  }\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   *\r
-   * @param ap DOCUMENT ME!\r
-   * @param cs DOCUMENT ME!\r
-   * @param source DOCUMENT ME!\r
-   *\r
-   * @return DOCUMENT ME!\r
-   */\r
-  public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs,\r
-                                       String source)\r
-  {\r
-    SliderPanel pid = null;\r
-\r
-    int threshold = cs.getThreshold();\r
-\r
-    if (PIDSlider == null)\r
-    {\r
-      pid = new SliderPanel(ap, threshold, false, cs);\r
-      PIDSlider = new JInternalFrame();\r
-      PIDSlider.setContentPane(pid);\r
-      PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
-    }\r
-    else\r
-    {\r
-      pid = (SliderPanel) PIDSlider.getContentPane();\r
-      pid.cs = cs;\r
-    }\r
-\r
-    PIDSlider.setTitle("Percentage Identity Threshold (" + source + ")");\r
-\r
-    if (ap.av.alignment.getGroups() != null)\r
-    {\r
-      pid.setAllGroupsCheckEnabled(true);\r
-    }\r
-    else\r
-    {\r
-      pid.setAllGroupsCheckEnabled(false);\r
-    }\r
-\r
-    return pid.getValue();\r
-  }\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   */\r
-  public static void showPIDSlider()\r
-  {\r
-    try\r
-    {\r
-      conservationSlider.setClosed(true);\r
-      conservationSlider = null;\r
-    }\r
-    catch (Exception ex)\r
-    {\r
-    }\r
-\r
-    if (!PIDSlider.isVisible())\r
-    {\r
-      Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90,\r
-                               false);\r
-      PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
-      PIDSlider.addInternalFrameListener(new javax.swing.event.\r
-                                         InternalFrameAdapter()\r
-      {\r
-        public void internalFrameClosed(\r
-            javax.swing.event.InternalFrameEvent e)\r
-        {\r
-          PIDSlider = null;\r
-        }\r
-      });\r
-      PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
-    }\r
-  }\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   *\r
-   * @param i DOCUMENT ME!\r
-   */\r
-  public void valueChanged(int i)\r
-  {\r
-    if (cs == null)\r
-    {\r
-      return;\r
-    }\r
-\r
-    ColourSchemeI toChange = null;\r
-    Vector allGroups = null;\r
-    int groupIndex = 0;\r
-\r
-    if (allGroupsCheck.isSelected())\r
-    {\r
-      allGroups = ap.av.alignment.getGroups();\r
-      groupIndex = allGroups.size() - 1;\r
-    }\r
-    else\r
-    {\r
-      toChange = cs;\r
-    }\r
-\r
-    while (groupIndex > -1)\r
-    {\r
-      if (allGroups != null)\r
-      {\r
-        toChange = ( (SequenceGroup) allGroups.get(groupIndex)).cs;\r
-\r
-        if (toChange == null)\r
-        {\r
-          groupIndex--;\r
-\r
-          continue;\r
-        }\r
-      }\r
-\r
-      if (forConservation)\r
-      {\r
-        if (toChange.conservationApplied())\r
-        {\r
-          toChange.setConservationInc(i);\r
-        }\r
-      }\r
-      else\r
-      {\r
-        toChange.setThreshold(i, ap.av.getIgnoreGapsConsensus());\r
-      }\r
-\r
-      groupIndex--;\r
-    }\r
-\r
-    ap.seqPanel.seqCanvas.repaint();\r
-  }\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   *\r
-   * @param b DOCUMENT ME!\r
-   */\r
-  public void setAllGroupsCheckEnabled(boolean b)\r
-  {\r
-    allGroupsCheck.setEnabled(b);\r
-  }\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   *\r
-   * @param e DOCUMENT ME!\r
-   */\r
-  public void valueField_actionPerformed(ActionEvent e)\r
-  {\r
-    try\r
-    {\r
-      int i = Integer.parseInt(valueField.getText());\r
-      slider.setValue(i);\r
-    }\r
-    catch (NumberFormatException ex)\r
-    {\r
-      valueField.setText(slider.getValue() + "");\r
-    }\r
-  }\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   *\r
-   * @param value DOCUMENT ME!\r
-   */\r
-  public void setValue(int value)\r
-  {\r
-    slider.setValue(value);\r
-  }\r
-\r
-  /**\r
-   * DOCUMENT ME!\r
-   *\r
-   * @return DOCUMENT ME!\r
-   */\r
-  public int getValue()\r
-  {\r
-    return Integer.parseInt(valueField.getText());\r
-  }\r
-\r
-  public void slider_mouseReleased(MouseEvent e)\r
-  {\r
-    if (ap.overviewPanel != null)\r
-    {\r
-      ap.overviewPanel.updateOverviewImage();\r
-    }\r
-  }\r
-\r
-}\r
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * 
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package jalview.gui;
+
+import java.util.*;
+
+import java.awt.event.*;
+import javax.swing.*;
+import javax.swing.event.*;
+
+import jalview.datamodel.*;
+import jalview.jbgui.*;
+import jalview.schemes.*;
+
+/**
+ * DOCUMENT ME!
+ * 
+ * @author $author$
+ * @version $Revision$
+ */
+public class SliderPanel extends GSliderPanel
+{
+  static JInternalFrame conservationSlider;
+
+  static JInternalFrame PIDSlider;
+
+  AlignmentPanel ap;
+
+  boolean forConservation = true;
+
+  ColourSchemeI cs;
+
+  /**
+   * Creates a new SliderPanel object.
+   * 
+   * @param ap
+   *          DOCUMENT ME!
+   * @param value
+   *          DOCUMENT ME!
+   * @param forConserve
+   *          DOCUMENT ME!
+   * @param cs
+   *          DOCUMENT ME!
+   */
+  public SliderPanel(final AlignmentPanel ap, int value,
+          boolean forConserve, ColourSchemeI cs)
+  {
+    this.ap = ap;
+    this.cs = cs;
+    forConservation = forConserve;
+    undoButton.setVisible(false);
+    applyButton.setVisible(false);
+
+    if (forConservation)
+    {
+      label.setText("Enter value to increase conservation visibility");
+      slider.setMinimum(0);
+      slider.setMaximum(100);
+    }
+    else
+    {
+      label.setText("Enter % identity above which to colour residues");
+      slider.setMinimum(0);
+      slider.setMaximum(100);
+    }
+
+    slider.addChangeListener(new ChangeListener()
+    {
+      public void stateChanged(ChangeEvent evt)
+      {
+        valueField.setText(slider.getValue() + "");
+        valueChanged(slider.getValue());
+      }
+    });
+
+    slider.addMouseListener(new MouseAdapter()
+    {
+      public void mouseReleased(MouseEvent evt)
+      {
+        ap.paintAlignment(true);
+      }
+    });
+
+    slider.setValue(value);
+    valueField.setText(value + "");
+  }
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param ap
+   *          DOCUMENT ME!
+   * @param cs
+   *          DOCUMENT ME!
+   * @param source
+   *          DOCUMENT ME!
+   * 
+   * @return DOCUMENT ME!
+   */
+  public static int setConservationSlider(AlignmentPanel ap,
+          ColourSchemeI cs, String source)
+  {
+    SliderPanel sp = null;
+
+    if (conservationSlider == null)
+    {
+      sp = new SliderPanel(ap, cs.getConservationInc(), true, cs);
+      conservationSlider = new JInternalFrame();
+      conservationSlider.setContentPane(sp);
+      conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
+    }
+    else
+    {
+      sp = (SliderPanel) conservationSlider.getContentPane();
+      sp.cs = cs;
+    }
+
+    conservationSlider.setTitle("Conservation Colour Increment  (" + source
+            + ")");
+
+    if (ap.av.alignment.getGroups() != null)
+    {
+      sp.setAllGroupsCheckEnabled(true);
+    }
+    else
+    {
+      sp.setAllGroupsCheckEnabled(false);
+    }
+
+    return sp.getValue();
+  }
+
+  /**
+   * DOCUMENT ME!
+   */
+  public static void showConservationSlider()
+  {
+    try
+    {
+      PIDSlider.setClosed(true);
+      PIDSlider = null;
+    } catch (Exception ex)
+    {
+    }
+
+    if (!conservationSlider.isVisible())
+    {
+      Desktop.addInternalFrame(conservationSlider,
+              conservationSlider.getTitle(), 420, 90, false);
+      conservationSlider
+              .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
+              {
+                public void internalFrameClosed(
+                        javax.swing.event.InternalFrameEvent e)
+                {
+                  conservationSlider = null;
+                }
+              });
+      conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
+    }
+  }
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param ap
+   *          DOCUMENT ME!
+   * @param cs
+   *          DOCUMENT ME!
+   * @param source
+   *          DOCUMENT ME!
+   * 
+   * @return DOCUMENT ME!
+   */
+  public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs,
+          String source)
+  {
+    SliderPanel pid = null;
+
+    int threshold = cs.getThreshold();
+
+    if (PIDSlider == null)
+    {
+      pid = new SliderPanel(ap, threshold, false, cs);
+      PIDSlider = new JInternalFrame();
+      PIDSlider.setContentPane(pid);
+      PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
+    }
+    else
+    {
+      pid = (SliderPanel) PIDSlider.getContentPane();
+      pid.cs = cs;
+    }
+
+    PIDSlider.setTitle("Percentage Identity Threshold (" + source + ")");
+
+    if (ap.av.alignment.getGroups() != null)
+    {
+      pid.setAllGroupsCheckEnabled(true);
+    }
+    else
+    {
+      pid.setAllGroupsCheckEnabled(false);
+    }
+
+    return pid.getValue();
+  }
+
+  /**
+   * DOCUMENT ME!
+   */
+  public static void showPIDSlider()
+  {
+    try
+    {
+      conservationSlider.setClosed(true);
+      conservationSlider = null;
+    } catch (Exception ex)
+    {
+    }
+
+    if (!PIDSlider.isVisible())
+    {
+      Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90,
+              false);
+      PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
+      PIDSlider
+              .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
+              {
+                public void internalFrameClosed(
+                        javax.swing.event.InternalFrameEvent e)
+                {
+                  PIDSlider = null;
+                }
+              });
+      PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
+    }
+  }
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param i
+   *          DOCUMENT ME!
+   */
+  public void valueChanged(int i)
+  {
+    if (cs == null)
+    {
+      return;
+    }
+
+    ColourSchemeI toChange = null;
+    Vector allGroups = null;
+    int groupIndex = 0;
+
+    if (allGroupsCheck.isSelected())
+    {
+      allGroups = ap.av.alignment.getGroups();
+      groupIndex = allGroups.size() - 1;
+    }
+    else
+    {
+      toChange = cs;
+    }
+
+    while (groupIndex > -1)
+    {
+      if (allGroups != null)
+      {
+        toChange = ((SequenceGroup) allGroups.get(groupIndex)).cs;
+
+        if (toChange == null)
+        {
+          groupIndex--;
+
+          continue;
+        }
+      }
+
+      if (forConservation)
+      {
+        if (toChange.conservationApplied())
+        {
+          toChange.setConservationInc(i);
+        }
+      }
+      else
+      {
+        toChange.setThreshold(i, ap.av.getIgnoreGapsConsensus());
+      }
+
+      groupIndex--;
+    }
+
+    ap.seqPanel.seqCanvas.repaint();
+  }
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param b
+   *          DOCUMENT ME!
+   */
+  public void setAllGroupsCheckEnabled(boolean b)
+  {
+    allGroupsCheck.setEnabled(b);
+  }
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param e
+   *          DOCUMENT ME!
+   */
+  public void valueField_actionPerformed(ActionEvent e)
+  {
+    try
+    {
+      int i = Integer.parseInt(valueField.getText());
+      slider.setValue(i);
+    } catch (NumberFormatException ex)
+    {
+      valueField.setText(slider.getValue() + "");
+    }
+  }
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @param value
+   *          DOCUMENT ME!
+   */
+  public void setValue(int value)
+  {
+    slider.setValue(value);
+  }
+
+  /**
+   * DOCUMENT ME!
+   * 
+   * @return DOCUMENT ME!
+   */
+  public int getValue()
+  {
+    return Integer.parseInt(valueField.getText());
+  }
+
+  public void slider_mouseReleased(MouseEvent e)
+  {
+    if (ap.overviewPanel != null)
+    {
+      ap.overviewPanel.updateOverviewImage();
+    }
+  }
+
+}