Fast paint update
authoramwaterhouse <Andrew Waterhouse>
Mon, 30 Jan 2006 14:54:54 +0000 (14:54 +0000)
committeramwaterhouse <Andrew Waterhouse>
Mon, 30 Jan 2006 14:54:54 +0000 (14:54 +0000)
src/jalview/gui/AlignmentPanel.java

index 3ebc57c..fdd01d3 100755 (executable)
@@ -81,9 +81,7 @@ public class AlignmentPanel extends GAlignmentPanel
     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
@@ -491,28 +489,33 @@ public class AlignmentPanel extends GAlignmentPanel
       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