IgnoreGapsConsensus
[jalview.git] / src / jalview / gui / SliderPanel.java
index de50cae..a9020c3 100755 (executable)
+/*\r
+ * Jalview - A Sequence Alignment Editor and Viewer\r
+ * Copyright (C) 2005 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 jalview.datamodel.*;\r
+\r
 import jalview.jbgui.*;\r
+\r
 import jalview.schemes.*;\r
-import jalview.datamodel.*;\r
+\r
 import java.awt.event.*;\r
-import javax.swing.event.*;\r
-import javax.swing.*;\r
+\r
 import java.util.*;\r
 \r
+import javax.swing.*;\r
+import javax.swing.event.*;\r
+\r
+\r
+/**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @author $author$\r
+ * @version $Revision$\r
+ */\r
 public class SliderPanel extends GSliderPanel\r
 {\r
-  AlignmentPanel ap;\r
-  boolean forConservation = true;\r
-  ColourSchemeI cs;\r
-\r
-  static JInternalFrame conservationSlider;\r
-  static JInternalFrame PIDSlider;\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(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
-  public static int setConservationSlider(AlignmentPanel ap, ColourSchemeI cs, String source)\r
-  {\r
-    SliderPanel sp = null;\r
-    ConservationColourScheme ccs = (ConservationColourScheme)cs;\r
-    int value = ccs.inc;\r
+        if (forConservation)\r
+        {\r
+            label.setText("Enter value to increase conservation visibility");\r
+            slider.setMinimum(0);\r
+            slider.setMaximum(50);\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
-    if(conservationSlider == null)\r
-    {\r
-      sp = new SliderPanel(ap, value, true, cs);\r
-      conservationSlider = new JInternalFrame();\r
-      conservationSlider.setContentPane(sp);\r
-      conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);\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.setValue(value);\r
+        valueField.setText(value + "");\r
     }\r
-    else\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
-        sp = (SliderPanel)conservationSlider.getContentPane();\r
-        sp.cs = cs;\r
-        sp.setValue(value);\r
-    }\r
+        SliderPanel sp = null;\r
+        ConservationColourScheme ccs = (ConservationColourScheme) cs;\r
 \r
-    conservationSlider.setTitle("Conservation Colour Increment  ("+source+")");\r
-    if(ap.av.alignment.getGroups()!=null)\r
-      sp.setAllGroupsCheckEnabled( true );\r
-    else\r
-      sp.setAllGroupsCheckEnabled( false);\r
+        if (conservationSlider == null)\r
+        {\r
+            sp = new SliderPanel(ap, ccs.inc, 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
-    return sp.getValue();\r
-  }\r
+        conservationSlider.setTitle("Conservation Colour Increment  (" +\r
+            source + ")");\r
 \r
-  public static void showConservationSlider()\r
-  {\r
-    try{\r
-      PIDSlider.setClosed(true);\r
-      PIDSlider = null;\r
-    }catch(Exception ex){}\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
-    if(!conservationSlider.isVisible())\r
+    /**\r
+     * DOCUMENT ME!\r
+     */\r
+    public static void showConservationSlider()\r
     {\r
-      Desktop.addInternalFrame(conservationSlider, conservationSlider.getTitle(), 420, 90, false);\r
-      conservationSlider.addInternalFrameListener(new javax.swing.event.\r
-                                                  InternalFrameAdapter()\r
-      {\r
-        public void internalFrameClosed(javax.swing.event.InternalFrameEvent e)\r
+        try\r
+        {\r
+            PIDSlider.setClosed(true);\r
+            PIDSlider = null;\r
+        }\r
+        catch (Exception ex)\r
         {\r
-          conservationSlider = null;\r
         }\r
-      });\r
-      conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
-    }\r
 \r
-  }\r
-\r
-  public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs, String source)\r
-   {\r
-     SliderPanel pid = null;\r
-     if(PIDSlider == null)\r
-     {\r
-       pid = new SliderPanel(ap, 50, 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
-     PIDSlider.setTitle("Percentage Identity Threshold ("+source+")");\r
-\r
-     if (ap.av.alignment.getGroups() != null)\r
-       pid.setAllGroupsCheckEnabled(true);\r
-     else\r
-       pid.setAllGroupsCheckEnabled(false);\r
-\r
-     return pid.getValue();\r
-\r
-   }\r
-\r
-   public static void showPIDSlider()\r
-   {\r
-     try{\r
-       conservationSlider.setClosed(true);\r
-       conservationSlider = null;\r
-     }catch(Exception ex){}\r
-\r
-     if(!PIDSlider.isVisible())\r
-    {\r
-      Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90, false);\r
-      PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
-      PIDSlider.addInternalFrameListener(new javax.swing.event.\r
-                                                  InternalFrameAdapter()\r
-      {\r
-        public void internalFrameClosed(javax.swing.event.InternalFrameEvent e)\r
+        if (!conservationSlider.isVisible())\r
         {\r
-          PIDSlider = null;\r
+            Desktop.addInternalFrame(conservationSlider,\r
+                conservationSlider.getTitle(), 420, 90, false);\r
+            conservationSlider.addInternalFrameListener(new javax.swing.event.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
-      PIDSlider.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 = 50;\r
 \r
-  public SliderPanel(AlignmentPanel ap, int value, boolean forConserve, ColourSchemeI cs)\r
-  {\r
-    this.ap = ap;\r
-    this.cs = cs;\r
-    forConservation = forConserve;\r
-    undoButton.setVisible(false);\r
-    applyButton.setVisible(false);\r
-    if(forConservation)\r
-    {\r
-      label.setText("Enter value to increase conservation visibility");\r
-      slider.setMinimum(0);\r
-      slider.setMaximum(50);\r
-    }\r
-    else\r
-    {\r
-      label.setText("Enter % identity above which to colour residues");\r
-      slider.setMinimum(0);\r
-      slider.setMaximum(100);\r
-    }\r
+        if (cs instanceof ResidueColourScheme)\r
+        {\r
+            threshold = (((ResidueColourScheme) cs).getThreshold());\r
+        }\r
+        else if (cs instanceof ScoreColourScheme)\r
+        {\r
+            threshold = (((ScoreColourScheme) cs).getThreshold());\r
+        }\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
-    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.setValue(value);\r
-    valueField.setText(value+"");\r
-  }\r
-\r
-  public void valueChanged(int i)\r
-  {\r
-    if(cs == null)\r
-      return;\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
-      toChange = cs;\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
-    while( groupIndex > -1 )\r
+    /**\r
+     * DOCUMENT ME!\r
+     */\r
+    public static void showPIDSlider()\r
     {\r
-      if(allGroups!=null)\r
-        toChange = ((SequenceGroup)allGroups.get(groupIndex)).cs;\r
-\r
-      if (forConservation)\r
-      {\r
-        if (toChange instanceof ConservationColourScheme)\r
-          ( (ConservationColourScheme) toChange).inc = i;\r
-      }\r
-      else\r
-      {\r
-        if (toChange.canThreshold())\r
-          ( (ResidueColourScheme) toChange).setThreshold(i);\r
-      }\r
-\r
-      groupIndex--;\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.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
-    ap.seqPanel.repaint();\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
-  }\r
+        ColourSchemeI toChange = null;\r
+        Vector allGroups = null;\r
+        int groupIndex = 0;\r
 \r
-  public void setAllGroupsCheckEnabled(boolean b)\r
-  {\r
-    allGroupsCheck.setEnabled(b);\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 instanceof ConservationColourScheme)\r
+                {\r
+                    ((ConservationColourScheme) toChange).inc = i;\r
+                }\r
+            }\r
+            else\r
+            {\r
+                ((ResidueColourScheme) toChange).setThreshold(i, ap.av.getIgnoreGapsConsensus());\r
+            }\r
+\r
+            groupIndex--;\r
+        }\r
 \r
-  public void valueField_actionPerformed(ActionEvent e)\r
-  {\r
-    try{\r
-      int i = Integer.parseInt(valueField.getText());\r
-      slider.setValue(i);\r
+        ap.seqPanel.seqCanvas.repaint();\r
     }\r
-    catch(Exception ex)\r
+\r
+    /**\r
+     * DOCUMENT ME!\r
+     *\r
+     * @param b DOCUMENT ME!\r
+     */\r
+    public void setAllGroupsCheckEnabled(boolean b)\r
     {\r
-      valueField.setText( slider.getValue()+"" );\r
+        allGroupsCheck.setEnabled(b);\r
     }\r
-  }\r
 \r
-  public void setValue(int value)\r
-  {\r
-    slider.setValue(value);\r
-  }\r
-  public int getValue()\r
-  {\r
-    return Integer.parseInt(valueField.getText());\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 (Exception 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