Merge branch 'feature/JAL-3143ensemblJSON' into
[jalview.git] / src / jalview / gui / FeatureTypeSettings.java
index 8ea966a..a6b986e 100644 (file)
@@ -62,7 +62,6 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
 import javax.swing.JSlider;
-import javax.swing.JTabbedPane;
 import javax.swing.JTextField;
 import javax.swing.border.LineBorder;
 import javax.swing.event.ChangeEvent;
@@ -154,10 +153,9 @@ public class FeatureTypeSettings extends JalviewDialog
 
   JRadioButton graduatedColour = new JRadioButton();
 
-  /**
-   * colours and filters are shown in tabbed view or single content pane
-   */
-  JPanel coloursPanel, filtersPanel;
+  JPanel coloursPanel;
+  
+  JPanel filtersPanel;
 
   JPanel singleColour = new JPanel();
 
@@ -213,28 +211,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();
@@ -243,28 +227,27 @@ public class FeatureTypeSettings extends JalviewDialog
       ex.printStackTrace();
       return;
     }
-
-    updateColoursTab();
-
-    updateFiltersTab();
-
+    
+    updateColoursPanel();
+    
+    updateFiltersPanel();
+    
     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, 500, 500);
     waitForInput();
   }
 
   /**
-   * Configures the widgets on the Colours tab according to the current feature
+   * Configures the widgets on the Colours panel according to the current feature
    * colour scheme
    */
-  private void updateColoursTab()
+  private void updateColoursPanel()
   {
     FeatureColourI fc = fr.getFeatureColours().get(featureType);
 
@@ -279,9 +262,9 @@ public class FeatureTypeSettings extends JalviewDialog
        */
       if (fc.isSimpleColour())
       {
-        simpleColour.setSelected(true);
         singleColour.setBackground(fc.getColour());
         singleColour.setForeground(fc.getColour());
+        simpleColour.setSelected(true);
       }
 
       /*
@@ -416,13 +399,13 @@ public class FeatureTypeSettings extends JalviewDialog
     };
 
     /*
-     * first panel/tab: colour options
+     * first panel: colour options
      */
     JPanel coloursPanel = initialiseColoursPanel();
     this.add(coloursPanel, BorderLayout.NORTH);
 
     /*
-     * second panel/tab: filter options
+     * second panel: filter options
      */
     JPanel filtersPanel = initialiseFiltersPanel();
     this.add(filtersPanel, BorderLayout.CENTER);
@@ -576,12 +559,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));
 
@@ -741,8 +723,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(
@@ -755,7 +735,7 @@ public class FeatureTypeSettings extends JalviewDialog
       {
         if (simpleColour.isSelected() && !adjusting)
         {
-          showColourChooser(singleColour, "label.select_colour");
+          colourChanged(true);
         }
       }
     });
@@ -763,6 +743,16 @@ public class FeatureTypeSettings extends JalviewDialog
     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
@@ -890,7 +880,7 @@ public class FeatureTypeSettings extends JalviewDialog
     fr.setColour(featureType, acg);
     ap.paintAlignment(updateStructsAndOverview, updateStructsAndOverview);
 
-    updateColoursTab();
+    updateColoursPanel();
   }
 
   /**
@@ -913,8 +903,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))
@@ -1228,7 +1218,7 @@ public class FeatureTypeSettings extends JalviewDialog
    * for adding a condition. This should be called after a filter has been
    * removed, added or amended.
    */
-  private void updateFiltersTab()
+  private void updateFiltersPanel()
   {
     /*
      * clear the panel and list of filter conditions
@@ -1763,6 +1753,6 @@ public class FeatureTypeSettings extends JalviewDialog
     fr.setFeatureFilter(featureType, combined.isEmpty() ? null : combined);
     ap.paintAlignment(true, true);
 
-    updateFiltersTab();
+    updateFiltersPanel();
   }
 }