JAL-1713 refactorings to allow save/restore Overview to/from project
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 10 Dec 2020 13:04:48 +0000 (13:04 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 10 Dec 2020 13:04:48 +0000 (13:04 +0000)
src/jalview/gui/AlignFrame.java
src/jalview/gui/OverviewCanvas.java
src/jalview/gui/OverviewPanel.java
src/jalview/gui/Preferences.java
src/jalview/renderer/OverviewRenderer.java
src/jalview/renderer/OverviewResColourFinder.java
test/jalview/renderer/OverviewRendererTest.java
test/jalview/renderer/OverviewResColourFinderTest.java

index 1f3f409..5fe7c59 100644 (file)
@@ -3368,10 +3368,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   }
 
   /**
-   * DOCUMENT ME!
+   * Opens an Overview panel for the alignment, unless one is open already
    * 
    * @param e
-   *          DOCUMENT ME!
    */
   @Override
   public void overviewMenuItem_actionPerformed(ActionEvent e)
@@ -3381,8 +3380,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       return;
     }
 
+    boolean showHiddenRegions = Cache.getDefault(Preferences.SHOW_OV_HIDDEN_AT_START,
+                false);
+    openOverviewPanel(showHiddenRegions);
+  }
+
+  public OverviewPanel openOverviewPanel(boolean showHidden)
+  {
     JInternalFrame frame = new JInternalFrame();
-    final OverviewPanel overview = new OverviewPanel(alignPanel);
+    final OverviewPanel overview = new OverviewPanel(alignPanel, showHidden);
     frame.setContentPane(overview);
     Desktop.addInternalFrame(frame, MessageManager
             .formatMessage("label.overview_params", new Object[]
@@ -3407,6 +3413,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
 
     alignPanel.setOverviewPanel(overview);
+    
+    return overview;
   }
 
   @Override
index 8e67992..586ac2c 100644 (file)
  */
 package jalview.gui;
 
-import jalview.api.AlignViewportI;
-import jalview.bin.Cache;
-import jalview.renderer.OverviewRenderer;
-import jalview.renderer.OverviewResColourFinder;
-import jalview.viewmodel.OverviewDimensions;
-import jalview.viewmodel.seqfeatures.FeatureRendererModel;
-
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Graphics;
@@ -34,8 +27,26 @@ import java.awt.image.BufferedImage;
 
 import javax.swing.JPanel;
 
+import jalview.api.AlignViewportI;
+import jalview.bin.Cache;
+import jalview.renderer.OverviewRenderer;
+import jalview.renderer.OverviewResColourFinder;
+import jalview.viewmodel.OverviewDimensions;
+import jalview.viewmodel.seqfeatures.FeatureRendererModel;
+
 public class OverviewCanvas extends JPanel
 {
+  public static final Color OVERVIEW_DEFAULT_GAP = Color.lightGray;
+
+  public static final Color OVERVIEW_DEFAULT_LEGACY_GAP = Color.white;
+
+  public static final Color OVERVIEW_DEFAULT_RESIDUE = Color.white;
+
+  public static final Color OVERVIEW_DEFAULT_LEGACY_RESIDUE = Color.lightGray;
+
+  public static final Color OVERVIEW_DEFAULT_HIDDEN = Color.darkGray
+          .darker();
+
   private static final Color TRANS_GREY = new Color(100, 100, 100, 25);
 
   // This is set true if the alignment view changes whilst
@@ -79,10 +90,12 @@ public class OverviewCanvas extends JPanel
 
     boolean useLegacy = Cache.getDefault(Preferences.USE_LEGACY_GAP, false);
     Color gapCol = Cache.getDefaultColour(Preferences.GAP_COLOUR,
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP);
+            OVERVIEW_DEFAULT_GAP);
     Color hiddenCol = Cache.getDefaultColour(Preferences.HIDDEN_COLOUR,
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN);
-    cf = new OverviewResColourFinder(useLegacy, gapCol, hiddenCol);
+            OVERVIEW_DEFAULT_HIDDEN);
+    Color residueCol = useLegacy ? OVERVIEW_DEFAULT_LEGACY_RESIDUE : OVERVIEW_DEFAULT_RESIDUE;
+    
+    cf = new OverviewResColourFinder(gapCol, residueCol, hiddenCol);
 
     setSize(od.getWidth(), od.getHeight());
   }
@@ -182,7 +195,7 @@ public class OverviewCanvas extends JPanel
   @Override
   public void paintComponent(Graphics g)
   {
-    //super.paintComponent(g);
+    // super.paintComponent(g);
 
     if (restart)
     {
@@ -207,9 +220,8 @@ public class OverviewCanvas extends JPanel
       {
         // if there is annotation, scale the alignment and annotation
         // separately
-        if (od.getGraphHeight() > 0 
-                       && od.getSequencesHeight() > 0  // BH 2019
-                       )
+        if (od.getGraphHeight() > 0 && od.getSequencesHeight() > 0 // BH 2019
+        )
         {
           BufferedImage topImage = lastMiniMe.getSubimage(0, 0,
                   od.getWidth(), od.getSequencesHeight());
@@ -250,13 +262,12 @@ public class OverviewCanvas extends JPanel
     {
       g.drawImage(lastMiniMe, 0, 0, getWidth(), getHeight(), this);
     }
-    
+
     // draw the box
     g.setColor(Color.red);
     od.drawBox(g);
   }
 
-
   public void dispose()
   {
     dispose = true;
@@ -270,4 +281,31 @@ public class OverviewCanvas extends JPanel
       }
     }
   }
+
+  public Color getGapColour()
+  {
+    return cf.getGapColour();
+  }
+
+  public Color getHiddenColour()
+  {
+    return cf.getHiddenColour();
+  }
+
+  public Color getResidueColour()
+  {
+    return cf.getResidueColour();
+  }
+
+  /**
+   * Sets the colours to use for gaps, residues and hidden regions
+   * 
+   * @param gaps
+   * @param residues
+   * @param hidden
+   */
+  public void setColours(Color gaps, Color residues, Color hidden)
+  {
+    cf = new OverviewResColourFinder(gaps, residues, hidden);
+  }
 }
index a5aaf7c..6cb4b96 100755 (executable)
  */
 package jalview.gui;
 
-import jalview.bin.Cache;
-import jalview.renderer.OverviewRenderer;
-import jalview.util.MessageManager;
-import jalview.util.Platform;
-import jalview.viewmodel.OverviewDimensions;
-import jalview.viewmodel.OverviewDimensionsHideHidden;
-import jalview.viewmodel.OverviewDimensionsShowHidden;
-import jalview.viewmodel.ViewportListenerI;
-
 import java.awt.BorderLayout;
 import java.awt.Cursor;
 import java.awt.Dimension;
@@ -48,6 +39,14 @@ import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
 import javax.swing.SwingUtilities;
 
+import jalview.renderer.OverviewRenderer;
+import jalview.util.MessageManager;
+import jalview.util.Platform;
+import jalview.viewmodel.OverviewDimensions;
+import jalview.viewmodel.OverviewDimensionsHideHidden;
+import jalview.viewmodel.OverviewDimensionsShowHidden;
+import jalview.viewmodel.ViewportListenerI;
+
 /**
  * Panel displaying an overview of the full alignment, with an interactive box
  * representing the viewport onto the alignment.
@@ -80,14 +79,14 @@ public class OverviewPanel extends JPanel
    * 
    * @param alPanel
    *          The alignment panel which is shown in the overview panel
+   * @param isShowHidden TODO
    */
-  public OverviewPanel(AlignmentPanel alPanel)
+  public OverviewPanel(AlignmentPanel alPanel, boolean isShowHidden)
   {
     this.av = alPanel.av;
     this.ap = alPanel;
 
-    showHidden = Cache.getDefault(Preferences.SHOW_OV_HIDDEN_AT_START,
-            false);
+    showHidden = isShowHidden;
     if (showHidden)
     {
       od = new OverviewDimensionsShowHidden(av.getRanges(),
@@ -420,4 +419,14 @@ public class OverviewPanel extends JPanel
       od = null;
     }
   }
+  
+  public boolean isShowHiddenRegions()
+  {
+    return showHidden;
+  }
+
+  public OverviewCanvas getCanvas()
+  {
+    return oviewCanvas;
+  }
 }
index c61c70e..404e294 100755 (executable)
@@ -328,12 +328,10 @@ public class Preferences extends GPreferences
     /*
      * Set overview panel defaults
      */
-    gapColour.setBackground(
-            Cache.getDefaultColour(GAP_COLOUR,
-                    jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP));
-    hiddenColour.setBackground(
-            Cache.getDefaultColour(HIDDEN_COLOUR,
-                    jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN));
+    gapColour.setBackground(Cache.getDefaultColour(GAP_COLOUR,
+            OverviewCanvas.OVERVIEW_DEFAULT_GAP));
+    hiddenColour.setBackground(Cache.getDefaultColour(HIDDEN_COLOUR,
+            OverviewCanvas.OVERVIEW_DEFAULT_HIDDEN));
     useLegacyGap.setSelected(Cache.getDefault(USE_LEGACY_GAP, false));
     gapLabel.setEnabled(!useLegacyGap.isSelected());
     gapColour.setEnabled(!useLegacyGap.isSelected());
@@ -356,7 +354,8 @@ public class Preferences extends GPreferences
      * set choice of structure viewer, and path if saved as a preference;
      * default to Jmol (first choice) if an unexpected value is found
      */
-    String viewerType = Cache.getDefault(STRUCTURE_DISPLAY, ViewerType.JMOL.name());
+    String viewerType = Cache.getDefault(STRUCTURE_DISPLAY,
+            ViewerType.JMOL.name());
     structViewer.setSelectedItem(viewerType);
     String viewerPath = "";
     ViewerType type = null;
@@ -392,10 +391,11 @@ public class Preferences extends GPreferences
       {
         if (validateViewerPath())
         {
-          Cache.setProperty(structViewer.getSelectedItem()
-                  .equals(ViewerType.CHIMERAX.name())
-                  ? CHIMERAX_PATH
-                  : CHIMERA_PATH, structureViewerPath.getText());
+          Cache.setProperty(
+                  structViewer.getSelectedItem().equals(
+                          ViewerType.CHIMERAX.name()) ? CHIMERAX_PATH
+                                  : CHIMERA_PATH,
+                  structureViewerPath.getText());
         }
       }
     });
@@ -583,8 +583,7 @@ public class Preferences extends GPreferences
 
     annotations_actionPerformed(null); // update the display of the annotation
                                        // settings
-    
-    
+
     /*
      * Set Backups tab defaults
      */
@@ -604,7 +603,7 @@ public class Preferences extends GPreferences
     comboBox.addItem(promptEachTimeOpt);
     comboBox.addItem(lineArtOpt);
     comboBox.addItem(textOpt);
-    
+
     /*
      * JalviewJS doesn't support Lineart so force it to Text
      */
@@ -750,8 +749,7 @@ public class Preferences extends GPreferences
             Boolean.toString(structFromPdb.isSelected()));
     String viewer = structViewer.getSelectedItem().toString();
     String viewerPath = structureViewerPath.getText();
-    Cache.applicationProperties.setProperty(STRUCTURE_DISPLAY,
-            viewer);
+    Cache.applicationProperties.setProperty(STRUCTURE_DISPLAY, viewer);
     if (viewer.equals(ViewerType.CHIMERA.name()))
     {
       Cache.setOrRemove(CHIMERA_PATH, viewerPath);
@@ -897,16 +895,16 @@ public class Preferences extends GPreferences
     Cache.applicationProperties.setProperty(BackupFiles.ENABLED,
             Boolean.toString(enableBackupFiles.isSelected()));
     int preset = getComboIntStringKey(backupfilesPresetsCombo);
-    Cache.applicationProperties.setProperty(BackupFiles.NS + "_PRESET", Integer.toString(preset));
+    Cache.applicationProperties.setProperty(BackupFiles.NS + "_PRESET",
+            Integer.toString(preset));
 
     if (preset == BackupFilesPresetEntry.BACKUPFILESSCHEMECUSTOM)
     {
       BackupFilesPresetEntry customBFPE = getBackupfilesCurrentEntry();
       BackupFilesPresetEntry.backupfilesPresetEntriesValues.put(
               BackupFilesPresetEntry.BACKUPFILESSCHEMECUSTOM, customBFPE);
-      Cache.applicationProperties
-              .setProperty(BackupFilesPresetEntry.CUSTOMCONFIG,
-                      customBFPE.toString());
+      Cache.applicationProperties.setProperty(
+              BackupFilesPresetEntry.CUSTOMCONFIG, customBFPE.toString());
     }
 
     BackupFilesPresetEntry savedBFPE = BackupFilesPresetEntry.backupfilesPresetEntriesValues
@@ -1192,8 +1190,7 @@ public class Preferences extends GPreferences
     if (!useLegacyGap.isSelected())
     {
       JalviewColourChooser.showColourChooser(this,
-              MessageManager.getString("label.select_gap_colour"),
-              gap);
+              MessageManager.getString("label.select_gap_colour"), gap);
     }
   }
 
@@ -1201,8 +1198,7 @@ public class Preferences extends GPreferences
   public void hiddenColour_actionPerformed(JPanel hidden)
   {
     JalviewColourChooser.showColourChooser(this,
-            MessageManager.getString("label.select_hidden_colour"),
-            hidden);
+            MessageManager.getString("label.select_hidden_colour"), hidden);
   }
 
   @Override
@@ -1211,13 +1207,11 @@ public class Preferences extends GPreferences
     boolean enabled = useLegacyGap.isSelected();
     if (enabled)
     {
-      gapColour.setBackground(
-              jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_LEGACY_GAP);
+      gapColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_LEGACY_GAP);
     }
     else
     {
-      gapColour.setBackground(
-              jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP);
+      gapColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_GAP);
     }
     gapColour.setEnabled(!enabled);
     gapLabel.setEnabled(!enabled);
@@ -1229,8 +1223,7 @@ public class Preferences extends GPreferences
     useLegacyGap.setSelected(false);
     useLegacyGaps_actionPerformed(null);
     showHiddenAtStart.setSelected(false);
-    hiddenColour.setBackground(
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN);
+    hiddenColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_HIDDEN);
   }
 
   @Override
index c9096e2..b126465 100644 (file)
@@ -225,7 +225,7 @@ public class OverviewRenderer
   int getColumnColourFromSequence(SequenceGroup[] allGroups,
           SequenceI seq, int lastcol)
   {
-    Color color = resColFinder.GAP_COLOUR;
+    Color color = resColFinder.gapColour;
 
     if ((seq != null) && (seq.getLength() > lastcol))
     {
index a497d92..89dc9e7 100644 (file)
  */
 package jalview.renderer;
 
+import java.awt.Color;
+
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.util.Comparison;
 
-import java.awt.Color;
-
 public class OverviewResColourFinder extends ResidueColourFinder
 {
-  final Color GAP_COLOUR; // default colour to use at gaps
-
-  final Color RESIDUE_COLOUR; // default colour to use at residues
-
-  final Color HIDDEN_COLOUR; // colour for hidden regions
-
-  boolean useLegacy = false;
-
-  public static final Color OVERVIEW_DEFAULT_GAP = Color.lightGray;
+  /*
+   * colour for gaps (unless overridden by colour scheme)
+   * - as set in Preferences, _or_ read from a project file
+   */
+  Color gapColour;
 
-  public static final Color OVERVIEW_DEFAULT_LEGACY_GAP = Color.white;
+  /*
+   * colour for residues if no colour scheme set (before feature colouring)
+   * - as set in Preferences, _or_ read from a project file
+   */
+  Color residueColour;
 
-  public static final Color OVERVIEW_DEFAULT_HIDDEN = Color.darkGray
-          .darker();
+  /*
+   * colour for hidden regions
+   * - as set in Preferences, _or_ read from a project file
+   */
+  Color hiddenColour;
 
   /**
    * Constructor without colour settings (used by applet)
+   * @deprecated
    */
+  @Deprecated
   public OverviewResColourFinder()
   {
-    this(false, OVERVIEW_DEFAULT_GAP, OVERVIEW_DEFAULT_HIDDEN);
+    this(Color.lightGray, Color.white, Color.darkGray.darker());
   }
 
   /**
-   * Constructor with colour settings
+   * Constructor given default colours for gaps, residues and hidden regions
    * 
-   * @param useLegacyColouring
-   *          whether to use legacy gap colouring (white gaps, grey residues)
-   * @param gapCol
-   *          gap colour if not legacy
-   * @param hiddenCol
-   *          hidden region colour (transparency applied by rendering code)
+   * @param gaps
+   * @param residues
+   * @param hidden
    */
-  public OverviewResColourFinder(boolean useLegacyColouring, Color gapCol,
-          Color hiddenCol)
+  public OverviewResColourFinder(Color gaps, Color residues, Color hidden)
   {
-    if (useLegacyColouring)
-    {
-      GAP_COLOUR = Color.white;
-      RESIDUE_COLOUR = Color.lightGray;
-      HIDDEN_COLOUR = hiddenCol;
-    }
-    else
-    {
-      GAP_COLOUR = gapCol;
-      RESIDUE_COLOUR = Color.white;
-      HIDDEN_COLOUR = hiddenCol;
-    }
+    gapColour = gaps;
+    residueColour = residues;
+    hiddenColour = hidden;
   }
 
   @Override
   public Color getBoxColour(ResidueShaderI shader, SequenceI seq, int i)
   {
-    Color resBoxColour = RESIDUE_COLOUR;
+    Color resBoxColour = residueColour;
     char currentChar = seq.getCharAt(i);
 
     // In the overview window, gaps are coloured grey, unless the colour scheme
@@ -92,7 +84,7 @@ public class OverviewResColourFinder extends ResidueColourFinder
       if (Comparison.isGap(currentChar)
               && (!shader.getColourScheme().hasGapColour()))
       {
-        resBoxColour = GAP_COLOUR;
+        resBoxColour = gapColour;
       }
       else
       {
@@ -101,7 +93,7 @@ public class OverviewResColourFinder extends ResidueColourFinder
     }
     else if (Comparison.isGap(currentChar))
     {
-      resBoxColour = GAP_COLOUR;
+      resBoxColour = gapColour;
     }
 
     return resBoxColour;
@@ -113,8 +105,8 @@ public class OverviewResColourFinder extends ResidueColourFinder
    */
   @Override
   protected Color getResidueBoxColour(boolean showBoxes,
-          ResidueShaderI shader,
-          SequenceGroup[] allGroups, SequenceI seq, int i)
+          ResidueShaderI shader, SequenceGroup[] allGroups, SequenceI seq,
+          int i)
   {
     ResidueShaderI currentShader;
     SequenceGroup currentSequenceGroup = getCurrentSequenceGroup(allGroups,
@@ -132,12 +124,34 @@ public class OverviewResColourFinder extends ResidueColourFinder
   }
 
   /**
-   * Supply hidden colour
+   * Returns the colour used for hidden regions
+   * 
+   * @return
+   */
+  public Color getHiddenColour()
+  {
+    return hiddenColour;
+  }
+
+  /**
+   * Returns the colour used for gaps, if not overridden by the alignment colour
+   * scheme
+   * 
+   * @return
+   */
+  public Color getGapColour()
+  {
+    return gapColour;
+  }
+
+  /**
+   * Returns the colour used for residues (before applying any feature
+   * colouring) if there is no alignment colour scheme
    * 
-   * @return colour of hidden regions
+   * @return
    */
-  protected Color getHiddenColour()
+  public Color getResidueColour()
   {
-    return HIDDEN_COLOUR;
+    return gapColour;
   }
 }
index 1d532f7..b77ae26 100644 (file)
@@ -22,6 +22,10 @@ package jalview.renderer;
 
 import static org.testng.Assert.assertEquals;
 
+import java.awt.Color;
+
+import org.testng.annotations.Test;
+
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Sequence;
@@ -35,18 +39,15 @@ import jalview.viewmodel.AlignmentViewport;
 import jalview.viewmodel.OverviewDimensions;
 import jalview.viewmodel.OverviewDimensionsShowHidden;
 import jalview.viewmodel.ViewportRanges;
-
-import java.awt.Color;
-
-import org.testng.annotations.Test;
 public class OverviewRendererTest
 {
 
   @Test
   public void testGetColumnColourFromSequence()
   {
-    OverviewResColourFinder cf = new OverviewResColourFinder(false,
-            Color.PINK, Color.green); // gapColour, hiddenColour
+    // gapColour, residueColour, hiddenColour
+    OverviewResColourFinder cf = new OverviewResColourFinder(
+            Color.PINK, Color.white, Color.green); 
     Sequence seq1 = new Sequence("seq1", "PQ-RL-");
     Sequence seq2 = new Sequence("seq2", "FVE");
     AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 });
index 1687516..028777e 100644 (file)
@@ -22,6 +22,12 @@ package jalview.renderer;
 
 import static org.testng.AssertJUnit.assertEquals;
 
+import java.awt.Color;
+import java.util.ArrayList;
+
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
 import jalview.bin.Cache;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
@@ -30,16 +36,11 @@ import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignViewport;
 import jalview.gui.JvOptionPane;
+import jalview.gui.OverviewCanvas;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.UserColourScheme;
 import jalview.schemes.ZappoColourScheme;
 
-import java.awt.Color;
-import java.util.ArrayList;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
 public class OverviewResColourFinderTest
 {
 
@@ -61,11 +62,9 @@ public class OverviewResColourFinderTest
 
     // gaps are grey, residues white
     assertEquals(Color.white, rcf.getResidueColour(true,
-            av.getResidueShading(),
-            null, seq, 0, null));
-    assertEquals(Color.lightGray, rcf
-            .getResidueColour(true, av.getResidueShading(), null, seq, 2,
-                    null));
+            av.getResidueShading(), null, seq, 0, null));
+    assertEquals(Color.lightGray, rcf.getResidueColour(true,
+            av.getResidueShading(), null, seq, 2, null));
 
     // unaffected by showBoxes setting
     assertEquals(Color.white, rcf.getResidueColour(false,
@@ -85,23 +84,18 @@ public class OverviewResColourFinderTest
     av.setGlobalColourScheme(new ZappoColourScheme());
 
     // @see ResidueProperties.zappo
-    assertEquals(Color.pink,
-            rcf.getResidueColour(true, av.getResidueShading(),
-            null, seq, 0, null)); // M
-    assertEquals(Color.green,
-            rcf.getResidueColour(true, av.getResidueShading(),
-            null, seq, 2, null)); // T
-    assertEquals(Color.magenta,
-            rcf.getResidueColour(true, av.getResidueShading(),
-            null, seq, 5, null)); // G
-    assertEquals(Color.orange,
-            rcf.getResidueColour(true, av.getResidueShading(),
-            null, seq, 12, null)); // F
+    assertEquals(Color.pink, rcf.getResidueColour(true,
+            av.getResidueShading(), null, seq, 0, null)); // M
+    assertEquals(Color.green, rcf.getResidueColour(true,
+            av.getResidueShading(), null, seq, 2, null)); // T
+    assertEquals(Color.magenta, rcf.getResidueColour(true,
+            av.getResidueShading(), null, seq, 5, null)); // G
+    assertEquals(Color.orange, rcf.getResidueColour(true,
+            av.getResidueShading(), null, seq, 12, null)); // F
 
     // gap colour not specified so gaps are lightGray
-    assertEquals(Color.lightGray, rcf
-            .getResidueColour(true, av.getResidueShading(), null, seq, 3,
-                    null));
+    assertEquals(Color.lightGray, rcf.getResidueColour(true,
+            av.getResidueShading(), null, seq, 3, null));
 
     // unaffected by showBoxes setting
     assertEquals(Color.pink, rcf.getResidueColour(false,
@@ -114,9 +108,8 @@ public class OverviewResColourFinderTest
             av.getResidueShading(), null, seq, 12, null)); // F
 
     // gap colour not specified so gaps are lightGray
-    assertEquals(Color.lightGray, rcf
-            .getResidueColour(false, av.getResidueShading(), null, seq, 3,
-                    null));
+    assertEquals(Color.lightGray, rcf.getResidueColour(false,
+            av.getResidueShading(), null, seq, 3, null));
 
   }
 
@@ -138,17 +131,15 @@ public class OverviewResColourFinderTest
     av.setGlobalColourScheme(new UserColourScheme(newColours));
 
     // gap colour not specified so gaps are lightGray
-    assertEquals(Color.lightGray, rcf
-            .getResidueColour(true, av.getResidueShading(), null, seq, 3,
-                    null));
+    assertEquals(Color.lightGray, rcf.getResidueColour(true,
+            av.getResidueShading(), null, seq, 3, null));
 
     newColours[23] = Color.pink;
     av.setGlobalColourScheme(new UserColourScheme(newColours));
 
     // gap colour specified as pink
     assertEquals(Color.pink, rcf.getResidueColour(true,
-            av.getResidueShading(),
-            null, seq, 3, null));
+            av.getResidueShading(), null, seq, 3, null));
 
     // unaffected by showBoxes setting
     // gap colour not specified so gaps are lightGray
@@ -169,7 +160,7 @@ public class OverviewResColourFinderTest
   {
     SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF");
     AlignmentI al = new Alignment(new SequenceI[] { seq });
-    
+
     ColourSchemeI cs = new ZappoColourScheme();
     ArrayList<SequenceI> seqlist = new ArrayList<>();
     seqlist.add(seq);
@@ -178,10 +169,10 @@ public class OverviewResColourFinderTest
     al.addGroup(sg);
     SequenceGroup[] groups = new SequenceGroup[1];
     groups[0] = sg;
-    
+
     final AlignViewport av = new AlignViewport(al);
     ResidueColourFinder rcf = new OverviewResColourFinder();
-    
+
     // G in group specified as magenta in Zappo
     assertEquals(Color.magenta, rcf.getResidueColour(false,
             av.getResidueShading(), groups, seq, 7, null));
@@ -195,8 +186,8 @@ public class OverviewResColourFinderTest
             av.getResidueShading(), groups, seq, 2, null));
 
     // use legacy colouring
-    rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
-  
+    rcf = new OverviewResColourFinder(Color.white, Color.lightGray, Color.red);
+
     // G in group specified as magenta in Zappo
     assertEquals(Color.magenta, rcf.getResidueColour(false,
             av.getResidueShading(), groups, seq, 7, null));
@@ -210,7 +201,7 @@ public class OverviewResColourFinderTest
             av.getResidueShading(), groups, seq, 2, null));
 
     // use new colouring
-    rcf = new OverviewResColourFinder(false, Color.blue, Color.red);
+    rcf = new OverviewResColourFinder(Color.blue, Color.white, Color.red);
 
     // G in group specified as magenta in Zappo
     assertEquals(Color.magenta, rcf.getResidueColour(false,
@@ -243,12 +234,10 @@ public class OverviewResColourFinderTest
 
     // gaps gap colour
     c = rcf.getBoxColour(shader, seq, 3);
-    assertEquals(
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP,
-            c);
+    assertEquals(OverviewCanvas.OVERVIEW_DEFAULT_GAP, c);
 
     // legacy colouring set explicitly via constructor
-    rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
+    rcf = new OverviewResColourFinder(Color.white, Color.lightGray, Color.red);
     shader = new ResidueShader();
 
     // residues light gray
@@ -269,12 +258,10 @@ public class OverviewResColourFinderTest
 
     // gaps gap colour
     c = rcf.getBoxColour(shader, seq, 3);
-    assertEquals(
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP,
-            c);
+    assertEquals(OverviewCanvas.OVERVIEW_DEFAULT_GAP, c);
 
     // non legacy colouring with colour scheme
-    rcf = new OverviewResColourFinder(false, Color.blue, Color.red);
+    rcf = new OverviewResColourFinder(Color.blue, Color.white, Color.red);
     shader = new ResidueShader(new ZappoColourScheme());
 
     // M residue pink
@@ -286,7 +273,7 @@ public class OverviewResColourFinderTest
     assertEquals(Color.blue, c);
 
     // legacy colouring with colour scheme
-    rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
+    rcf = new OverviewResColourFinder(Color.white, Color.lightGray, Color.red);
 
     // M residue pink
     c = rcf.getBoxColour(shader, seq, 0);