Merge branch 'features/pca_jaxb_datasetrefs_JAL-3171_JAL-3063_JAL-1767' into develop
[jalview.git] / src / jalview / gui / FeatureTypeSettings.java
index c572798..58bbbe8 100644 (file)
@@ -214,28 +214,14 @@ public class FeatureTypeSettings extends JalviewDialog
    */
   public FeatureTypeSettings(FeatureRenderer frender, String theType)
   {
-    this(frender, false, theType);
-  }
-
-  /**
-   * Constructor, with option to make a blocking dialog (has to complete in the
-   * AWT event queue thread). Currently this option is always set to false.
-   * 
-   * @param frender
-   * @param blocking
-   * @param theType
-   */
-  FeatureTypeSettings(FeatureRenderer frender, boolean blocking,
-          String theType)
-  {
     this.fr = frender;
     this.featureType = theType;
     ap = fr.ap;
     originalFilter = fr.getFeatureFilter(theType);
     originalColour = fr.getFeatureColours().get(theType);
-
+    
     adjusting = true;
-
+    
     try
     {
       initialise();
@@ -244,20 +230,19 @@ public class FeatureTypeSettings extends JalviewDialog
       ex.printStackTrace();
       return;
     }
-
+    
     updateColoursTab();
-
+    
     updateFiltersTab();
-
+    
     adjusting = false;
-
+    
     colourChanged(false);
-
+    
     String title = MessageManager
             .formatMessage("label.display_settings_for", new String[]
             { theType });
-    initDialogFrame(this, true, blocking, title, 500, 500);
-
+    initDialogFrame(this, true, false, title, 580, 500);
     waitForInput();
   }
 
@@ -280,9 +265,9 @@ public class FeatureTypeSettings extends JalviewDialog
        */
       if (fc.isSimpleColour())
       {
-        simpleColour.setSelected(true);
         singleColour.setBackground(fc.getColour());
         singleColour.setForeground(fc.getColour());
+        simpleColour.setSelected(true);
       }
 
       /*
@@ -380,7 +365,7 @@ public class FeatureTypeSettings extends JalviewDialog
                         : BELOW_THRESHOLD_OPTION);
         slider.setEnabled(true);
         slider.setValue((int) (fc.getThreshold() * scaleFactor));
-        thresholdValue.setText(String.valueOf(getRoundedSliderValue()));
+        thresholdValue.setText(String.valueOf(fc.getThreshold()));
         thresholdValue.setEnabled(true);
         thresholdIsMin.setEnabled(true);
       }
@@ -577,12 +562,11 @@ public class FeatureTypeSettings extends JalviewDialog
     maxColour.setBorder(new LineBorder(Color.black));
 
     /*
-     * default max colour to current colour (if a plain colour),
-     * or to Black if colour by label;  make min colour a pale
-     * version of max colour
+     * default max colour to last plain colour;
+     * make min colour a pale version of max colour
      */
     FeatureColourI fc = fr.getFeatureColours().get(featureType);
-    Color bg = fc.isSimpleColour() ? fc.getColour() : Color.BLACK;
+    Color bg = fc.getColour() == null ? Color.BLACK : fc.getColour();
     maxColour.setBackground(bg);
     minColour.setBackground(ColorUtils.bleachColour(bg, 0.9f));
 
@@ -667,6 +651,7 @@ public class FeatureTypeSettings extends JalviewDialog
         {
           thresholdValue
                   .setText(String.valueOf(slider.getValue() / scaleFactor));
+          thresholdValue.setBackground(Color.white); // to reset red for invalid
           sliderValueChanged();
         }
       }
@@ -742,8 +727,6 @@ public class FeatureTypeSettings extends JalviewDialog
      */
     JPanel simpleColourPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
     simpleColourPanel.setBackground(Color.white);
-//    JvSwingUtils.createTitledBorder(simpleColourPanel,
-//            MessageManager.getString("label.simple"), true);
     colourByPanel.add(simpleColourPanel);
 
     simpleColour = new JRadioButton(
@@ -756,15 +739,24 @@ public class FeatureTypeSettings extends JalviewDialog
       {
         if (simpleColour.isSelected() && !adjusting)
         {
-          showColourChooser(singleColour, "label.select_colour");
+          colourChanged(true);
         }
       }
-
     });
 
     singleColour.setFont(JvSwingUtils.getLabelFont());
     singleColour.setBorder(BorderFactory.createLineBorder(Color.black));
     singleColour.setPreferredSize(new Dimension(40, 20));
+    if (originalColour.isGraduatedColour())
+    {
+      singleColour.setBackground(originalColour.getMaxColour());
+      singleColour.setForeground(originalColour.getMaxColour());
+    }
+    else
+    {
+      singleColour.setBackground(originalColour.getColour());
+      singleColour.setForeground(originalColour.getColour());
+    }
     singleColour.addMouseListener(new MouseAdapter()
     {
       @Override
@@ -901,8 +893,8 @@ public class FeatureTypeSettings extends JalviewDialog
      */
     if (byCategory.isSelected())
     {
-      Color c = this.getBackground();
-      FeatureColourI fc = new FeatureColour(c, c, null, 0f, 0f);
+      Color c = singleColour.getBackground();
+      FeatureColourI fc = new FeatureColour(c);
       fc.setColourByLabel(true);
       String byWhat = (String) colourByTextCombo.getSelectedItem();
       if (!LABEL_18N.equals(byWhat))
@@ -1027,21 +1019,23 @@ public class FeatureTypeSettings extends JalviewDialog
   {
     try
     {
+      /*
+       * set 'adjusting' flag while moving the slider, so it 
+       * doesn't then in turn change the value (with rounding)
+       */
       adjusting = true;
       float f = Float.parseFloat(thresholdValue.getText());
+      f = Float.max(f,  this.min);
+      f = Float.min(f, this.max);
+      thresholdValue.setText(String.valueOf(f));
       slider.setValue((int) (f * scaleFactor));
       threshline.value = f;
       thresholdValue.setBackground(Color.white); // ok
-
-      /*
-       * force repaint of any Overview window or structure
-       */
-      ap.paintAlignment(true, true);
+      adjusting = false;
+      colourChanged(true);
     } catch (NumberFormatException ex)
     {
       thresholdValue.setBackground(Color.red); // not ok
-    } finally
-    {
       adjusting = false;
     }
   }