Has its own featureRenderer
[jalview.git] / src / MCview / AppletPDBCanvas.java
index f39a3fa..107d98d 100755 (executable)
@@ -77,6 +77,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
     Bond highlightBond1, highlightBond2;\r
     boolean errorLoading = false;\r
     boolean seqColoursReady = false;\r
+    jalview.appletgui.FeatureRenderer fr;\r
 \r
     public AppletPDBCanvas(jalview.appletgui.SeqCanvas seqcanvas, Sequence seq)\r
     {\r
@@ -118,7 +119,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
                     ((PDBChain) pdb.chains.elementAt(i)).sequence, "pep");\r
             as.calcScoreMatrix();\r
             as.traceAlignment();\r
-            PrintStream  ps = new PrintStream(System.out)\r
+            PrintStream ps = new PrintStream(System.out)\r
            {\r
               public void print(String x) {\r
                    mappingDetails.append(x);\r
@@ -418,7 +419,13 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
       drawLabels(ig);\r
     }\r
 \r
-\r
+   void setColours(jalview.schemes.ColourSchemeI cs)\r
+   {\r
+     bysequence = false;\r
+     pdb.setColours(cs);\r
+     redrawneeded = true;\r
+     repaint();\r
+   }\r
     public void updateSeqColours()\r
     {\r
       if (pdbAction)\r
@@ -473,6 +480,18 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
     // Applet and Application specific sequence renderers to be used\r
     void colourBySequence(PDBChain chain)\r
     {\r
+      boolean showFeatures = false;\r
+\r
+      if(seqcanvas.getViewport().getShowSequenceFeatures())\r
+        {\r
+          if(fr==null)\r
+          {\r
+            fr = new jalview.appletgui.FeatureRenderer(seqcanvas.getViewport());\r
+          }\r
+          fr.transferSettings( seqcanvas.getFeatureRenderer());\r
+          showFeatures = true;\r
+        }\r
+\r
       for (int i = 0; i < chain.bonds.size(); i++)\r
       {\r
         Bond tmp = (Bond) chain.bonds.elementAt(i);\r
@@ -492,8 +511,8 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
               tmp.startCol = seqcanvas.getSequenceRenderer().\r
                   getResidueBoxColour( sequence, index);\r
 \r
-          //    tmp.startCol = seqcanvas.getFeatureRenderer().\r
-         //         findFeatureColour(tmp.startCol, sequence, index);\r
+              if(showFeatures)\r
+              tmp.startCol = fr.findFeatureColour(tmp.startCol, sequence, index);\r
             }\r
         }\r
 \r
@@ -503,18 +522,23 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
         {\r
           tmp.endCol = seqcanvas.getSequenceRenderer().\r
               getResidueBoxColour( sequence, index);\r
-        //  tmp.endCol = seqcanvas.getFeatureRenderer().\r
-        //      findFeatureColour(tmp.endCol, sequence, index);\r
+\r
+          if(showFeatures)\r
+          tmp.endCol = fr.findFeatureColour(tmp.endCol, sequence, index);\r
         }\r
       }\r
     }\r
 \r
 \r
+    Zsort zsort;\r
     public void drawScene(Graphics g)\r
     {\r
+        if (zbuffer)\r
+        {\r
+          if(zsort ==null)\r
+            zsort = new Zsort();\r
 \r
-        if (zbuffer) {\r
-            Zsort.Zsort(visiblebonds);\r
+          zsort.Zsort(visiblebonds);\r
         }\r
 \r
 \r
@@ -710,35 +734,24 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
 \r
     void highlightSeqcanvas(int pos)\r
     {\r
-      int index = seqcanvas.getViewport().getAlignment().findIndex(sequence);\r
-\r
-      int size = pos==-1?0:3;\r
-\r
-      if(highlightRes!=null)\r
-        size += highlightRes.size()*3;\r
-\r
-      int [] array = new int[size];\r
-      int i=0;\r
+      SearchResults searchResults = new SearchResults();\r
       if(highlightRes!=null)\r
       {\r
-        for (i = 0; i < highlightRes.size(); i++)\r
+        for (int i = 0; i < highlightRes.size(); i++)\r
         {\r
           int a = Integer.parseInt(highlightRes.elementAt(\r
               i).toString())+1;\r
-          array[i * 3] = index;\r
-          array[ (i * 3) + 1] = a;\r
-          array[ (i * 3) + 2] = a;\r
+\r
+          searchResults.addResult(sequence, a, a);\r
         }\r
       }\r
 \r
       if(pos!=-1)\r
       {\r
-        array[i * 3] = index;\r
-        array[i * 3 + 1] = pos+1;\r
-        array[i * 3 + 2] = pos+1;\r
+        searchResults.addResult(sequence, pos+1, pos+1);\r
       }\r
 \r
-      seqcanvas.highlightSearchResults(array);\r
+      seqcanvas.highlightSearchResults(searchResults);\r
     }\r
 \r
 \r