TreePanel takes viewport
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index d1b9350..fae6dfc 100755 (executable)
@@ -18,8 +18,6 @@
  */\r
 package jalview.gui;\r
 \r
-import jalview.analysis.*;\r
-\r
 import jalview.datamodel.*;\r
 \r
 import jalview.jbgui.*;\r
@@ -151,12 +149,30 @@ public class AlignmentPanel extends GAlignmentPanel
                 av.charHeight + fm.getDescent()));\r
 \r
         idPanel.idCanvas.gg = null;\r
+        seqPanel.seqCanvas.img = null;\r
         annotationPanel.adjustPanelHeight();\r
 \r
         Dimension d = calculateIdWidth();\r
         d.setSize(d.width + 4, d.height);\r
         idPanel.idCanvas.setPreferredSize(d);\r
         hscrollFillerPanel.setPreferredSize(d);\r
+\r
+        if (av.getWrapAlignment())\r
+        {\r
+          int max = av.alignment.getWidth() /\r
+              seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth());\r
+          vscroll.setMaximum(max);\r
+          vscroll.setUnitIncrement(1);\r
+          vscroll.setVisibleAmount(1);\r
+        }\r
+        else\r
+        {\r
+          setScrollValues(av.getStartRes(), av.getStartSeq());\r
+        }\r
+\r
+        if(overviewPanel!=null)\r
+          overviewPanel.setBoxPosition();\r
+\r
         repaint();\r
     }\r
 \r
@@ -167,16 +183,9 @@ public class AlignmentPanel extends GAlignmentPanel
      */\r
     public Dimension calculateIdWidth()\r
     {\r
-        Graphics g = this.getGraphics();\r
-\r
-        if (g == null)\r
-        {\r
-            javax.swing.JFrame f = new javax.swing.JFrame();\r
-            f.addNotify();\r
-            g = f.getGraphics();\r
-        }\r
+      Container c = new Container();\r
 \r
-        FontMetrics fm = g.getFontMetrics(av.font);\r
+        FontMetrics fm = c.getFontMetrics(av.font);\r
         AlignmentI al = av.getAlignment();\r
 \r
         int i = 0;\r
@@ -209,7 +218,7 @@ public class AlignmentPanel extends GAlignmentPanel
 \r
         if (al.getAlignmentAnnotation() != null)\r
         {\r
-            fm = g.getFontMetrics(alabels.getFont());\r
+            fm = c.getFontMetrics(alabels.getFont());\r
 \r
             while (i < al.getAlignmentAnnotation().length)\r
             {\r
@@ -290,43 +299,28 @@ public class AlignmentPanel extends GAlignmentPanel
      */\r
     public void setWrapAlignment(boolean wrap)\r
     {\r
+        av.startSeq = 0;\r
         scalePanelHolder.setVisible(!wrap);\r
         hscroll.setVisible(!wrap);\r
         idwidthAdjuster.setVisible(!wrap);\r
 \r
-        av.setShowAnnotation(!wrap);\r
-        annotationScroller.setVisible(!wrap);\r
-        annotationSpaceFillerHolder.setVisible(!wrap);\r
-        idSpaceFillerPanel1.setVisible(!wrap);\r
-\r
-        repaint();\r
-    }\r
-\r
-    /**\r
-     * DOCUMENT ME!\r
-     */\r
-    public void setColourScheme()\r
-    {\r
-        ColourSchemeI cs = av.getGlobalColourScheme();\r
-\r
-        if (av.getConservationSelected())\r
-        {\r
-            Alignment al = (Alignment) av.getAlignment();\r
-            Conservation c = new Conservation("All",\r
-                    ResidueProperties.propHash, 3, al.getSequences(), 0,\r
-                    al.getWidth());\r
-\r
-            c.calculate();\r
-            c.verdict(false, av.ConsPercGaps);\r
+       if(wrap)\r
+       {\r
+         annotationScroller.setVisible(false);\r
+         annotationSpaceFillerHolder.setVisible(false);\r
+       }\r
+       else if(av.showAnnotation)\r
+       {\r
+         annotationScroller.setVisible(true);\r
+         annotationSpaceFillerHolder.setVisible(true);\r
+       }\r
 \r
-            ConservationColourScheme ccs = new ConservationColourScheme(c, cs);\r
-\r
-            av.setGlobalColourScheme(ccs);\r
-        }\r
+       idSpaceFillerPanel1.setVisible(!wrap);\r
 \r
         repaint();\r
     }\r
 \r
+\r
     // return value is true if the scroll is valid\r
     public boolean scrollUp(boolean up)\r
     {\r
@@ -439,14 +433,6 @@ public class AlignmentPanel extends GAlignmentPanel
         vscroll.setValues(y, vextent, 0, av.getAlignment().getHeight());\r
     }\r
 \r
-    public void this_mouseWheelMoved(MouseWheelEvent e)\r
-    {\r
-      if(e.getWheelRotation()>0)\r
-        scrollUp(false);\r
-      else\r
-        scrollUp(true);\r
-    }\r
-\r
 \r
     /**\r
      * DOCUMENT ME!\r
@@ -455,6 +441,7 @@ public class AlignmentPanel extends GAlignmentPanel
      */\r
     public void adjustmentValueChanged(AdjustmentEvent evt)\r
     {\r
+\r
         int oldX = av.getStartRes();\r
         int oldY = av.getStartSeq();\r
 \r
@@ -489,21 +476,28 @@ public class AlignmentPanel extends GAlignmentPanel
             overviewPanel.setBoxPosition();\r
         }\r
 \r
-        if (av.getWrapAlignment() || !fastPaint)\r
+        int xShift = av.getStartRes() - oldX;\r
+        int yShift = av.getStartSeq() - 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
         {\r
-            repaint();\r
+          // Either no shift at all, or shift greater than visible amount\r
+          repaint();\r
         }\r
         else\r
         {\r
-            idPanel.idCanvas.fastPaint(av.getStartSeq() - oldY);\r
-            seqPanel.seqCanvas.fastPaint(av.getStartRes() - oldX,\r
-                av.getStartSeq() - oldY);\r
+            idPanel.idCanvas.fastPaint(yShift);\r
+            seqPanel.seqCanvas.fastPaint(xShift, yShift);\r
 \r
             scalePanel.repaint();\r
 \r
             if (av.getShowAnnotation())\r
             {\r
-                annotationPanel.fastPaint(av.getStartRes() - oldX);\r
+                annotationPanel.fastPaint(xShift);\r
             }\r
         }\r
     }\r