JAL-3438 spotless for 2.11.2.0
[jalview.git] / src / jalview / gui / AnnotationColourChooser.java
index 1f86d87..4e9a26d 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -24,6 +24,7 @@ import jalview.bin.Cache;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.GraphLine;
 import jalview.datamodel.SequenceGroup;
+import jalview.gui.JalviewColourChooser.ColourChooserListener;
 import jalview.schemes.AnnotationColourGradient;
 import jalview.schemes.ColourSchemeI;
 import jalview.util.MessageManager;
@@ -42,102 +43,58 @@ import java.util.Vector;
 import javax.swing.BorderFactory;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
-import javax.swing.JColorChooser;
 import javax.swing.JComboBox;
 import javax.swing.JInternalFrame;
 import javax.swing.JLayeredPane;
 import javax.swing.JPanel;
-import javax.swing.JSlider;
-import javax.swing.JTextField;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 import net.miginfocom.swing.MigLayout;
 
-public class AnnotationColourChooser extends JPanel
+@SuppressWarnings("serial")
+public class AnnotationColourChooser extends AnnotationRowFilter
 {
-  JInternalFrame frame;
+  private ColourSchemeI oldcs;
 
-  AlignViewport av;
+  private JButton defColours;
 
-  AlignmentPanel ap;
+  private Hashtable<SequenceGroup, ColourSchemeI> oldgroupColours;
 
-  ColourSchemeI oldcs;
+  private JCheckBox useOriginalColours = new JCheckBox();
 
-  Hashtable oldgroupColours;
+  JPanel minColour = new JPanel();
+
+  JPanel maxColour = new JPanel();
 
-  jalview.datamodel.AlignmentAnnotation currentAnnotation;
+  private JCheckBox thresholdIsMin = new JCheckBox();
 
-  boolean adjusting = false;
+  protected static final int MIN_WIDTH = 500;
 
-  /**
-   * enabled if the user is dragging the slider - try to keep updates to a
-   * minimun
-   */
-  boolean sliderDragging = false;
+  protected static final int MIN_HEIGHT = 240;
 
   public AnnotationColourChooser(AlignViewport av, final AlignmentPanel ap)
   {
+    super(av, ap);
     oldcs = av.getGlobalColourScheme();
     if (av.getAlignment().getGroups() != null)
     {
-      oldgroupColours = new Hashtable();
+      oldgroupColours = new Hashtable<>();
       for (SequenceGroup sg : ap.av.getAlignment().getGroups())
       {
-        if (sg.cs != null)
+        if (sg.getColourScheme() != null)
         {
-          oldgroupColours.put(sg, sg.cs);
+          oldgroupColours.put(sg, sg.getColourScheme());
         }
       }
     }
-    this.av = av;
-    this.ap = ap;
     frame = new JInternalFrame();
     frame.setContentPane(this);
     frame.setLayer(JLayeredPane.PALETTE_LAYER);
     Desktop.addInternalFrame(frame,
             MessageManager.getString("label.colour_by_annotation"), 520,
             215);
-
-    slider.addChangeListener(new ChangeListener()
-    {
-      @Override
-      public void stateChanged(ChangeEvent evt)
-      {
-        if (!adjusting)
-        {
-          thresholdValue.setText((slider.getValue() / 1000f) + "");
-          valueChanged(!sliderDragging);
-        }
-      }
-    });
-    slider.addMouseListener(new MouseAdapter()
-    {
-      @Override
-      public void mousePressed(MouseEvent e)
-      {
-        sliderDragging = true;
-        super.mousePressed(e);
-      }
-
-      @Override
-      public void mouseDragged(MouseEvent e)
-      {
-        sliderDragging = true;
-        super.mouseDragged(e);
-      }
-
-      @Override
-      public void mouseReleased(MouseEvent evt)
-      {
-        if (sliderDragging)
-        {
-          sliderDragging = false;
-          valueChanged(true);
-        }
-        ap.paintAlignment(true);
-      }
-    });
+    frame.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));
+    addSliderChangeListener();
+    addSliderMouseListeners();
 
     if (av.getAlignment().getAlignmentAnnotation() == null)
     {
@@ -151,8 +108,8 @@ public class AnnotationColourChooser extends JPanel
     if (oldcs instanceof AnnotationColourGradient)
     {
       AnnotationColourGradient acg = (AnnotationColourGradient) oldcs;
-      currentColours.setSelected(acg.isPredefinedColours()
-              || acg.getBaseColour() != null);
+      useOriginalColours.setSelected(
+              acg.isPredefinedColours() || acg.getBaseColour() != null);
       if (!acg.isPredefinedColours() && acg.getBaseColour() == null)
       {
         minColour.setBackground(acg.getMinColour());
@@ -161,115 +118,49 @@ public class AnnotationColourChooser extends JPanel
       seqAssociated.setSelected(acg.isSeqAssociated());
 
     }
-    annotations = new JComboBox(
-            getAnnotationItems(seqAssociated.isSelected()));
+    Vector<String> annotItems = getAnnotationItems(
+            seqAssociated.isSelected());
+    annotations = new JComboBox<>(annotItems);
 
-    threshold.addItem(MessageManager
-            .getString("label.threshold_feature_no_thereshold"));
-    threshold.addItem(MessageManager
-            .getString("label.threshold_feature_above_thereshold"));
-    threshold.addItem(MessageManager
-            .getString("label.threshold_feature_below_thereshold"));
+    populateThresholdComboBox(threshold);
 
     if (oldcs instanceof AnnotationColourGradient)
     {
       AnnotationColourGradient acg = (AnnotationColourGradient) oldcs;
-      annotations.setSelectedItem(acg.getAnnotation());
+      String label = getAnnotationMenuLabel(acg.getAnnotation());
+      annotations.setSelectedItem(label);
       switch (acg.getAboveThreshold())
       {
       case AnnotationColourGradient.NO_THRESHOLD:
-        threshold.setSelectedIndex(0);
+        getThreshold().setSelectedIndex(0);
         break;
       case AnnotationColourGradient.ABOVE_THRESHOLD:
-        threshold.setSelectedIndex(1);
+        getThreshold().setSelectedIndex(1);
         break;
       case AnnotationColourGradient.BELOW_THRESHOLD:
-        threshold.setSelectedIndex(2);
+        getThreshold().setSelectedIndex(2);
         break;
       default:
-        throw new Error(MessageManager.getString("error.implementation_error_dont_know_about_thereshold_setting"));
+        throw new Error(MessageManager.getString(
+                "error.implementation_error_dont_know_about_threshold_setting"));
       }
-      thresholdIsMin.setSelected(acg.thresholdIsMinMax);
-      thresholdValue.setText("" + acg.getAnnotationThreshold());
-    }
-
-    try
-    {
-      jbInit();
-    } catch (Exception ex)
-    {
+      thresholdIsMin.setSelected(acg.isThresholdIsMinMax());
+      thresholdValue.setText(String.valueOf(acg.getAnnotationThreshold()));
     }
 
+    jbInit();
     adjusting = false;
 
-    changeColour();
+    updateView();
     frame.invalidate();
     frame.pack();
-
-  }
-
-  private Vector<String> getAnnotationItems(boolean isSeqAssociated)
-  {
-    Vector<String> list = new Vector<String>();
-    int index = 1;
-    int[] anmap = new int[av.getAlignment().getAlignmentAnnotation().length];
-    boolean enableSeqAss = false;
-    for (int i = 0; i < av.getAlignment().getAlignmentAnnotation().length; i++)
-    {
-      if (av.getAlignment().getAlignmentAnnotation()[i].sequenceRef == null)
-      {
-        if (isSeqAssociated)
-        {
-          continue;
-        }
-      }
-      else
-      {
-        enableSeqAss = true;
-      }
-      String label = av.getAlignment().getAlignmentAnnotation()[i].label;
-      if (!list.contains(label))
-      {
-        anmap[list.size()] = i;
-        list.add(label);
-
-      }
-      else
-      {
-        if (!isSeqAssociated)
-        {
-          anmap[list.size()] = i;
-          list.add(label + "_" + (index++));
-        }
-      }
-    }
-    seqAssociated.setEnabled(enableSeqAss);
-    this.annmap = new int[list.size()];
-    System.arraycopy(anmap, 0, this.annmap, 0, this.annmap.length);
-    return list;
   }
 
-  private void setDefaultMinMax()
+  @Override
+  protected void jbInit()
   {
-    minColour.setBackground(Cache.getDefaultColour("ANNOTATIONCOLOUR_MIN",
-            Color.orange));
-    maxColour.setBackground(Cache.getDefaultColour("ANNOTATIONCOLOUR_MAX",
-            Color.red));
-  }
-
-  public AnnotationColourChooser()
-  {
-    try
-    {
-      jbInit();
-    } catch (Exception ex)
-    {
-      ex.printStackTrace();
-    }
-  }
+    super.jbInit();
 
-  private void jbInit() throws Exception
-  {
     minColour.setFont(JvSwingUtils.getLabelFont());
     minColour.setBorder(BorderFactory.createEtchedBorder());
     minColour.setPreferredSize(new Dimension(40, 20));
@@ -281,7 +172,7 @@ public class AnnotationColourChooser extends JPanel
       {
         if (minColour.isEnabled())
         {
-          minColour_actionPerformed();
+          showColourChooser(minColour, "label.select_colour_minimum_value");
         }
       }
     });
@@ -296,30 +187,12 @@ public class AnnotationColourChooser extends JPanel
       {
         if (maxColour.isEnabled())
         {
-          maxColour_actionPerformed();
+          showColourChooser(maxColour, "label.select_colour_maximum_value");
         }
       }
     });
-    ok.setOpaque(false);
-    ok.setText(MessageManager.getString("action.ok"));
-    ok.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent e)
-      {
-        ok_actionPerformed(e);
-      }
-    });
-    cancel.setOpaque(false);
-    cancel.setText(MessageManager.getString("action.cancel"));
-    cancel.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent e)
-      {
-        cancel_actionPerformed(e);
-      }
-    });
+
+    defColours = new JButton();
     defColours.setOpaque(false);
     defColours.setText(MessageManager.getString("action.set_defaults"));
     defColours.setToolTipText(MessageManager
@@ -330,81 +203,51 @@ public class AnnotationColourChooser extends JPanel
       @Override
       public void actionPerformed(ActionEvent arg0)
       {
-        resetColours_actionPerformed(arg0);
+        resetColours_actionPerformed();
       }
     });
 
-    annotations.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent e)
-      {
-        annotations_actionPerformed(e);
-      }
-    });
-    threshold.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent e)
-      {
-        threshold_actionPerformed(e);
-      }
-    });
-    thresholdValue.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent e)
-      {
-        thresholdValue_actionPerformed(e);
-      }
-    });
-    slider.setPaintLabels(false);
-    slider.setPaintTicks(true);
-    slider.setBackground(Color.white);
-    slider.setEnabled(false);
-    slider.setOpaque(false);
-    slider.setPreferredSize(new Dimension(100, 32));
-    thresholdValue.setEnabled(false);
-    thresholdValue.setColumns(7);
-    currentColours.setFont(JvSwingUtils.getLabelFont());
-    currentColours.setOpaque(false);
-    currentColours.setText(MessageManager
-            .getString("label.use_original_colours"));
-    currentColours.addActionListener(new ActionListener()
+    useOriginalColours.setFont(JvSwingUtils.getLabelFont());
+    useOriginalColours.setOpaque(false);
+    useOriginalColours.setText(
+            MessageManager.getString("label.use_original_colours"));
+    useOriginalColours.addActionListener(new ActionListener()
     {
       @Override
       public void actionPerformed(ActionEvent e)
       {
-        currentColours_actionPerformed(e);
+        originalColours_actionPerformed();
       }
     });
     thresholdIsMin.setBackground(Color.white);
     thresholdIsMin.setFont(JvSwingUtils.getLabelFont());
-    thresholdIsMin.setText(MessageManager
-            .getString("label.threshold_minmax"));
+    thresholdIsMin
+            .setText(MessageManager.getString("label.threshold_minmax"));
     thresholdIsMin.addActionListener(new ActionListener()
     {
       @Override
       public void actionPerformed(ActionEvent actionEvent)
       {
-        thresholdIsMin_actionPerformed(actionEvent);
+        thresholdIsMin_actionPerformed();
       }
     });
     seqAssociated.setBackground(Color.white);
     seqAssociated.setFont(JvSwingUtils.getLabelFont());
-    seqAssociated.setText(MessageManager
-            .getString("label.per_sequence_only"));
+    seqAssociated
+            .setText(MessageManager.getString("label.per_sequence_only"));
     seqAssociated.addActionListener(new ActionListener()
     {
 
       @Override
       public void actionPerformed(ActionEvent arg0)
       {
-        seqAssociated_actionPerformed(arg0);
+        seqAssociated_actionPerformed(annotations);
       }
     });
 
-    this.setLayout(borderLayout1);
+    this.setLayout(new BorderLayout());
+    JPanel jPanel1 = new JPanel();
+    JPanel jPanel2 = new JPanel();
     jPanel2.setLayout(new MigLayout("", "[left][center][right]", "[][][]"));
     jPanel1.setBackground(Color.white);
     jPanel2.setBackground(Color.white);
@@ -413,13 +256,13 @@ public class AnnotationColourChooser extends JPanel
     jPanel1.add(cancel);
     jPanel2.add(annotations, "grow, wrap");
     jPanel2.add(seqAssociated);
-    jPanel2.add(currentColours);
+    jPanel2.add(useOriginalColours);
     JPanel colpanel = new JPanel(new FlowLayout());
     colpanel.setBackground(Color.white);
     colpanel.add(minColour);
     colpanel.add(maxColour);
     jPanel2.add(colpanel, "wrap");
-    jPanel2.add(threshold);
+    jPanel2.add(getThreshold());
     jPanel2.add(defColours, "skip 1, wrap");
     jPanel2.add(thresholdIsMin);
     jPanel2.add(slider, "grow");
@@ -429,98 +272,83 @@ public class AnnotationColourChooser extends JPanel
     this.validate();
   }
 
-  protected void seqAssociated_actionPerformed(ActionEvent arg0)
+  protected void resetColours_actionPerformed()
   {
-    adjusting = true;
-    String cursel = (String) annotations.getSelectedItem();
-    boolean isvalid = false, isseqs = seqAssociated.isSelected();
-    this.annotations.removeAllItems();
-    for (String anitem : getAnnotationItems(seqAssociated.isSelected()))
+    setDefaultMinMax();
+    updateView();
+  }
+
+  private void setDefaultMinMax()
+  {
+    minColour.setBackground(
+            Cache.getDefaultColour("ANNOTATIONCOLOUR_MIN", Color.orange));
+    maxColour.setBackground(
+            Cache.getDefaultColour("ANNOTATIONCOLOUR_MAX", Color.red));
+  }
+
+  protected void showColourChooser(JPanel colourPanel, String titleKey)
+  {
+    String ttl = MessageManager.getString(titleKey);
+    ColourChooserListener listener = new ColourChooserListener()
     {
-      if (anitem.equals(cursel) || (isseqs && cursel.startsWith(anitem)))
+      @Override
+      public void colourSelected(Color c)
       {
-        isvalid = true;
-        cursel = anitem;
+        colourPanel.setBackground(c);
+        colourPanel.repaint();
+        updateView();
       }
-      this.annotations.addItem(anitem);
-    }
-    adjusting = false;
-    if (isvalid)
-    {
-      this.annotations.setSelectedItem(cursel);
-    }
-    else
+    };
+    JalviewColourChooser.showColourChooser(Desktop.getDesktop(), ttl,
+            colourPanel.getBackground(), listener);
+  }
+
+  @Override
+  public void reset()
+  {
+    this.ap.alignFrame.changeColour(oldcs);
+    if (av.getAlignment().getGroups() != null)
     {
-      if (annotations.getItemCount() > 0)
+
+      for (SequenceGroup sg : ap.av.getAlignment().getGroups())
       {
-        annotations.setSelectedIndex(0);
+        sg.setColourScheme(oldgroupColours.get(sg));
       }
     }
   }
 
-  protected void resetColours_actionPerformed(ActionEvent arg0)
-  {
-    setDefaultMinMax();
-    changeColour();
-  }
-
-  JComboBox annotations;
-
-  int[] annmap;
-
-  JPanel minColour = new JPanel();
-
-  JPanel maxColour = new JPanel();
-
-  JButton defColours = new JButton();
-
-  JButton ok = new JButton();
-
-  JButton cancel = new JButton();
-
-  JPanel jPanel1 = new JPanel();
-
-  JPanel jPanel2 = new JPanel();
-
-  BorderLayout borderLayout1 = new BorderLayout();
-
-  JComboBox threshold = new JComboBox();
-
-  JSlider slider = new JSlider();
-
-  JTextField thresholdValue = new JTextField(20);
-
-  JCheckBox currentColours = new JCheckBox();
-
-  JCheckBox thresholdIsMin = new JCheckBox();
-
-  JCheckBox seqAssociated = new JCheckBox();
-
-  public void minColour_actionPerformed()
+  @Override
+  public void valueChanged(boolean updateAllAnnotation)
   {
-    Color col = JColorChooser.showDialog(this,
-            MessageManager.getString("label.select_colour_minimum_value"), minColour.getBackground());
-    if (col != null)
+    if (slider.isEnabled())
     {
-      minColour.setBackground(col);
+      if (useOriginalColours.isSelected() && !(av
+              .getGlobalColourScheme() instanceof AnnotationColourGradient))
+      {
+        updateView();
+      }
+      getCurrentAnnotation().threshold.value = getSliderValue();
+      propagateSeqAssociatedThreshold(updateAllAnnotation,
+              getCurrentAnnotation());
+      ap.paintAlignment(false, false);
     }
-    minColour.repaint();
-    changeColour();
   }
 
-  public void maxColour_actionPerformed()
+  public void originalColours_actionPerformed()
   {
-    Color col = JColorChooser.showDialog(this,
-            MessageManager.getString("label.select_colour_maximum_value"), maxColour.getBackground());
-    if (col != null)
+    boolean selected = useOriginalColours.isSelected();
+    if (selected)
     {
-      maxColour.setBackground(col);
+      reset();
     }
-    maxColour.repaint();
-    changeColour();
+    maxColour.setEnabled(!selected);
+    minColour.setEnabled(!selected);
+    thresholdIsMin.setEnabled(!selected);
+    updateView();
   }
 
-  void changeColour()
+  @Override
+  public void updateView()
   {
     // Check if combobox is still adjusting
     if (adjusting)
@@ -528,78 +356,76 @@ public class AnnotationColourChooser extends JPanel
       return;
     }
 
-    currentAnnotation = av.getAlignment().getAlignmentAnnotation()[annmap[annotations
-            .getSelectedIndex()]];
+    setCurrentAnnotation(
+            av.getAlignment().getAlignmentAnnotation()[annmap[annotations
+                    .getSelectedIndex()]]);
 
-    int aboveThreshold = -1;
-    if (threshold.getSelectedIndex() == 1)
-    {
-      aboveThreshold = AnnotationColourGradient.ABOVE_THRESHOLD;
-    }
-    else if (threshold.getSelectedIndex() == 2)
-    {
-      aboveThreshold = AnnotationColourGradient.BELOW_THRESHOLD;
-    }
+    int selectedThresholdItem = getSelectedThresholdItem(
+            getThreshold().getSelectedIndex());
 
     slider.setEnabled(true);
     thresholdValue.setEnabled(true);
-    thresholdIsMin.setEnabled(true);
+    thresholdIsMin.setEnabled(!useOriginalColours.isSelected());
 
-    if (aboveThreshold == AnnotationColourGradient.NO_THRESHOLD)
+    final AlignmentAnnotation currentAnnotation = getCurrentAnnotation();
+    if (selectedThresholdItem == AnnotationColourGradient.NO_THRESHOLD)
     {
       slider.setEnabled(false);
       thresholdValue.setEnabled(false);
       thresholdValue.setText("");
       thresholdIsMin.setEnabled(false);
     }
-    else if (aboveThreshold != AnnotationColourGradient.NO_THRESHOLD
+    else if (selectedThresholdItem != AnnotationColourGradient.NO_THRESHOLD
             && currentAnnotation.threshold == null)
     {
-      currentAnnotation
-              .setThreshold(new jalview.datamodel.GraphLine(
-                      (currentAnnotation.graphMax - currentAnnotation.graphMin) / 2f,
-                      "Threshold", Color.black));
+      currentAnnotation.setThreshold(new GraphLine(
+              (currentAnnotation.graphMax - currentAnnotation.graphMin)
+                      / 2f,
+              "Threshold", Color.black));
     }
 
-    if (aboveThreshold != AnnotationColourGradient.NO_THRESHOLD)
+    if (selectedThresholdItem != AnnotationColourGradient.NO_THRESHOLD)
     {
       adjusting = true;
-      float range = currentAnnotation.graphMax * 1000
-              - currentAnnotation.graphMin * 1000;
-
-      slider.setMinimum((int) (currentAnnotation.graphMin * 1000));
-      slider.setMaximum((int) (currentAnnotation.graphMax * 1000));
-      slider.setValue((int) (currentAnnotation.threshold.value * 1000));
-      thresholdValue.setText(currentAnnotation.threshold.value + "");
-      slider.setMajorTickSpacing((int) (range / 10f));
+      setSliderModel(currentAnnotation.graphMin, currentAnnotation.graphMax,
+              currentAnnotation.threshold.value);
       slider.setEnabled(true);
+
+      setThresholdValueText();
       thresholdValue.setEnabled(true);
       adjusting = false;
     }
+    colorAlignmentContaining(currentAnnotation, selectedThresholdItem);
+
+    ap.alignmentChanged();
+  }
+
+  protected void colorAlignmentContaining(AlignmentAnnotation currentAnn,
+          int selectedThresholdOption)
+  {
 
     AnnotationColourGradient acg = null;
-    if (currentColours.isSelected())
+    if (useOriginalColours.isSelected())
     {
-      acg = new AnnotationColourGradient(currentAnnotation,
-              av.getGlobalColourScheme(), aboveThreshold);
+      acg = new AnnotationColourGradient(currentAnn,
+              av.getGlobalColourScheme(), selectedThresholdOption);
     }
     else
     {
-      acg = new AnnotationColourGradient(currentAnnotation,
+      acg = new AnnotationColourGradient(currentAnn,
               minColour.getBackground(), maxColour.getBackground(),
-              aboveThreshold);
+              selectedThresholdOption);
     }
     acg.setSeqAssociated(seqAssociated.isSelected());
 
-    if (currentAnnotation.graphMin == 0f
-            && currentAnnotation.graphMax == 0f)
+    if (currentAnn.graphMin == 0f && currentAnn.graphMax == 0f)
     {
       acg.setPredefinedColours(true);
     }
 
-    acg.thresholdIsMinMax = thresholdIsMin.isSelected();
+    acg.setThresholdIsMinMax(thresholdIsMin.isSelected());
 
-    av.setGlobalColourScheme(acg);
+    this.ap.alignFrame.changeColour(acg);
 
     if (av.getAlignment().getGroups() != null)
     {
@@ -610,154 +436,15 @@ public class AnnotationColourChooser extends JPanel
         {
           continue;
         }
-
-        if (currentColours.isSelected())
-        {
-          sg.cs = new AnnotationColourGradient(currentAnnotation, sg.cs,
-                  aboveThreshold);
-          ((AnnotationColourGradient) sg.cs).setSeqAssociated(seqAssociated
-                  .isSelected());
-
-        }
-        else
-        {
-          sg.cs = new AnnotationColourGradient(currentAnnotation,
-                  minColour.getBackground(), maxColour.getBackground(),
-                  aboveThreshold);
-          ((AnnotationColourGradient) sg.cs).setSeqAssociated(seqAssociated
-                  .isSelected());
-        }
-
+        sg.setColourScheme(acg.getInstance(av, sg));
       }
     }
-    ap.alignmentChanged();
-    // ensure all associated views (overviews, structures, etc) are notified of
-    // updated colours.
-    ap.paintAlignment(true);
-  }
-
-  public void ok_actionPerformed(ActionEvent e)
-  {
-    changeColour();
-    try
-    {
-      frame.setClosed(true);
-    } catch (Exception ex)
-    {
-    }
   }
 
-  public void cancel_actionPerformed(ActionEvent e)
+  @Override
+  protected void sliderDragReleased()
   {
-    reset();
-    // ensure all original colouring is propagated to listeners.
-    ap.paintAlignment(true);
-    try
-    {
-      frame.setClosed(true);
-    } catch (Exception ex)
-    {
-    }
+    super.sliderDragReleased();
+    ap.paintAlignment(true, true);
   }
-
-  void reset()
-  {
-    av.setGlobalColourScheme(oldcs);
-    if (av.getAlignment().getGroups() != null)
-    {
-
-      for (SequenceGroup sg : ap.av.getAlignment().getGroups())
-      {
-        sg.cs = (ColourSchemeI) oldgroupColours.get(sg);
-      }
-    }
-  }
-
-  public void thresholdCheck_actionPerformed(ActionEvent e)
-  {
-    changeColour();
-  }
-
-  public void annotations_actionPerformed(ActionEvent e)
-  {
-    changeColour();
-  }
-
-  public void threshold_actionPerformed(ActionEvent e)
-  {
-    changeColour();
-  }
-
-  public void thresholdValue_actionPerformed(ActionEvent e)
-  {
-    try
-    {
-      float f = Float.parseFloat(thresholdValue.getText());
-      slider.setValue((int) (f * 1000));
-    } catch (NumberFormatException ex)
-    {
-    }
-  }
-
-  public void valueChanged(boolean updateAllAnnotation)
-  {
-    if (currentColours.isSelected()
-            && !(av.getGlobalColourScheme() instanceof AnnotationColourGradient))
-    {
-      changeColour();
-    }
-    currentAnnotation.threshold.value = slider.getValue() / 1000f;
-    propagateSeqAssociatedThreshold(updateAllAnnotation);
-    ap.paintAlignment(false);
-  }
-
-  private void propagateSeqAssociatedThreshold(boolean allAnnotation)
-  {
-    if (currentAnnotation.sequenceRef == null
-            || currentAnnotation.threshold == null)
-    {
-      return;
-    }
-    // TODO: JAL-1327 only update visible annotation thresholds if allAnnotation
-    // is false, since we only need to provide a quick visual indicator
-
-    float thr = currentAnnotation.threshold.value;
-    for (int i = 0; i < av.getAlignment().getAlignmentAnnotation().length; i++)
-    {
-      AlignmentAnnotation aa = av.getAlignment().getAlignmentAnnotation()[i];
-      if (aa.label.equals(currentAnnotation.label)
-              && (currentAnnotation.getCalcId() == null ? aa.getCalcId() == null
-                      : currentAnnotation.getCalcId()
-                              .equals(aa.getCalcId())))
-      {
-        if (aa.threshold == null)
-        {
-          aa.threshold = new GraphLine(currentAnnotation.threshold);
-        }
-        else
-        {
-          aa.threshold.value = thr;
-        }
-      }
-    }
-  }
-
-  public void currentColours_actionPerformed(ActionEvent e)
-  {
-    if (currentColours.isSelected())
-    {
-      reset();
-    }
-
-    maxColour.setEnabled(!currentColours.isSelected());
-    minColour.setEnabled(!currentColours.isSelected());
-
-    changeColour();
-  }
-
-  public void thresholdIsMin_actionPerformed(ActionEvent actionEvent)
-  {
-    changeColour();
-  }
-
 }