added description of alignment quality scores and separated
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index 3ebc57c..0acf425 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
@@ -242,24 +240,24 @@ public class AlignmentPanel extends GAlignmentPanel
    *\r
    * @param results DOCUMENT ME!\r
    */\r
-  public void highlightSearchResults(int[] results)\r
+  public void highlightSearchResults(SearchResults results)\r
   {\r
     seqPanel.seqCanvas.highlightSearchResults(results);\r
 \r
     // do we need to scroll the panel?\r
     if (results != null)\r
     {\r
-      SequenceI seq = av.alignment.getSequenceAt(results[0]);\r
-      int start = seq.findIndex(results[1]) - 1;\r
-      int end = seq.findIndex(results[2]) - 1;\r
+      SequenceI seq = results.getResultSequence(0);\r
+      int seqIndex = av.alignment.findIndex(seq);\r
+      int start = seq.findIndex(results.getResultStart(0)) - 1;\r
+      int end = seq.findIndex(results.getResultEnd(0)) - 1;\r
 \r
       if(!av.wrapAlignment)\r
       {\r
-        if ( (av.getStartRes() > start) || (av.getEndRes() < end) ||\r
-            ( (av.getStartSeq() > results[0]) ||\r
-             (av.getEndSeq() < results[0])))\r
+        if ( (av.getStartRes() > end)  || (av.getEndRes() < start) ||\r
+           ( (av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex)))\r
         {\r
-          setScrollValues(start, results[0]);\r
+          setScrollValues(start, seqIndex);\r
         }\r
       }\r
       else\r
@@ -268,6 +266,7 @@ public class AlignmentPanel extends GAlignmentPanel
         if( start<av.getStartRes() || start>(av.getStartRes()+cwidth) )\r
         {\r
           vscroll.setValue(start / cwidth);\r
+          av.startRes = vscroll.getValue() * cwidth;\r
         }\r
       }\r
     }\r
@@ -491,28 +490,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
@@ -704,8 +708,7 @@ public class AlignmentPanel extends GAlignmentPanel
 \r
     // draw main sequence panel\r
     pg.translate(idWidth, 0);\r
-    seqPanel.seqCanvas.drawPanel(pg, startRes, endRes, startSeq, endSeq,\r
-                                 startRes, startSeq, 0);\r
+    seqPanel.seqCanvas.drawPanel(pg, startRes, endRes, startSeq, endSeq, 0);\r
 \r
     if (av.showAnnotation && (endSeq == av.alignment.getHeight()))\r
     {\r
@@ -936,7 +939,7 @@ public class AlignmentPanel extends GAlignmentPanel
           sy = s * av.charHeight + scaleHeight;\r
 \r
           SequenceI seq = av.alignment.getSequenceAt(s);\r
-          java.util.Vector features = seq.getDatasetSequence().getSequenceFeatures();\r
+          SequenceFeature [] features = seq.getDatasetSequence().getSequenceFeatures();\r
           SequenceGroup[] groups = av.alignment.findAllGroups(seq);\r
           for(res =0; res<alwidth; res++)\r
           {\r
@@ -983,33 +986,32 @@ public class AlignmentPanel extends GAlignmentPanel
                   + " onMouseOver=\"toolTip('"\r
                   + alIndex + " " + triplet );\r
               }\r
-                fSize = features.size();\r
+                fSize = features.length;\r
                 for (f = 0; f < fSize; f++)\r
                 {\r
-                  SequenceFeature sf = (SequenceFeature) features.elementAt(f);\r
 \r
-                  if ( (sf.getBegin() <= seq.findPosition(res)) &&\r
-                      (sf.getEnd() >= seq.findPosition(res)))\r
+                  if ( (features[f].getBegin() <= seq.findPosition(res)) &&\r
+                      (features[f].getEnd() >= seq.findPosition(res)))\r
                   {\r
-                    if (sf.getType().equals("disulfide bond"))\r
+                    if (features[f].getType().equals("disulfide bond"))\r
                     {\r
-                      if (sf.getBegin() == seq.findPosition(res)\r
-                          || sf.getEnd() == seq.findPosition(res))\r
+                      if (features[f].getBegin() == seq.findPosition(res)\r
+                          || features[f].getEnd() == seq.findPosition(res))\r
                       {\r
-                        text.append("<br>disulfide bond " + sf.getBegin() + ":" +\r
-                                       sf.getEnd());\r
+                        text.append("<br>disulfide bond " + features[f].getBegin() + ":" +\r
+                                       features[f].getEnd());\r
                       }\r
                     }\r
                     else\r
                     {\r
                       text.append("<br>");\r
-                      text.append(sf.getType());\r
-                      if (sf.getDescription() != null && !sf.getType().equals(sf.getDescription()))\r
-                        text.append(" " + sf.getDescription());\r
+                      text.append(features[f].getType());\r
+                      if (features[f].getDescription() != null && !features[f].getType().equals(features[f].getDescription()))\r
+                        text.append(" " + features[f].getDescription());\r
 \r
-                      if (sf.getStatus() != null && sf.getStatus().length()>0)\r
+                      if (features[f].getStatus() != null && features[f].getStatus().length()>0)\r
                       {\r
-                        text.append(" (" + sf.getStatus() + ")");\r
+                        text.append(" (" + features[f].getStatus() + ")");\r
                       }\r
                     }\r
                   }\r