Merge branch 'develop' into features/JAL-2094_colourInterface
[jalview.git] / src / jalview / viewmodel / AlignmentViewport.java
index 19ebf45..01668a5 100644 (file)
@@ -25,6 +25,7 @@ import jalview.analysis.Conservation;
 import jalview.api.AlignCalcManagerI;
 import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
+import jalview.api.ColorI;
 import jalview.api.FeaturesDisplayedI;
 import jalview.api.ViewStyleI;
 import jalview.commands.CommandI;
@@ -42,6 +43,7 @@ import jalview.datamodel.SequenceCollectionI;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.schemes.Blosum62ColourScheme;
+import jalview.schemes.Colour;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.PIDColourScheme;
 import jalview.schemes.ResidueProperties;
@@ -57,7 +59,6 @@ import jalview.workers.ComplementConsensusThread;
 import jalview.workers.ConsensusThread;
 import jalview.workers.StrucConsensusThread;
 
-import java.awt.Color;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.BitSet;
@@ -1107,6 +1108,13 @@ public abstract class AlignmentViewport implements AlignViewportI,
   }
 
   @Override
+  public boolean hasSelectedColumns()
+  {
+    ColumnSelection columnSelection = getColumnSelection();
+    return columnSelection != null && columnSelection.hasSelectedColumns();
+  }
+
+  @Override
   public boolean hasHiddenColumns()
   {
     return colSel != null && colSel.hasHiddenColumns();
@@ -1245,7 +1253,7 @@ public abstract class AlignmentViewport implements AlignViewportI,
 
   protected boolean showConsensus = true;
 
-  private Map<SequenceI, Color> sequenceColours = new HashMap<SequenceI, Color>();
+  private Map<SequenceI, ColorI> sequenceColours = new HashMap<SequenceI, ColorI>();
 
   protected SequenceAnnotationOrder sortAnnotationsBy = null;
 
@@ -2121,14 +2129,14 @@ public abstract class AlignmentViewport implements AlignViewportI,
   }
 
   @Override
-  public Color getSequenceColour(SequenceI seq)
+  public ColorI getSequenceColour(SequenceI seq)
   {
-    Color sqc = sequenceColours.get(seq);
-    return (sqc == null ? Color.white : sqc);
+    ColorI sqc = sequenceColours.get(seq);
+    return (sqc == null ? Colour.white : sqc);
   }
 
   @Override
-  public void setSequenceColour(SequenceI seq, Color col)
+  public void setSequenceColour(SequenceI seq, ColorI col)
   {
     if (col == null)
     {
@@ -2285,7 +2293,7 @@ public abstract class AlignmentViewport implements AlignViewportI,
    * @see jalview.api.ViewStyleI#getTextColour()
    */
   @Override
-  public Color getTextColour()
+  public ColorI getTextColour()
   {
     return viewStyle.getTextColour();
   }
@@ -2295,7 +2303,7 @@ public abstract class AlignmentViewport implements AlignViewportI,
    * @see jalview.api.ViewStyleI#getTextColour2()
    */
   @Override
-  public Color getTextColour2()
+  public ColorI getTextColour2()
   {
     return viewStyle.getTextColour2();
   }
@@ -2366,7 +2374,7 @@ public abstract class AlignmentViewport implements AlignViewportI,
    * @see jalview.api.ViewStyleI#setTextColour(java.awt.Color)
    */
   @Override
-  public void setTextColour(Color textColour)
+  public void setTextColour(ColorI textColour)
   {
     viewStyle.setTextColour(textColour);
   }
@@ -2386,7 +2394,7 @@ public abstract class AlignmentViewport implements AlignViewportI,
    * @see jalview.api.ViewStyleI#setTextColour2(java.awt.Color)
    */
   @Override
-  public void setTextColour2(Color textColour2)
+  public void setTextColour2(ColorI textColour2)
   {
     viewStyle.setTextColour2(textColour2);
   }
@@ -2730,7 +2738,7 @@ public abstract class AlignmentViewport implements AlignViewportI,
       }
       seqMappings = MappingUtils
               .findMappingsForSequenceAndOthers(sequence, mappings,
-                      getCodingComplement().getAlignment());
+                      getCodingComplement().getAlignment().getSequences());
       if (!seqMappings.isEmpty())
       {
         break;
@@ -2763,8 +2771,7 @@ public abstract class AlignmentViewport implements AlignViewportI,
     if (sg != null
             && (sgs = sg.getStartRes()) >= 0
             && sg.getStartRes() <= (sge = sg.getEndRes())
-            && (colSel == null || colSel.getSelected() == null || colSel
-                    .getSelected().size() == 0))
+            && !this.hasSelectedColumns())
     {
       if (!wholewidth && alignment.getWidth() == (1 + sge - sgs))
       {
@@ -2782,5 +2789,32 @@ public abstract class AlignmentViewport implements AlignViewportI,
     }
   }
 
+  /**
+   * hold status of current selection group - defined on alignment or not.
+   */
+  private boolean selectionIsDefinedGroup = false;
 
+  @Override
+  public boolean isSelectionDefinedGroup()
+  {
+    if (selectionGroup == null)
+    {
+      return false;
+    }
+    if (isSelectionGroupChanged(true))
+    {
+      selectionIsDefinedGroup = false;
+      List<SequenceGroup> gps = alignment.getGroups();
+      if (gps == null || gps.size() == 0)
+      {
+        selectionIsDefinedGroup = false;
+      }
+      else
+      {
+        selectionIsDefinedGroup = gps.contains(selectionGroup);
+      }
+    }
+    return selectionGroup.getContext() == alignment
+            || selectionIsDefinedGroup;
+  }
 }