X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationPanel.java;h=8e040488d39b00b0ed4dff382f20bb1c1bf7f7bb;hb=f754db87420bc03f4665bda29593aab07d186dcb;hp=ae8fdbc336f34bf480ac96dbba090c859301891c;hpb=80b889f0cca49103e1b20ed806755a0719789906;p=jalview.git diff --git a/src/jalview/gui/AnnotationPanel.java b/src/jalview/gui/AnnotationPanel.java index ae8fdbc..8e04048 100755 --- a/src/jalview/gui/AnnotationPanel.java +++ b/src/jalview/gui/AnnotationPanel.java @@ -72,6 +72,7 @@ import jalview.util.MessageManager; import jalview.util.Platform; import jalview.viewmodel.ViewportListenerI; import jalview.viewmodel.ViewportRanges; +import jalview.ws.datamodel.MappableContactMatrixI; import jalview.ws.datamodel.alphafold.PAEContactMatrix; /** @@ -667,24 +668,48 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, if (matrix.hasGroups()) { SequenceI rseq = clicked.sequenceRef; - BitSet grp = matrix.getGroupsFor(currentX); + BitSet grp = new BitSet(); + grp.or(matrix.getGroupsFor(currentX)); // TODO: cXci needs to be mapped to real groups for (int c = fr; c <= to; c++) { BitSet additionalGrp = matrix.getGroupsFor(c); grp.or(additionalGrp); } + HiddenColumns hc = av.getAlignment().getHiddenColumns(); - for (int p = grp.nextSetBit(0); p >= 0; p = grp + ColumnSelection cs = av.getColumnSelection(); + + for (int p=grp.nextSetBit(0); p >= 0; p = grp .nextSetBit(p + 1)) { - int offp = (rseq != null) - ? rseq.findIndex(rseq.getStart() - 1 + p) - : p; - - if (!av.hasHiddenColumns() || hc.isVisible(offp)) + if (matrix instanceof MappableContactMatrixI) { - av.getColumnSelection().addElement(offp); + // find the end of this run of set bits + int nextp = grp.nextClearBit(p)-1; + int[] pos = ((MappableContactMatrixI)matrix).getMappedPositionsFor(rseq, p,nextp); + p=nextp; + + if (pos!=null) + { + for (int pos_p = pos[0];pos_p<=pos[1];pos_p++) + { + int col = rseq.findIndex(pos_p)-1; + if (col>=0 && (!av.hasHiddenColumns() || hc.isVisible(col))) + { + cs.addElement(col); + } + } + } + } else { + int offp = (rseq != null) + ? rseq.findIndex(rseq.getStart() - 1 + p) + : p; + + if (!av.hasHiddenColumns() || hc.isVisible(offp)) + { + cs.addElement(offp); + } } } } @@ -1457,8 +1482,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, return; } } - imgWidth = (av.getRanges().getEndRes() - av.getRanges().getStartRes() - + 1) * av.getCharWidth(); + updateFadedImageWidth(); if (imgWidth < 1) { return; @@ -1526,6 +1550,13 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, g.drawImage(image, 0, 0, this); } + public void updateFadedImageWidth() + { + imgWidth = (av.getRanges().getEndRes() - av.getRanges().getStartRes() + + 1) * av.getCharWidth(); + + } + /** * set true to enable redraw timing debug output on stderr */ @@ -1701,6 +1732,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, @Override public int getFadedImageWidth() { + updateFadedImageWidth(); return imgWidth; }