X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=0878cbb1cbeaaa328887a9a8e5beb96d79bce69e;hb=496ecb05d48de1ca8471658fd32824f808bb8823;hp=a6fa141fbe476916ee68af74206d6913c0b15649;hpb=80e3c4b6e17a6262ccbc193b9824ea3700a86f87;p=jalview.git diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index a6fa141..0878cbb 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -389,38 +389,12 @@ public class SeqPanel extends JPanel implements MouseListener, endEditing(); if (av.getWrapAlignment()) { - ap.scrollToWrappedVisible(seqCanvas.cursorX); + av.getRanges().scrollToWrappedVisible(seqCanvas.cursorX); } else { - while (seqCanvas.cursorY < av.getRanges().getStartSeq()) - { - ap.scrollUp(true); - } - while (seqCanvas.cursorY > av.getRanges().getEndSeq()) - { - ap.scrollUp(false); - } - if (!av.getWrapAlignment()) - { - HiddenColumns hidden = av.getAlignment().getHiddenColumns(); - while (seqCanvas.cursorX < hidden.adjustForHiddenColumns(av - .getRanges().getStartRes())) - { - if (!ap.scrollRight(false)) - { - break; - } - } - while (seqCanvas.cursorX > hidden.adjustForHiddenColumns(av - .getRanges().getEndRes())) - { - if (!ap.scrollRight(true)) - { - break; - } - } - } + av.getRanges().scrollToVisible(seqCanvas.cursorX, seqCanvas.cursorY, + av); } setStatusMessage(av.getAlignment().getSequenceAt(seqCanvas.cursorY), seqCanvas.cursorX, seqCanvas.cursorY); @@ -697,17 +671,16 @@ public class SeqPanel extends JPanel implements MouseListener, if (av.isFollowHighlight()) { - /* - * if scrollToPosition requires a scroll adjustment, this flag prevents - * another scroll event being propagated back to the originator - * - * @see AlignmentPanel#adjustmentValueChanged - */ - ap.setDontScrollComplement(true); + // don't allow highlight of protein/cDNA to also scroll a complementary + // panel,as this sets up a feedback loop (scrolling panel 1 causes moused + // over residue to change abruptly, causing highlighted residue in panel 2 + // to change, causing a scroll in panel 1 etc) + ap.setToScrollComplementPanel(false); if (ap.scrollToPosition(results, false)) { seqCanvas.revalidate(); } + ap.setToScrollComplementPanel(true); } setStatusMessage(results); seqCanvas.highlightSearchResults(results); @@ -789,7 +762,7 @@ public class SeqPanel extends JPanel implements MouseListener, } } - if (av.isShowSequenceFeatures()) + if (av.isShowSequenceFeatures() && pos != -1) { List features = ap.getFeatureRenderer() .findFeaturesAtRes(sequence.getDatasetSequence(), pos); @@ -862,7 +835,8 @@ public class SeqPanel extends JPanel implements MouseListener, /** * Sets the status message in alignment panel, showing the sequence number * (index) and id, residue and residue position for the given sequence and - * column position. Returns the calculated residue position in the sequence. + * column position. Returns the calculated residue position in the sequence, + * or -1 for a gapped column position. * * @param sequence * aligned sequence object @@ -870,7 +844,7 @@ public class SeqPanel extends JPanel implements MouseListener, * alignment column * @param seq * index of sequence in alignment - * @return position of res in sequence + * @return position of column in sequence or -1 if at a gap */ int setStatusMessage(SequenceI sequence, final int column, int seq) { @@ -908,9 +882,9 @@ public class SeqPanel extends JPanel implements MouseListener, } int pos = -1; - pos = sequence.findPosition(column); if (residue != null) { + pos = sequence.findPosition(column); text.append(" (").append(Integer.toString(pos)).append(")"); } ap.alignFrame.statusBar.setText(text.toString()); @@ -1587,23 +1561,23 @@ public class SeqPanel extends JPanel implements MouseListener, { if (e.isShiftDown()) { - ap.scrollRight(true); + av.getRanges().scrollRight(true); } else { - ap.scrollUp(false); + av.getRanges().scrollUp(false); } } else { if (e.isShiftDown()) { - ap.scrollRight(false); + av.getRanges().scrollRight(false); } else { - ap.scrollUp(true); + av.getRanges().scrollUp(true); } } // TODO Update tooltip for new position. @@ -1975,23 +1949,23 @@ public class SeqPanel extends JPanel implements MouseListener, if (mouseDragging && (evt.getY() < 0) && (av.getRanges().getStartSeq() > 0)) { - running = ap.scrollUp(true); + running = av.getRanges().scrollUp(true); } if (mouseDragging && (evt.getY() >= getHeight()) && (av.getAlignment().getHeight() > av.getRanges() .getEndSeq())) { - running = ap.scrollUp(false); + running = av.getRanges().scrollUp(false); } if (mouseDragging && (evt.getX() < 0)) { - running = ap.scrollRight(false); + running = av.getRanges().scrollRight(false); } else if (mouseDragging && (evt.getX() >= getWidth())) { - running = ap.scrollRight(true); + running = av.getRanges().scrollRight(true); } }