JAL-2069 spike updated with latest (FeatureTypeSettings)
[jalview.git] / src / jalview / appletgui / FeatureColourChooser.java
index f460389..d9eae11 100644 (file)
@@ -42,6 +42,8 @@ import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.AdjustmentEvent;
 import java.awt.event.AdjustmentListener;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.awt.event.MouseEvent;
@@ -56,6 +58,8 @@ public class FeatureColourChooser extends Panel implements ActionListener,
    */
   private static final int SCALE_FACTOR_1K = 1000;
 
+  private static final String COLON = ":";
+
   private JVDialog frame;
 
   private Frame owner;
@@ -156,8 +160,8 @@ public class FeatureColourChooser extends Panel implements ActionListener,
     } catch (Exception ex)
     {
     }
-    threshold.select(cs.isAboveThreshold() ? 1 : (cs.isBelowThreshold() ? 2
-            : 0));
+    threshold.select(
+            cs.isAboveThreshold() ? 1 : (cs.isBelowThreshold() ? 2 : 0));
 
     adjusting = false;
     changeColour(true);
@@ -166,8 +170,8 @@ public class FeatureColourChooser extends Panel implements ActionListener,
     slider.addMouseListener(this);
     owner = (af != null) ? af : fs.frame;
     frame = new JVDialog(owner, MessageManager.formatMessage(
-            "label.graduated_color_for_params", new String[] { type }),
-            true, 480, 248);
+            "label.variable_color_for", new String[] { type }), true, 480,
+            248);
     frame.setMainPanel(this);
     validate();
     frame.setVisible(true);
@@ -196,8 +200,10 @@ public class FeatureColourChooser extends Panel implements ActionListener,
 
   private void jbInit() throws Exception
   {
-    Label minLabel = new Label(MessageManager.getString("label.min")), maxLabel = new Label(
-            MessageManager.getString("label.max"));
+    Label minLabel = new Label(
+            MessageManager.getString("label.min_value") + COLON);
+    Label maxLabel = new Label(
+            MessageManager.getString("label.max_value") + COLON);
     minLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
     maxLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
     // minColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
@@ -232,6 +238,14 @@ public class FeatureColourChooser extends Panel implements ActionListener,
     threshold.addItem(MessageManager
             .getString("label.threshold_feature_below_threshold"));
     thresholdValue.addActionListener(this);
+    thresholdValue.addFocusListener(new FocusAdapter()
+    {
+      @Override
+      public void focusLost(FocusEvent e)
+      {
+        thresholdValue_actionPerformed();
+      }
+    });
     slider.setBackground(Color.white);
     slider.setEnabled(false);
     slider.setSize(new Dimension(93, 21));
@@ -243,13 +257,13 @@ public class FeatureColourChooser extends Panel implements ActionListener,
     jPanel3.setBackground(Color.white);
 
     colourFromLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
-    colourFromLabel.setLabel(MessageManager
-            .getString("label.colour_by_label"));
+    colourFromLabel
+            .setLabel(MessageManager.getString("label.colour_by_label"));
     colourFromLabel.setSize(new Dimension(139, 22));
     // threshold.setBounds(new Rectangle(11, 3, 139, 22));
     thresholdIsMin.setBackground(Color.white);
-    thresholdIsMin.setLabel(MessageManager
-            .getString("label.threshold_minmax"));
+    thresholdIsMin
+            .setLabel(MessageManager.getString("label.threshold_minmax"));
     thresholdIsMin.setSize(new Dimension(135, 23));
     // thresholdIsMin.setBounds(new Rectangle(328, 3, 135, 23));
     jPanel1.add(minLabel);
@@ -272,14 +286,7 @@ public class FeatureColourChooser extends Panel implements ActionListener,
   {
     if (evt.getSource() == thresholdValue)
     {
-      try
-      {
-        float f = new Float(thresholdValue.getText()).floatValue();
-        slider.setValue((int) (f * SCALE_FACTOR_1K));
-        adjustmentValueChanged(null);
-      } catch (NumberFormatException ex)
-      {
-      }
+      thresholdValue_actionPerformed();
     }
     else if (evt.getSource() == minColour)
     {
@@ -295,6 +302,26 @@ public class FeatureColourChooser extends Panel implements ActionListener,
     }
   }
 
+  /**
+   * Action on input of a value for colour score threshold
+   */
+  protected void thresholdValue_actionPerformed()
+  {
+    try
+    {
+      float f = new Float(thresholdValue.getText()).floatValue();
+      slider.setValue((int) (f * SCALE_FACTOR_1K));
+      adjustmentValueChanged(null);
+
+      /*
+       * force repaint of any Overview window or structure
+       */
+      changeColour(true);
+    } catch (NumberFormatException ex)
+    {
+    }
+  }
+
   @Override
   public void itemStateChanged(ItemEvent evt)
   {
@@ -333,9 +360,9 @@ public class FeatureColourChooser extends Panel implements ActionListener,
   {
     if (newCol == null)
     {
-      new UserDefinedColours(this,
-              minColour.getBackground(), owner,
-              MessageManager.getString("label.select_colour_minimum_value"));
+      new UserDefinedColours(this, minColour.getBackground(), owner,
+              MessageManager
+                      .getString("label.select_colour_minimum_value"));
     }
     else
     {
@@ -351,9 +378,9 @@ public class FeatureColourChooser extends Panel implements ActionListener,
   {
     if (newCol == null)
     {
-      new UserDefinedColours(this,
-              maxColour.getBackground(), owner,
-              MessageManager.getString("label.select_colour_maximum_value"));
+      new UserDefinedColours(this, maxColour.getBackground(), owner,
+              MessageManager
+                      .getString("label.select_colour_maximum_value"));
     }
     else
     {
@@ -372,14 +399,14 @@ public class FeatureColourChooser extends Panel implements ActionListener,
       return;
     }
 
-    int aboveThreshold = AnnotationColourGradient.NO_THRESHOLD;
+    int thresholdOption = AnnotationColourGradient.NO_THRESHOLD;
     if (threshold.getSelectedIndex() == 1)
     {
-      aboveThreshold = AnnotationColourGradient.ABOVE_THRESHOLD;
+      thresholdOption = AnnotationColourGradient.ABOVE_THRESHOLD;
     }
     else if (threshold.getSelectedIndex() == 2)
     {
-      aboveThreshold = AnnotationColourGradient.BELOW_THRESHOLD;
+      thresholdOption = AnnotationColourGradient.BELOW_THRESHOLD;
     }
 
     slider.setEnabled(true);
@@ -390,14 +417,14 @@ public class FeatureColourChooser extends Panel implements ActionListener,
     acg.setColourByLabel(colourFromLabel.getState());
     maxColour.setEnabled(!colourFromLabel.getState());
     minColour.setEnabled(!colourFromLabel.getState());
-    if (aboveThreshold == AnnotationColourGradient.NO_THRESHOLD)
+    if (thresholdOption == AnnotationColourGradient.NO_THRESHOLD)
     {
       slider.setEnabled(false);
       thresholdValue.setEnabled(false);
       thresholdValue.setText("");
     }
 
-    if (aboveThreshold != AnnotationColourGradient.NO_THRESHOLD)
+    if (thresholdOption != AnnotationColourGradient.NO_THRESHOLD)
     {
       adjusting = true;
       acg.setThreshold(threshline.value);
@@ -411,11 +438,15 @@ public class FeatureColourChooser extends Panel implements ActionListener,
       adjusting = false;
     }
 
-    acg.setAboveThreshold(true);
+    acg.setAboveThreshold(
+            thresholdOption == AnnotationColourGradient.ABOVE_THRESHOLD);
+    acg.setBelowThreshold(
+            thresholdOption == AnnotationColourGradient.BELOW_THRESHOLD);
+
     if (thresholdIsMin.getState()
-            && aboveThreshold != AnnotationColourGradient.NO_THRESHOLD)
+            && thresholdOption != AnnotationColourGradient.NO_THRESHOLD)
     {
-      if (aboveThreshold == AnnotationColourGradient.ABOVE_THRESHOLD)
+      if (thresholdOption == AnnotationColourGradient.ABOVE_THRESHOLD)
       {
         acg = new FeatureColour(acg, threshline.value, max);
       }