New implementation for holding search results
[jalview.git] / src / jalview / gui / SeqCanvas.java
index 7dbb8d3..a9f2329 100755 (executable)
@@ -41,8 +41,7 @@ public class SeqCanvas extends JComponent
     int imgWidth;\r
     int imgHeight;\r
     AlignViewport av;\r
-    boolean displaySearch = false;\r
-    int[] searchResults = null;\r
+    SearchResults searchResults = null;\r
     boolean fastPaint = false;\r
     int LABEL_WEST;\r
     int LABEL_EAST;\r
@@ -620,7 +619,23 @@ public class SeqCanvas extends JComponent
                     offset + ((i - starty) * av.charHeight), av.charWidth,\r
                     av.charHeight);\r
             }\r
-        }\r
+\r
+            /// Highlight search Results once all sequences have been drawn\r
+            //////////////////////////////////////////////////////////\r
+            if (searchResults != null)\r
+            {\r
+              int[] visibleResults = searchResults.getResults(nextSeq, x1, x2);\r
+              if (visibleResults != null)\r
+                for (int r = 0; r < visibleResults.length; r += 2)\r
+                {\r
+                  sr.drawHighlightedText(nextSeq, visibleResults[r],\r
+                                         visibleResults[r + 1],\r
+                                         (visibleResults[r] - startx) * av.charWidth,\r
+                                         offset + ( (i - starty) * av.charHeight),\r
+                                         av.charWidth, av.charHeight);\r
+                }\r
+            }\r
+          }\r
 \r
         //\r
         /////////////////////////////////////\r
@@ -784,41 +799,6 @@ public class SeqCanvas extends JComponent
             }\r
             while (groupIndex < av.alignment.getGroups().size());\r
         }\r
-\r
-        /// Highlight search Results once all sequences have been drawn\r
-        //////////////////////////////////////////////////////////\r
-        if (displaySearch)\r
-        {\r
-            for (int r = 0; r < searchResults.length; r += 3)\r
-            {\r
-                int searchSeq = searchResults[r];\r
-\r
-                if ((searchSeq >= y1) && (searchSeq < y2))\r
-                {\r
-                    SequenceI seq = av.getAlignment().getSequenceAt(searchSeq);\r
-\r
-                    int searchStart = seq.findIndex(searchResults[r + 1]) - 1;\r
-                    int searchEnd = seq.findIndex(searchResults[r + 2]) - 1;\r
-\r
-                    SequenceRenderer ssr = (SequenceRenderer) sr;\r
-\r
-                    if (searchStart < x1)\r
-                    {\r
-                        searchStart = x1;\r
-                    }\r
-\r
-                    if (searchEnd > x2)\r
-                    {\r
-                        searchEnd = x2;\r
-                    }\r
-\r
-                    ssr.drawHighlightedText(seq, searchStart, searchEnd,\r
-                        (searchStart - startx) * av.charWidth,\r
-                        offset + ((searchSeq - starty) * av.charHeight),\r
-                        av.charWidth, av.charHeight);\r
-                }\r
-            }\r
-        }\r
     }\r
 \r
     /**\r
@@ -826,17 +806,9 @@ public class SeqCanvas extends JComponent
      *\r
      * @param results DOCUMENT ME!\r
      */\r
-    public void highlightSearchResults(int[] results)\r
+    public void highlightSearchResults(SearchResults results)\r
     {\r
-        // results are in the order sequence, startRes, endRes\r
-        if (results == null)\r
-        {\r
-            displaySearch = false;\r
-        }\r
-        else\r
-        {\r
-            displaySearch = true;\r
-        }\r
+        img = null;\r
 \r
         searchResults = results;\r
 \r