+ ((AlignViewport) codingComplement).getAlignPanel()
+ .updateAnnotation();
+ }
+ }
+ }
+ private int parseColumnNode(BinaryNode bn) throws NumberFormatException
+ {
+ return Integer.parseInt(
+ bn.getName().substring(bn.getName().indexOf("c") + 1));
+ }
+ private boolean isColumnForNodeSelected(BinaryNode bn)
+ {
+ SequenceI rseq = tp.assocAnnotation.sequenceRef;
+ int colm = -1;
+ try
+ {
+ colm = parseColumnNode(bn);
+ } catch (Exception e)
+ {
+ return false;
+ }
+ if (av == null || av.getAlignment() == null)
+ {
+ // alignment is closed
+ return false;
+ }
+ ColumnSelection cs = av.getColumnSelection();
+ HiddenColumns hc = av.getAlignment().getHiddenColumns();
+ AlignmentAnnotation aa = tp.getAssocAnnotation();
+ int offp=-1;
+ if (aa != null)
+ {
+ ContactMatrixI cm = av.getContactMatrix(aa);
+ // generally, we assume cm has 1:1 mapping to annotation row - probably wrong
+ // but.. if
+ if (cm instanceof MappableContactMatrixI)
+ {
+ int[] pos;
+ // use the mappable's mapping - always the case for PAE Matrices so good
+ // for 2.11.3
+ MappableContactMatrixI mcm = (MappableContactMatrixI) cm;
+ pos = mcm.getMappedPositionsFor(rseq, colm + 1);
+ // finally, look up the position of the column
+ if (pos != null)
+ {
+ offp = rseq.findIndex(pos[0]);
+ }
+ } else {
+ offp = colm;
+ }
+ }
+ if (offp<=0)
+ {
+ return false;
+ }