annotationPanel = new AnnotationPanel(this);\r
alabels = new AnnotationLabels(this);\r
\r
- annotationSpaceFillerHolder.setPreferredSize(annotationPanel.\r
- getPreferredSize());\r
- annotationScroller.setPreferredSize(annotationPanel.getPreferredSize());\r
+\r
annotationScroller.setViewportView(annotationPanel);\r
annotationSpaceFillerHolder.add(alabels, BorderLayout.CENTER);\r
\r
overviewPanel.setBoxPosition();\r
}\r
\r
- int xShift = av.getStartRes() - oldX;\r
- int yShift = av.getStartSeq() - oldY;\r
+ int scrollX = av.startRes - oldX;\r
+ int scrollY = av.startSeq - oldY;\r
\r
- if ( (xShift != 0 && yShift != 0) ||\r
- (Math.abs(xShift) > av.getEndRes() - av.getStartRes()\r
- || Math.abs(yShift) > av.getEndSeq() - av.getStartSeq())\r
- || av.getWrapAlignment()\r
- || !fastPaint)\r
+ if (av.getWrapAlignment() || !fastPaint)\r
{\r
- // Either no shift at all, or shift greater than visible amount\r
repaint();\r
}\r
else\r
{\r
- idPanel.idCanvas.fastPaint(yShift);\r
- seqPanel.seqCanvas.fastPaint(xShift, yShift);\r
-\r
- scalePanel.repaint();\r
-\r
- if (av.getShowAnnotation())\r
+ // Make sure we're not trying to draw a panel\r
+ // larger than the visible window\r
+ if(scrollX>av.endRes-av.startRes)\r
+ scrollX = av.endRes-av.startRes;\r
+ else if(scrollX<av.startRes-av.endRes)\r
+ scrollX = av.startRes - av.endRes;\r
+\r
+ if(scrollX!=0 || scrollY!=0)\r
{\r
- annotationPanel.fastPaint(xShift);\r
+ idPanel.idCanvas.fastPaint(scrollY);\r
+ seqPanel.seqCanvas.fastPaint(scrollX,\r
+ scrollY);\r
+ scalePanel.repaint();\r
+\r
+ if (av.getShowAnnotation())\r
+ {\r
+ annotationPanel.fastPaint(scrollX);\r
+ }\r
}\r
}\r
}\r