JAL-4158 first attempt at stashing colours for contact matrix groups and allowing...
[jalview.git] / src / jalview / datamodel / ContactMatrix.java
index f2e207c..1b1889e 100644 (file)
@@ -1,7 +1,10 @@
 package jalview.datamodel;
 
+import java.awt.Color;
 import java.math.BigInteger;
 import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Spliterator;
 import java.util.StringTokenizer;
@@ -171,7 +174,53 @@ public abstract class ContactMatrix implements ContactMatrixI
   {
     return "Contact Matrix";
   }
-
+  List<BitSet> groups=null;
+  @Override
+  public void updateGroups(List<BitSet> colGroups)
+  {
+    groups = colGroups;
+    colorMap=new HashMap<>();
+  }
+  @Override
+  public boolean hasGroups()
+  {
+    return groups!=null && groups.size()>0;
+  }
+  @Override
+  public List<BitSet> getGroups()
+  {
+    return groups;
+  }
+  @Override
+  public BitSet getGroupsFor(int column)
+  {
+    for (BitSet gp:groups) {
+      if (gp.get(column))
+      {
+        return gp;
+      }
+    }
+    return ContactMatrixI.super.getGroupsFor(column);
+  }
+  HashMap<BitSet,Color> colorMap = new HashMap<>();
+  @Override 
+  public Color getColourForGroup(BitSet bs)
+  {
+    if (bs==null) {
+      return Color.white;
+    }
+    Color groupCol=colorMap.get(bs);
+    if (groupCol==null)
+    {
+      return Color.white;
+    }
+    return groupCol;
+  }
+  @Override 
+  public void setColorForGroup(BitSet bs,Color color)
+  {
+    colorMap.put(bs,color);
+  }
   public static String contactToFloatString(ContactMatrixI cm)
   {
     StringBuilder sb = new StringBuilder();