nameHash.put(node.element(), rect);
// Colour selected leaves differently
- SequenceGroup selected = av.getSelectionGroup();
+ boolean isSelected = false;
+ if (tp.isColumnWise())
+ {
+ isSelected = isColumnForNodeSelected(node);
+ }
+ else
+ {
+ SequenceGroup selected = av.getSelectionGroup();
- if ((selected != null)
- && selected.getSequences(null).contains(node.element()))
+ if ((selected != null)
+ && selected.getSequences(null).contains(node.element()))
+ {
+ isSelected = true;
+ }
+ }
+ if (isSelected)
{
g.setColor(Color.gray);
if (longestName == null || tree == null)
{
g2.drawString("Calculating tree.", 20, 20);
+ return;
}
offy = font.getSize() + 10;
else
{
Vector<BinaryNode> leaves = tree.findLeaves(highlightNode);
- if (tp.getColumnWise()) {
+ if (tp.isColumnWise()) {
markColumnsFor(getAssociatedPanels(), leaves, Color.red);
} else {
for (int i = 0; i < leaves.size(); i++)
setColor(groups.get(i), col.brighter());
Vector<BinaryNode> l = tree.findLeaves(groups.get(i));
- if (!tp.getColumnWise()) {
+ if (!tp.isColumnWise()) {
createSeqGroupFor(aps, l, col);
} else {
markColumnsFor(aps,l,col);
}
}
+ private boolean isColumnForNodeSelected(BinaryNode bn)
+ {
+ SequenceI rseq = tp.assocAnnotation.sequenceRef;
+ int colm = -1;
+ try
+ {
+ colm = Integer.parseInt(
+ bn.getName().substring(bn.getName().indexOf("c") + 1));
+ } catch (Exception e)
+ {
+ return false;
+ }
+ ColumnSelection cs = av.getColumnSelection();
+ HiddenColumns hc = av.getAlignment().getHiddenColumns();
+ int offp = (rseq != null) ? rseq.findIndex(rseq.getStart() + colm)
+ : colm;
+
+ if (!av.hasHiddenColumns())
+ {
+ return cs.contains(offp-1);
+ }
+ if (hc.isVisible(offp-1))
+ {
+ return cs.contains(offp-1);
+// return cs.contains(hc.absoluteToVisibleColumn(offp));
+ }
+ return false;
+ }
+
private void markColumnsFor(AlignmentPanel[] aps, Vector<BinaryNode> l,
Color col)
{