Merge branch 'develop' into features/JAL-4134_use_annotation_row_for_colours_and_groups
[jalview.git] / src / jalview / datamodel / ContactMatrixI.java
index 1d7391b..1d20987 100644 (file)
@@ -14,10 +14,6 @@ public interface ContactMatrixI
 
   float getMax();
 
-  boolean hasReferenceSeq();
-
-  SequenceI getReferenceSeq();
-
   String getAnnotDescr();
 
   String getAnnotLabel();
@@ -31,29 +27,45 @@ public interface ContactMatrixI
   String getType();
 
   int getWidth();
-
   int getHeight();
+  public GroupSetI getGroupSet();
+
+  /// proxy methods to simplify use of the interface
+  /// Mappable contact matrices can override these to perform mapping
+
+  default public boolean hasGroupSet()
+  {
+    return getGroupSet() != null;
+  }
 
   default boolean hasGroups()
   {
-    return false;
+    return hasGroupSet() && getGroupSet().hasGroups();
   }
 
   default BitSet getGroupsFor(int column)
   {
-    BitSet colbitset = new BitSet();
-    colbitset.set(column);
-    return colbitset;
+    if (!hasGroupSet())
+    {
+      BitSet colbitset = new BitSet();
+      colbitset.set(column);
+      return colbitset;
+    }
+    return getGroupSet().getGroupsFor(column);
   }
 
   default List<BitSet> getGroups()
   {
-    return Arrays.asList();
+    if (!hasGroupSet())
+    {
+      return Arrays.asList();
+    }
+    return getGroupSet().getGroups();
   }
 
   default boolean hasTree()
   {
-    return false;
+    return hasGroupSet() ? getGroupSet().hasTree() : false;
   }
 
   /**
@@ -63,30 +75,51 @@ public interface ContactMatrixI
    */
   default String getNewick()
   {
-    return null;
+    return hasGroupSet() ? getGroupSet().getNewick() : null;
   }
 
   default String getTreeMethod()
   {
-    return null;
+    return hasGroupSet() ? getGroupSet().getTreeMethod() : null;
   }
 
   default boolean hasCutHeight()
   {
-    return false;
+    return hasGroupSet() ? getGroupSet().hasCutHeight() : false;
   }
 
   default double getCutHeight()
   {
-    return 0;
+    return hasGroupSet() ? getGroupSet().getCutHeight() : 0;
   }
 
-  void updateGroups(List<BitSet> colGroups);
+  default void updateGroups(List<BitSet> colGroups)
+  {
+    if (hasGroupSet())
+    {
+      getGroupSet().updateGroups(colGroups);
+    }
+  }
 
-  void setColorForGroup(BitSet bs, Color color);
+  default void setColorForGroup(BitSet bs, Color color)
+  {
+    if (hasGroupSet())
+    {
+      getGroupSet().setColorForGroup(bs, color);
+    }
+  }
 
   default Color getColourForGroup(BitSet bs)
   {
-    return Color.white;
-  };
+    if (hasGroupSet())
+    {
+      return getGroupSet().getColourForGroup(bs);
+    }
+    else
+    {
+      return Color.white;
+    }
+  }
+
+  void setGroupSet(GroupSet makeGroups);
 }