X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=f81e471e67966cb9aed1bb31f35455791399d9e0;hb=7c12f8eb9879172c5c437143ca5eb811a8daf5c7;hp=ed00d3379d6c59bec106afe6b8878f4a64c18a68;hpb=9c5d69ef1e102b1eac18ec13c362522f40c9000d;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index ed00d33..f81e471 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) + { + if ( (av.getStartRes() > end) || (av.getEndRes() < start) || + ( (av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex))) + { + setScrollValues(start, seqIndex); + } + } + else { - setScrollValues(start, results[0]); + int cwidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()); + if( start(av.getStartRes()+cwidth) ) + { + vscroll.setValue(start / cwidth); + av.startRes = vscroll.getValue() * cwidth; + } } } } @@ -480,28 +490,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" + ""); - for (int s = 0; s < av.alignment.getHeight(); s++) + for (s = 0; s < sSize; s++) { + sy = s * av.charHeight + scaleHeight; + SequenceI seq = av.alignment.getSequenceAt(s); + java.util.Vector features = seq.getDatasetSequence().getSequenceFeatures(); SequenceGroup[] groups = av.alignment.findAllGroups(seq); - for (int i = 0; i < groups.length; i++) + for(res =0; resres) + text.append("
" + groups[g].getName() + ""); + } + + if (features != null) + { + if(text.length()<1) + { + text.append("" + groups[i].getName() + - "')\"; onMouseOut=\"toolTip()\"; " - + " href=\"#\">"); + + alIndex + " " + triplet ); + } + fSize = features.size(); + for (f = 0; f < fSize; f++) + { + SequenceFeature sf = (SequenceFeature) features.elementAt(f); + + if ( (sf.getBegin() <= seq.findPosition(res)) && + (sf.getEnd() >= seq.findPosition(res))) + { + if (sf.getType().equals("disulfide bond")) + { + if (sf.getBegin() == seq.findPosition(res) + || sf.getEnd() == seq.findPosition(res)) + { + text.append("
disulfide bond " + sf.getBegin() + ":" + + sf.getEnd()); + } + } + else + { + text.append("
"); + text.append(sf.getType()); + if (sf.getDescription() != null && !sf.getType().equals(sf.getDescription())) + text.append(" " + sf.getDescription()); + + if (sf.getStatus() != null && sf.getStatus().length()>0) + { + text.append(" (" + sf.getStatus() + ")"); + } + } + } + + } + } + if(text.length()>1) + { + text.append("')\"; onMouseOut=\"toolTip()\"; href=\"#\">"); + out.println(text.toString()); + } } } - } - out.println("
"); out.close();