JAL-2385 more tests/bug fixes mostly for gui.SliderPanel and some
[jalview.git] / src / jalview / gui / SliderPanel.java
index 1793a9b..0c4e03e 100755 (executable)
@@ -44,6 +44,8 @@ import javax.swing.event.InternalFrameEvent;
  */
 public class SliderPanel extends GSliderPanel
 {
+  private static final String BACKGROUND = "Background";
+
   static JInternalFrame conservationSlider;
 
   static JInternalFrame PIDSlider;
@@ -54,16 +56,22 @@ public class SliderPanel extends GSliderPanel
 
   ResidueShaderI cs;
 
-  private static SliderPanel sliderPanel;
-
   /**
-   * Returns the currently active slider panel (or null if none).
+   * Returns the currently displayed slider panel (or null if none).
    * 
    * @return
    */
   public static SliderPanel getSliderPanel()
   {
-    return sliderPanel;
+    if (conservationSlider != null && conservationSlider.isVisible())
+    {
+      return (SliderPanel) conservationSlider.getContentPane();
+    }
+    if (PIDSlider != null && PIDSlider.isVisible())
+    {
+      return (SliderPanel) PIDSlider.getContentPane();
+    }
+    return null;
   }
 
   /**
@@ -126,25 +134,25 @@ public class SliderPanel extends GSliderPanel
   }
 
   /**
-   * DOCUMENT ME!
+   * Method to 'set focus' of the Conservation slider panel
    * 
    * @param ap
-   *          DOCUMENT ME!
-   * @param ccs
-   *          DOCUMENT ME!
+   *          the panel to repaint on change of slider
+   * @param rs
+   *          the colour scheme to update on change of slider
    * @param source
-   *          DOCUMENT ME!
+   *          a text description for the panel's title
    * 
-   * @return DOCUMENT ME!
+   * @return
    */
   public static int setConservationSlider(AlignmentPanel ap,
-          ResidueShaderI ccs, String source)
+          ResidueShaderI rs, String source)
   {
-    sliderPanel = null;
+    SliderPanel sliderPanel = null;
 
     if (conservationSlider == null)
     {
-      sliderPanel = new SliderPanel(ap, ccs.getConservationInc(), true, ccs);
+      sliderPanel = new SliderPanel(ap, rs.getConservationInc(), true, rs);
       conservationSlider = new JInternalFrame();
       conservationSlider.setContentPane(sliderPanel);
       conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
@@ -152,14 +160,15 @@ public class SliderPanel extends GSliderPanel
     else
     {
       sliderPanel = (SliderPanel) conservationSlider.getContentPane();
-      sliderPanel.valueField.setText(String.valueOf(ccs.getConservationInc()));
-      sliderPanel.cs = ccs;
+      sliderPanel.valueField.setText(String.valueOf(rs.getConservationInc()));
+      sliderPanel.cs = rs;
+      sliderPanel.ap = ap;
+      sliderPanel.slider.setValue(rs.getConservationInc());
     }
 
-    conservationSlider
-            .setTitle(MessageManager.formatMessage(
-                    "label.conservation_colour_increment",
-                    new String[] { source }));
+    conservationSlider.setTitle(MessageManager.formatMessage(
+            "label.conservation_colour_increment",
+            new String[] { source == null ? BACKGROUND : source }));
 
     if (ap.av.getAlignment().getGroups() != null)
     {
@@ -232,25 +241,27 @@ public class SliderPanel extends GSliderPanel
   }
 
   /**
-   * DOCUMENT ME!
+   * Method to 'set focus' of the PID slider panel
    * 
    * @param ap
-   *          DOCUMENT ME!
-   * @param ccs
-   *          DOCUMENT ME!
+   *          the panel to repaint on change of slider
+   * @param rs
+   *          the colour scheme to update on change of slider
    * @param source
-   *          DOCUMENT ME!
+   *          a text description for the panel's title
    * 
-   * @return DOCUMENT ME!
+   * @return
    */
   public static int setPIDSliderSource(AlignmentPanel ap,
-          ResidueShaderI ccs, String source)
+          ResidueShaderI rs, String source)
   {
-    int threshold = ccs.getThreshold();
+    int threshold = rs.getThreshold();
+
+    SliderPanel sliderPanel = null;
 
     if (PIDSlider == null)
     {
-      sliderPanel = new SliderPanel(ap, threshold, false, ccs);
+      sliderPanel = new SliderPanel(ap, threshold, false, rs);
       PIDSlider = new JInternalFrame();
       PIDSlider.setContentPane(sliderPanel);
       PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
@@ -258,14 +269,15 @@ public class SliderPanel extends GSliderPanel
     else
     {
       sliderPanel = (SliderPanel) PIDSlider.getContentPane();
-      sliderPanel.cs = ccs;
-      sliderPanel.valueField.setText(String.valueOf(ccs.getThreshold()));
+      sliderPanel.cs = rs;
+      sliderPanel.ap = ap;
+      sliderPanel.valueField.setText(String.valueOf(rs.getThreshold()));
+      sliderPanel.slider.setValue(rs.getThreshold());
     }
 
-    PIDSlider
-            .setTitle(MessageManager.formatMessage(
-                    "label.percentage_identity_threshold",
-                    new String[] { source }));
+    PIDSlider.setTitle(MessageManager.formatMessage(
+            "label.percentage_identity_threshold",
+            new String[] { source == null ? BACKGROUND : source }));
 
     if (ap.av.getAlignment().getGroups() != null)
     {