import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
+import java.util.ArrayList;
import java.util.BitSet;
+import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import jalview.analysis.Conservation;
import jalview.analysis.TreeModel;
import jalview.api.AlignViewportI;
+import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.BinaryNode;
import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.ContactMatrixI;
import jalview.datamodel.HiddenColumns;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
void colourGroups(List<BinaryNode> groups)
{
AlignmentPanel[] aps = getAssociatedPanels();
+ List<BitSet> colGroups = new ArrayList<>();
+ Map<BitSet,Color> colors=new HashMap();
for (int i = 0; i < groups.size(); i++)
{
Color col = new Color((int) (Math.random() * 255),
if (!tp.isColumnWise()) {
createSeqGroupFor(aps, l, col);
} else {
- markColumnsFor(aps,l,col);
+ BitSet gp=createColumnGroupFor(l,col);
+
+ colGroups.add(gp);
+ colors.put(gp, col);
+ }
+ }
+ if (tp.isColumnWise())
+ {
+ AlignmentAnnotation aa = tp.getAssocAnnotation();
+ if (aa!=null) {
+ ContactMatrixI cm = av.getContactMatrix(aa);
+ if (cm!=null)
+ {
+ cm.updateGroups(colGroups);
+ for (BitSet gp:colors.keySet())
+ {
+ cm.setColorForGroup(gp, colors.get(gp));
+ }
+ }
}
}
}
return false;
}
+
+ private BitSet createColumnGroupFor(Vector<BinaryNode> l,
+ Color col)
+ {
+ BitSet gp=new BitSet();
+ for (BinaryNode bn:l)
+ {
+ int colm=-1;
+ if (bn.element()!=null && bn.element()instanceof Integer)
+ { colm = (Integer)bn.element();
+ } else {
+ // parse out from nodename
+ try {
+ colm = Integer.parseInt(bn.getName().substring(bn.getName().indexOf("c")+1));
+ } catch (Exception e)
+ {
+ continue;
+ }
+ }
+ gp.set(colm);
+ }
+ return gp;
+ }
private void markColumnsFor(AlignmentPanel[] aps, Vector<BinaryNode> l,
Color col)