Can read from zip file
[jalview.git] / src / MCview / AppletPDBCanvas.java
index d6247f4..dc4cf0b 100755 (executable)
@@ -76,6 +76,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
     boolean pdbAction = false;\r
     Bond highlightBond1, highlightBond2;\r
     boolean errorLoading = false;\r
+    boolean seqColoursReady = false;\r
 \r
     public AppletPDBCanvas(jalview.appletgui.SeqCanvas seqcanvas, Sequence seq)\r
     {\r
@@ -117,7 +118,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
@@ -186,6 +187,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
     Vector visiblebonds;\r
     void setupBonds()\r
     {\r
+      seqColoursReady = false;\r
       // Sort the bonds by z coord\r
       visiblebonds = new Vector();\r
 \r
@@ -202,6 +204,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
         }\r
       }\r
       updateSeqColours();\r
+      seqColoursReady = true;\r
       redrawneeded = true;\r
       repaint();\r
     }\r
@@ -360,7 +363,8 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
         g.drawString("Error loading PDB data!!", 50, getSize().height/2);\r
         return;\r
       }\r
-      else if(visiblebonds==null)\r
+\r
+      if( !seqColoursReady )\r
       {\r
         g.setColor(Color.black);\r
         g.setFont(new Font("Verdana", Font.BOLD, 14));\r
@@ -414,7 +418,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
@@ -488,8 +498,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
+              tmp.startCol = seqcanvas.getFeatureRenderer().\r
+                  findFeatureColour(tmp.startCol, sequence, index);\r
             }\r
         }\r
 \r
@@ -499,8 +509,8 @@ 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
+          tmp.endCol = seqcanvas.getFeatureRenderer().\r
+              findFeatureColour(tmp.endCol, sequence, index);\r
         }\r
       }\r
     }\r
@@ -706,35 +716,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
@@ -925,6 +924,8 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
 \r
     public void highlightRes(int ii)\r
    {\r
+     if(!seqColoursReady)\r
+       return;\r
 \r
      if (highlightRes != null\r
          && highlightRes.contains((ii-1) + ""))\r