Merge remote-tracking branch 'origin/develop' into
[jalview.git] / src / jalview / gui / OverviewPanel.java
index 67cdbc2..ac2138f 100755 (executable)
@@ -22,6 +22,7 @@ package jalview.gui;
 
 import jalview.datamodel.SequenceI;
 import jalview.renderer.AnnotationRenderer;
+import jalview.renderer.seqfeatures.FeatureColourFinder;
 import jalview.viewmodel.OverviewDimensions;
 
 import java.awt.Color;
@@ -70,7 +71,7 @@ public class OverviewPanel extends JPanel implements Runnable
   // main visible SeqCanvas
   private SequenceRenderer sr;
 
-  private jalview.renderer.seqfeatures.FeatureRenderer fr;
+  jalview.renderer.seqfeatures.FeatureRenderer fr;
 
   /**
    * Creates a new OverviewPanel object.
@@ -87,7 +88,7 @@ public class OverviewPanel extends JPanel implements Runnable
     sr = new SequenceRenderer(av);
     sr.renderGaps = false;
     sr.forOverview = true;
-    fr = new FeatureRenderer(alPanel);
+    fr = new FeatureRenderer(ap);
 
     od = new OverviewDimensions(av.getRanges(), av.isShowAnnotation());
 
@@ -238,9 +239,10 @@ public class OverviewPanel extends JPanel implements Runnable
   {
     int lastcol = -1;
     int lastrow = -1;
-    int color = Color.white.getRGB();
+    int rgbColour = Color.white.getRGB();
 
     SequenceI seq = null;
+    FeatureColourFinder finder = new FeatureColourFinder(fr);
 
     final boolean hasHiddenCols = av.hasHiddenColumns();
     boolean hiddenRow = false;
@@ -267,18 +269,18 @@ public class OverviewPanel extends JPanel implements Runnable
       {
         if (doCopy)
         {
-          color = miniMe.getRGB(col, row - 1);
+          rgbColour = miniMe.getRGB(col, row - 1);
         }
         else if ((int) (col * sampleCol) != lastcol
                 || (int) (row * sampleRow) != lastrow)
         {
           lastcol = (int) (col * sampleCol);
-          color = getColumnColourFromSequence(seq, hiddenRow, hasHiddenCols,
-                  lastcol);
+          rgbColour = getColumnColourFromSequence(seq, hiddenRow,
+                  hasHiddenCols, lastcol, finder);
         }
         // else we just use the color we already have , so don't need to set it
 
-        miniMe.setRGB(col, row, color);
+        miniMe.setRGB(col, row, rgbColour);
       }
     }
   }
@@ -286,37 +288,26 @@ public class OverviewPanel extends JPanel implements Runnable
   /*
    * Find the colour of a sequence at a specified column position
    */
-  private int getColumnColourFromSequence(jalview.datamodel.SequenceI seq,
-          boolean hiddenRow, boolean hasHiddenCols, int lastcol)
+  private int getColumnColourFromSequence(
+          jalview.datamodel.SequenceI seq,
+          boolean hiddenRow, boolean hasHiddenCols, int lastcol,
+          FeatureColourFinder finder)
   {
-    int color;
+    Color color = Color.white;
 
-    if (seq == null)
+    if ((seq != null) && (seq.getLength() > lastcol))
     {
-      color = Color.white.getRGB();
-    }
-    else if (seq.getLength() > lastcol)
-    {
-      color = sr.getResidueBoxColour(seq, lastcol).getRGB();
-
-      if (av.isShowSequenceFeatures())
-      {
-        color = fr.findFeatureColour(color, seq, lastcol);
-      }
-    }
-    else
-    {
-      color = Color.white.getRGB();
+       color = sr.getResidueColour(seq, lastcol, finder);
     }
 
     if (hiddenRow
             || (hasHiddenCols && !av.getColumnSelection()
                     .isVisible(lastcol)))
     {
-      color = new Color(color).darker().darker().getRGB();
+      color = color.darker().darker();
     }
 
-    return color;
+    return color.getRGB();
   }
 
   /**