Merge branch 'develop' into features/JAL-2360colourSchemeApplicability
[jalview.git] / src / jalview / gui / SliderPanel.java
index 77fa400..83193dc 100755 (executable)
@@ -1,31 +1,39 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * 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.
- * 
+ * 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/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.gui;
 
-import java.util.*;
+import jalview.datamodel.SequenceGroup;
+import jalview.jbgui.GSliderPanel;
+import jalview.schemes.ColourSchemeI;
+import jalview.util.MessageManager;
 
-import java.awt.event.*;
-import javax.swing.*;
-import javax.swing.event.*;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.beans.PropertyVetoException;
+import java.util.Iterator;
 
-import jalview.datamodel.*;
-import jalview.jbgui.*;
-import jalview.schemes.*;
+import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
 
 /**
  * DOCUMENT ME!
@@ -68,19 +76,22 @@ public class SliderPanel extends GSliderPanel
 
     if (forConservation)
     {
-      label.setText("Enter value to increase conservation visibility");
+      label.setText(MessageManager
+              .getString("label.enter_value_increase_conservation_visibility"));
       slider.setMinimum(0);
       slider.setMaximum(100);
     }
     else
     {
-      label.setText("Enter % identity above which to colour residues");
+      label.setText(MessageManager
+              .getString("label.enter_percentage_identity_above_which_colour_residues"));
       slider.setMinimum(0);
       slider.setMaximum(100);
     }
 
     slider.addChangeListener(new ChangeListener()
     {
+      @Override
       public void stateChanged(ChangeEvent evt)
       {
         valueField.setText(slider.getValue() + "");
@@ -90,6 +101,7 @@ public class SliderPanel extends GSliderPanel
 
     slider.addMouseListener(new MouseAdapter()
     {
+      @Override
       public void mouseReleased(MouseEvent evt)
       {
         ap.paintAlignment(true);
@@ -130,10 +142,12 @@ public class SliderPanel extends GSliderPanel
       sp.cs = cs;
     }
 
-    conservationSlider.setTitle("Conservation Colour Increment  (" + source
-            + ")");
+    conservationSlider
+            .setTitle(MessageManager.formatMessage(
+                    "label.conservation_colour_increment",
+                    new String[] { source }));
 
-    if (ap.av.alignment.getGroups() != null)
+    if (ap.av.getAlignment().getGroups() != null)
     {
       sp.setAllGroupsCheckEnabled(true);
     }
@@ -146,6 +160,40 @@ public class SliderPanel extends GSliderPanel
   }
 
   /**
+   * Hides the PID slider panel if it is shown
+   */
+  public static void hidePIDSlider()
+  {
+    if (PIDSlider != null)
+    {
+      try
+      {
+        PIDSlider.setClosed(true);
+        PIDSlider = null;
+      } catch (PropertyVetoException ex)
+      {
+      }
+    }
+  }
+
+  /**
+   * Hides the conservation slider panel if it is shown
+   */
+  public static void hideConservationSlider()
+  {
+    if (conservationSlider != null)
+    {
+      try
+      {
+        conservationSlider.setClosed(true);
+        conservationSlider = null;
+      } catch (PropertyVetoException ex)
+      {
+      }
+    }
+  }
+
+  /**
    * DOCUMENT ME!
    */
   public static void showConservationSlider()
@@ -160,11 +208,12 @@ public class SliderPanel extends GSliderPanel
 
     if (!conservationSlider.isVisible())
     {
-      Desktop.addInternalFrame(conservationSlider, conservationSlider
-              .getTitle(), 420, 90, false);
+      Desktop.addInternalFrame(conservationSlider,
+              conservationSlider.getTitle(), 420, 90, false);
       conservationSlider
               .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
               {
+                @Override
                 public void internalFrameClosed(
                         javax.swing.event.InternalFrameEvent e)
                 {
@@ -207,9 +256,12 @@ public class SliderPanel extends GSliderPanel
       pid.cs = cs;
     }
 
-    PIDSlider.setTitle("Percentage Identity Threshold (" + source + ")");
+    PIDSlider
+            .setTitle(MessageManager.formatMessage(
+                    "label.percentage_identity_threshold",
+                    new String[] { source }));
 
-    if (ap.av.alignment.getGroups() != null)
+    if (ap.av.getAlignment().getGroups() != null)
     {
       pid.setAllGroupsCheckEnabled(true);
     }
@@ -242,6 +294,7 @@ public class SliderPanel extends GSliderPanel
       PIDSlider
               .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
               {
+                @Override
                 public void internalFrameClosed(
                         javax.swing.event.InternalFrameEvent e)
                 {
@@ -265,50 +318,39 @@ public class SliderPanel extends GSliderPanel
       return;
     }
 
-    ColourSchemeI toChange = null;
-    Vector allGroups = null;
-    int groupIndex = 0;
+    ColourSchemeI toChange = cs;
+    Iterator<SequenceGroup> allGroups = null;
 
     if (allGroupsCheck.isSelected())
     {
-      allGroups = ap.av.alignment.getGroups();
-      groupIndex = allGroups.size() - 1;
-    }
-    else
-    {
-      toChange = cs;
+      allGroups = ap.av.getAlignment().getGroups().listIterator();
     }
 
-    while (groupIndex > -1)
+    while (toChange != null)
     {
-      if (allGroups != null)
+      if (forConservation)
       {
-        toChange = ((SequenceGroup) allGroups.get(groupIndex)).cs;
-
-        if (toChange == null)
-        {
-          groupIndex--;
-
-          continue;
-        }
+        toChange.setConservationInc(i);
       }
-
-      if (forConservation)
+      else
+      {
+        toChange.setThreshold(i, ap.av.isIgnoreGapsConsensus());
+      }
+      if (allGroups != null && allGroups.hasNext())
       {
-        if (toChange.conservationApplied())
+        while ((toChange = allGroups.next().cs) == null
+                && allGroups.hasNext())
         {
-          toChange.setConservationInc(i);
+          ;
         }
       }
       else
       {
-        toChange.setThreshold(i, ap.av.getIgnoreGapsConsensus());
+        toChange = null;
       }
-
-      groupIndex--;
     }
 
-    ap.seqPanel.seqCanvas.repaint();
+    ap.getSeqPanel().seqCanvas.repaint();
   }
 
   /**
@@ -325,24 +367,6 @@ public class SliderPanel extends GSliderPanel
   /**
    * 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!
    */
@@ -361,6 +385,7 @@ public class SliderPanel extends GSliderPanel
     return Integer.parseInt(valueField.getText());
   }
 
+  @Override
   public void slider_mouseReleased(MouseEvent e)
   {
     if (ap.overviewPanel != null)