X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=7ef6763b74f3d7058b3a9e9a64495f9157a57d42;hb=2959d102cb701ba58489e7222cd101d0eb02ead6;hp=c7fccfe346950564dc8bb6306e8624ad8ddc32d1;hpb=db828a80af30619c8d46259c700be89c4731b700;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index c7fccfe..7ef6763 100755 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -81,9 +81,7 @@ public class AlignmentPanel extends GAlignmentPanel annotationPanel = new AnnotationPanel(this); alabels = new AnnotationLabels(this); - annotationSpaceFillerHolder.setPreferredSize(annotationPanel. - getPreferredSize()); - annotationScroller.setPreferredSize(annotationPanel.getPreferredSize()); + annotationScroller.setViewportView(annotationPanel); annotationSpaceFillerHolder.add(alabels, BorderLayout.CENTER); @@ -242,22 +240,34 @@ public class AlignmentPanel extends GAlignmentPanel * * @param results DOCUMENT ME! */ - public void highlightSearchResults(int[] results) + public void highlightSearchResults(SearchResults results) { seqPanel.seqCanvas.highlightSearchResults(results); // do we need to scroll the panel? if (results != null) { - SequenceI seq = av.alignment.getSequenceAt(results[0]); - int start = seq.findIndex(results[1]) - 1; - int end = seq.findIndex(results[2]) - 1; + SequenceI seq = results.getResultSequence(0); + int seqIndex = av.alignment.findIndex(seq); + int start = seq.findIndex(results.getResultStart(0)) - 1; + int end = seq.findIndex(results.getResultEnd(0)) - 1; - if ( (av.getStartRes() > start) || (av.getEndRes() < end) || - ( (av.getStartSeq() > results[0]) || - (av.getEndSeq() < results[0]))) + if(!av.wrapAlignment) { - setScrollValues(start, results[0]); + if ( (av.getStartRes() > end) || (av.getEndRes() < start) || + ( (av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex))) + { + setScrollValues(start, seqIndex); + } + } + else + { + int cwidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()); + if( start(av.getStartRes()+cwidth) ) + { + vscroll.setValue(start / cwidth); + av.startRes = vscroll.getValue() * cwidth; + } } } } @@ -397,30 +407,36 @@ public class AlignmentPanel extends GAlignmentPanel */ public void setScrollValues(int x, int y) { - av.setEndRes( (x + (seqPanel.seqCanvas.getWidth() / av.getCharWidth())) - - 1); + + int width = av.alignment.getWidth(); + int height = av.alignment.getHeight(); + + if(av.hasHiddenColumns) + width = av.getColumnSelection().findColumnPosition(width); + + av.setEndRes( (x + (seqPanel.seqCanvas.getWidth() / av.charWidth)) -1); hextent = seqPanel.seqCanvas.getWidth() / av.charWidth; vextent = seqPanel.seqCanvas.getHeight() / av.charHeight; - if (hextent > av.alignment.getWidth()) + if (hextent > width) { - hextent = av.alignment.getWidth(); + hextent = width; } - if (vextent > av.alignment.getHeight()) + if (vextent > height) { - vextent = av.alignment.getHeight(); + vextent = height; } - if ( (hextent + x) > av.getAlignment().getWidth()) + if ( (hextent + x) > width) { - x = av.getAlignment().getWidth() - hextent; + x = width - hextent; } - if ( (vextent + y) > av.getAlignment().getHeight()) + if ( (vextent + y) > height) { - y = av.getAlignment().getHeight() - vextent; + y = height - vextent; } if (y < 0) @@ -433,8 +449,8 @@ public class AlignmentPanel extends GAlignmentPanel x = 0; } - hscroll.setValues(x, hextent, 0, av.getAlignment().getWidth()); - vscroll.setValues(y, vextent, 0, av.getAlignment().getHeight()); + hscroll.setValues(x, hextent, 0, width); + vscroll.setValues(y, vextent, 0, height); } /** @@ -444,7 +460,6 @@ public class AlignmentPanel extends GAlignmentPanel */ public void adjustmentValueChanged(AdjustmentEvent evt) { - int oldX = av.getStartRes(); int oldY = av.getStartSeq(); @@ -480,28 +495,33 @@ public class AlignmentPanel extends GAlignmentPanel overviewPanel.setBoxPosition(); } - int xShift = av.getStartRes() - oldX; - int yShift = av.getStartSeq() - oldY; + int scrollX = av.startRes - oldX; + int scrollY = av.startSeq - oldY; - if ( (xShift != 0 && yShift != 0) || - (Math.abs(xShift) > av.getEndRes() - av.getStartRes() - || Math.abs(yShift) > av.getEndSeq() - av.getStartSeq()) - || av.getWrapAlignment() - || !fastPaint) + if (av.getWrapAlignment() || !fastPaint) { - // Either no shift at all, or shift greater than visible amount repaint(); } else { - idPanel.idCanvas.fastPaint(yShift); - seqPanel.seqCanvas.fastPaint(xShift, yShift); - - scalePanel.repaint(); - - if (av.getShowAnnotation()) + // Make sure we're not trying to draw a panel + // larger than the visible window + if(scrollX>av.endRes-av.startRes) + scrollX = av.endRes-av.startRes; + else if(scrollX= seq.findPosition(res))) + if ( (features[f].getBegin() <= seq.findPosition(res)) && + (features[f].getEnd() >= seq.findPosition(res))) { - if (sf.getType().equals("disulfide bond")) + if (features[f].getType().equals("disulfide bond")) { - if (sf.getBegin() == seq.findPosition(res) - || sf.getEnd() == seq.findPosition(res)) + if (features[f].getBegin() == seq.findPosition(res) + || features[f].getEnd() == seq.findPosition(res)) { - text.append("
disulfide bond " + sf.getBegin() + ":" + - sf.getEnd()); + text.append("
disulfide bond " + features[f].getBegin() + ":" + + features[f].getEnd()); } } else { text.append("
"); - text.append(sf.getType()); - if (sf.getDescription() != null && !sf.getType().equals(sf.getDescription())) - text.append(" " + sf.getDescription()); + text.append(features[f].getType()); + if (features[f].getDescription() != null && !features[f].getType().equals(features[f].getDescription())) + text.append(" " + features[f].getDescription()); - if (sf.getStatus() != null && sf.getStatus().length()>0) + if (features[f].getStatus() != null && features[f].getStatus().length()>0) { - text.append(" (" + sf.getStatus() + ")"); + text.append(" (" + features[f].getStatus() + ")"); } } }