No more myAtom, Highlight from alignment
authoramwaterhouse <Andrew Waterhouse>
Wed, 16 Nov 2005 16:41:08 +0000 (16:41 +0000)
committeramwaterhouse <Andrew Waterhouse>
Wed, 16 Nov 2005 16:41:08 +0000 (16:41 +0000)
src/MCview/AppletPDBCanvas.java
src/MCview/AppletPDBViewer.java
src/MCview/PDBCanvas.java
src/MCview/PDBChain.java
src/MCview/PDBViewer.java
src/MCview/PDBfile.java
src/MCview/Residue.java

index 1ee0828..1df39fa 100755 (executable)
@@ -34,17 +34,6 @@ import java.util.*;
 \r
 public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotionListener\r
 {\r
-  public AppletPDBCanvas()\r
-  {\r
-    try\r
-    {\r
-      jbInit();\r
-    }\r
-    catch (Exception ex)\r
-    {\r
-      ex.printStackTrace();\r
-    }\r
-  }\r
 \r
   MCMatrix idmat = new MCMatrix(3, 3);\r
     MCMatrix objmat = new MCMatrix(3, 3);\r
@@ -80,10 +69,11 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
     jalview.appletgui.SequenceRenderer sr;\r
     jalview.appletgui.FeatureRenderer  fr;\r
     jalview.appletgui.SeqCanvas seqcanvas;\r
-    Sequence sequence;\r
+    public Sequence sequence;\r
     final StringBuffer mappingDetails = new StringBuffer();\r
     String appletToolTip = null;\r
     int toolx, tooly;\r
+    PDBChain mainchain;\r
 \r
     public AppletPDBCanvas(jalview.appletgui.SeqCanvas seqcanvas, Sequence seq)\r
     {\r
@@ -92,7 +82,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
       sr = seqcanvas.getSequenceRenderer();\r
       fr = seqcanvas.getFeatureRenderer();\r
 \r
-      seqcanvas.setPDBViewer(this);\r
+      seqcanvas.setPDBCanvas(this);\r
       addKeyListener(new KeyAdapter()\r
       {\r
 \r
@@ -101,9 +91,34 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
           doKeyPressed(evt);\r
         }\r
       });\r
-\r
     }\r
 \r
+    Bond highlightBond1, highlightBond2;\r
+    public void highlightRes(int ii)\r
+   {\r
+     highlightBond1 = null;\r
+     highlightBond2 = null;\r
+\r
+     int index = ii - mainchain.seqstart - mainchain.offset+1;\r
+     if(index <0 )\r
+       return;\r
+\r
+     if(index<=mainchain.bonds.size())\r
+     {\r
+       if(index>0)\r
+       {\r
+         highlightBond1 = (Bond) mainchain.bonds.elementAt(index - 1);\r
+       }\r
+\r
+       if(index!=mainchain.bonds.size())\r
+         highlightBond2 = (Bond) mainchain.bonds.elementAt(index);\r
+     }\r
+\r
+     redrawneeded = true;\r
+     repaint();\r
+  }\r
+\r
+\r
   public void setPDBFile(PDBfile pdb)\r
    {\r
         this.sr = sr;\r
@@ -155,12 +170,14 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
             mappingDetails.append("\nSEQ start/end "+ seqstart + " " + seqend);\r
         }\r
 \r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).pdbstart = pdbstart;\r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).pdbend = pdbend;\r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).seqstart = seqstart;\r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).seqend = seqend;\r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).isVisible = true;\r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).sequence = sequence;\r
+        mainchain = (PDBChain) pdb.chains.elementAt(maxchain);\r
+\r
+        mainchain.pdbstart = pdbstart;\r
+        mainchain.pdbend = pdbend;\r
+        mainchain.seqstart = seqstart;\r
+        mainchain.seqend = seqend;\r
+        mainchain.isVisible = true;\r
+        mainchain.sequence = sequence;\r
 \r
         this.pdb = pdb;\r
         this.prefsize = new Dimension(getSize().width, getSize().height);\r
@@ -373,14 +390,20 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
         //this saves much memory usage\r
         if ((img == null) || (prefsize.width != getSize().width) ||\r
                 (prefsize.height != getSize().height)) {\r
-            prefsize.width = getSize().width;\r
-            prefsize.height = getSize().height;\r
 \r
-            scale = findScale();\r
-            img = createImage(prefsize.width, prefsize.height);\r
-            ig = img.getGraphics();\r
+         try{     prefsize.width = getSize().width;\r
+           prefsize.height = getSize().height;\r
 \r
-            redrawneeded = true;\r
+           scale = findScale();\r
+           img = createImage(prefsize.width, prefsize.height);\r
+           ig = img.getGraphics();\r
+\r
+           redrawneeded = true;\r
+         }catch(Exception ex)\r
+         {\r
+           ex.printStackTrace();\r
+           System.out.println(getSize());\r
+         }\r
         }\r
 \r
 \r
@@ -430,16 +453,21 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
       for (int i = 0; i < chain.bonds.size(); i++)\r
       {\r
         Bond tmp = (Bond) chain.bonds.elementAt(i);\r
-\r
         if ( (tmp.at1.resNumber >= ( (chain.offset + chain.pdbstart) - 1)) &&\r
             (tmp.at1.resNumber <= ( (chain.offset + chain.pdbend) - 1)))\r
         {\r
+\r
           int pos = chain.seqstart +\r
               (tmp.at1.resNumber - chain.pdbstart - chain.offset);\r
 \r
           int index = sequence.findIndex(pos);\r
 \r
-          tmp.startCol = sr.findSequenceColour(sequence, index);\r
+          if(jalview.util.Comparison.isGap((sequence.getCharAt(index))))\r
+           {\r
+             index--;\r
+           }\r
+\r
+           tmp.startCol = sr.findSequenceColour(sequence, index);\r
 \r
         //  tmp.startCol = fr.findFeatureColour(tmp.startCol, sequence, index);\r
 \r
@@ -455,8 +483,13 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
           int pos = chain.seqstart +\r
               (tmp.at2.resNumber - chain.pdbstart - chain.offset);\r
           int index = sequence.findIndex(pos);\r
+          if (jalview.util.Comparison.isGap( (sequence.getCharAt(index))))\r
+          {\r
+            index--;\r
+          }\r
+\r
 \r
-          tmp.endCol = sr.findSequenceColour( sequence, index);\r
+            tmp.endCol = sr.findSequenceColour(sequence, index);\r
       //    tmp.endCol = fr.findFeatureColour(tmp.endCol, sequence, index);\r
         }\r
         else\r
@@ -479,7 +512,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
 \r
             for (int i = 0; i < tmp.size(); i++)\r
             {\r
-              bonds.addElement(tmp.elementAt(i));\r
+                bonds.addElement(tmp.elementAt(i));\r
             }\r
           }\r
         }\r
@@ -491,6 +524,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
         for (int i = 0; i < bonds.size(); i++) {\r
             Bond tmpBond = (Bond) bonds.elementAt(i);\r
 \r
+\r
             xstart = (int) (((tmpBond.start[0] - centre[0]) * scale) +\r
                 (getSize().width / 2));\r
             ystart = (int) (((tmpBond.start[1] - centre[1]) * scale) +\r
@@ -504,7 +538,8 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
             xmid = (xend + xstart) / 2;\r
             ymid = (yend + ystart) / 2;\r
 \r
-            if (depthcue && !bymolecule) {\r
+            if (depthcue && !bymolecule)\r
+            {\r
                 if (tmpBond.start[2] < (centre[2] - (maxwidth / 6))) {\r
                     g.setColor(tmpBond.startCol.darker().darker());\r
                     drawLine(g, xstart, ystart, xmid, ymid);\r
@@ -543,6 +578,19 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
             } else {\r
                 drawLine(g, xstart, ystart, xend, yend);\r
             }\r
+\r
+            if(highlightBond1!=null && highlightBond1==tmpBond)\r
+            {\r
+              g.setColor(Color.white);\r
+              drawLine(g, xmid, ymid, xend, yend);\r
+            }\r
+\r
+            if(highlightBond2!=null && highlightBond2==tmpBond)\r
+            {\r
+              g.setColor(Color.white);\r
+              drawLine(g, xstart, ystart, xmid, ymid);\r
+            }\r
+\r
         }\r
     }\r
 \r
@@ -588,7 +636,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
     }\r
 \r
     public void mousePressed(MouseEvent e) {\r
-        myAtom fatom = findAtom(e.getX(), e.getY());\r
+        Atom fatom = findAtom(e.getX(), e.getY());\r
         if(fatom!=null)\r
         {\r
           fatom.isSelected = !fatom.isSelected;\r
@@ -604,17 +652,23 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
 \r
     public void mouseMoved(MouseEvent e) {\r
 \r
-        myAtom fatom = findAtom(e.getX(), e.getY());\r
+        Atom fatom = findAtom(e.getX(), e.getY());\r
 \r
+        PDBChain chain = null;\r
         if(foundchain!=-1)\r
         {\r
-          PDBChain chain = (PDBChain) pdb.chains.elementAt(foundchain);\r
-          int pos = chain.seqstart +\r
-              (fatom.resNumber - chain.pdbstart - chain.offset)+1;\r
+          chain = (PDBChain) pdb.chains.elementAt(foundchain);\r
+          if(chain == mainchain)\r
+          {\r
+            int pos = chain.seqstart +\r
+                (fatom.resNumber - chain.pdbstart - chain.offset) + 1;\r
 \r
-          int index = seqcanvas.getViewport().getAlignment().findIndex(sequence);\r
+            int index = seqcanvas.getViewport().getAlignment().findIndex(\r
+                sequence);\r
 \r
-          seqcanvas.highlightSearchResults(new int[]{index, pos, pos});\r
+            seqcanvas.highlightSearchResults(new int[]\r
+                                             {index, pos, pos});\r
+          }\r
         }\r
         else\r
           seqcanvas.highlightSearchResults(null);\r
@@ -622,7 +676,8 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
         if (fatom != null) {\r
             toolx = e.getX();\r
             tooly = e.getY();\r
-            appletToolTip = fatom.resNumber+" "+ fatom.resName;\r
+\r
+            appletToolTip = chain.id+":"+ fatom.resNumber+" "+ fatom.resName;\r
             redrawneeded = true;\r
             repaint();\r
         } else {\r
@@ -747,8 +802,8 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
     }\r
 \r
     int foundchain = -1;\r
-    public myAtom findAtom(int x, int y) {\r
-        myAtom fatom = null;\r
+    public Atom findAtom(int x, int y) {\r
+        Atom fatom = null;\r
 \r
         foundchain = -1;\r
 \r
@@ -792,8 +847,15 @@ public class AppletPDBCanvas extends Panel implements MouseListener, MouseMotion
       paint(g);\r
     }\r
 \r
-  private void jbInit()\r
-      throws Exception\r
-  {\r
-  }\r
+    public void setAllchainsVisible(boolean b)\r
+    {\r
+      for (int ii = 0; ii < pdb.chains.size(); ii++)\r
+      {\r
+        PDBChain chain = (PDBChain) pdb.chains.elementAt(ii);\r
+        chain.isVisible = b;\r
+      }\r
+      mainchain.isVisible = true;\r
+      findCentre();\r
+    }\r
+\r
 }\r
index 77bbd8c..1ed4d10 100755 (executable)
@@ -125,21 +125,30 @@ public class AppletPDBViewer extends Frame
             molecule_actionPerformed();\r
           }\r
         });\r
-        jMenuBar1.add(fileMenu);\r
+    allchains.setLabel("All Chains Visible");\r
+    allchains.addItemListener(new ItemListener()\r
+    {\r
+      public void itemStateChanged(ItemEvent itemEvent)\r
+      {\r
+        allchains_itemStateChanged(itemEvent);\r
+      }\r
+    });\r
+    jMenuBar1.add(fileMenu);\r
         jMenuBar1.add(coloursMenu);\r
         fileMenu.add(mapping);;\r
 \r
         coloursMenu.add(seqButton);\r
         coloursMenu.add(chain);\r
-        coloursMenu.add(hydro);\r
-        coloursMenu.add(charge);\r
-        coloursMenu.addSeparator();\r
+    coloursMenu.add(hydro);\r
+    coloursMenu.add(charge);\r
+    coloursMenu.add(molecule);\r
+    coloursMenu.addSeparator();\r
         coloursMenu.add(wire);\r
         coloursMenu.add(depth);\r
         coloursMenu.add(zbuffer);\r
-        coloursMenu.add(molecule);\r
-\r
-      }\r
+    coloursMenu.add(allchains);\r
+    allchains.setState(true);\r
+  }\r
 \r
       MenuBar jMenuBar1 = new MenuBar();\r
       Menu fileMenu = new Menu();\r
@@ -156,8 +165,9 @@ public class AppletPDBViewer extends Frame
       MenuItem seqButton = new MenuItem();\r
 \r
       CheckboxMenuItem molecule = new CheckboxMenuItem();\r
+     CheckboxMenuItem allchains = new CheckboxMenuItem();\r
 \r
-       public void charge_actionPerformed()\r
+  public void charge_actionPerformed()\r
       {\r
         clearButtonGroup();\r
         pdbcanvas.pdb.setChargeColours();\r
@@ -231,4 +241,9 @@ public class AppletPDBViewer extends Frame
         jalview.bin.JalviewLite.addFrame(frame, "PDB - Sequence Mapping", 500, 600);\r
         cap.setText(pdbcanvas.mappingDetails.toString());\r
       }\r
-    }\r
+\r
+      public void allchains_itemStateChanged(ItemEvent itemEvent)\r
+      {\r
+        pdbcanvas.setAllchainsVisible(allchains.getState());\r
+      }\r
+}\r
index b1d8805..f0806a8 100755 (executable)
@@ -69,8 +69,9 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
     jalview.gui.SequenceRenderer sr;\r
     jalview.gui.FeatureRenderer  fr;\r
     jalview.gui.SeqCanvas seqcanvas;\r
-    Sequence sequence;\r
+    public Sequence sequence;\r
     final StringBuffer mappingDetails = new StringBuffer();\r
+    PDBChain mainchain;\r
 \r
     public PDBCanvas(jalview.gui.SeqCanvas seqcanvas, Sequence seq)\r
     {\r
@@ -79,7 +80,7 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
       sr = seqcanvas.getSequenceRenderer();\r
       fr = seqcanvas.getFeatureRenderer();\r
 \r
-      seqcanvas.setPDBViewer(this);\r
+      seqcanvas.setPDBCanvas(this);\r
     }\r
 \r
   public void setPDBFile(PDBfile pdb)\r
@@ -133,12 +134,14 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
             mappingDetails.append("\nSEQ start/end "+ seqstart + " " + seqend);\r
         }\r
 \r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).pdbstart = pdbstart;\r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).pdbend = pdbend;\r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).seqstart = seqstart;\r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).seqend = seqend;\r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).isVisible = true;\r
-        ((PDBChain) pdb.chains.elementAt(maxchain)).sequence = sequence;\r
+        mainchain = (PDBChain) pdb.chains.elementAt(maxchain);\r
+\r
+        mainchain.pdbstart = pdbstart;\r
+        mainchain.pdbend = pdbend;\r
+        mainchain.seqstart = seqstart;\r
+        mainchain.seqend = seqend;\r
+        mainchain.isVisible = true;\r
+        mainchain.sequence = sequence;\r
 \r
         this.pdb = pdb;\r
         this.prefsize = new Dimension(getWidth(), getHeight());\r
@@ -495,8 +498,9 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
             Zsort.Zsort(bonds);\r
         }\r
 \r
+        Bond tmpBond=null;\r
         for (int i = 0; i < bonds.size(); i++) {\r
-            Bond tmpBond = (Bond) bonds.elementAt(i);\r
+            tmpBond = (Bond) bonds.elementAt(i);\r
 \r
             xstart = (int) (((tmpBond.start[0] - centre[0]) * scale) +\r
                 (getWidth() / 2));\r
@@ -550,7 +554,22 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
             } else {\r
                 drawLine(g, xstart, ystart, xend, yend);\r
             }\r
+\r
+            if(highlightBond1!=null && highlightBond1==tmpBond)\r
+            {\r
+              g.setColor(tmpBond.endCol.brighter().brighter().brighter());\r
+              drawLine(g, xmid, ymid, xend, yend);\r
+            }\r
+\r
+            if(highlightBond2!=null && highlightBond2==tmpBond)\r
+            {\r
+              g.setColor(tmpBond.startCol.brighter().brighter().brighter());\r
+              drawLine(g, xstart, ystart, xmid, ymid);\r
+            }\r
+\r
         }\r
+\r
+\r
     }\r
 \r
     public void drawLine(Graphics g, int x1, int y1, int x2, int y2) {\r
@@ -595,7 +614,7 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
     }\r
 \r
     public void mousePressed(MouseEvent e) {\r
-        myAtom fatom = findAtom(e.getX(), e.getY());\r
+        Atom fatom = findAtom(e.getX(), e.getY());\r
         if(fatom!=null)\r
         {\r
           fatom.isSelected = !fatom.isSelected;\r
@@ -611,24 +630,32 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
 \r
     public void mouseMoved(MouseEvent e) {\r
 \r
-        myAtom fatom = findAtom(e.getX(), e.getY());\r
+        Atom fatom = findAtom(e.getX(), e.getY());\r
 \r
+        PDBChain chain = null;\r
         if(foundchain!=-1)\r
         {\r
-          PDBChain chain = (PDBChain) pdb.chains.elementAt(foundchain);\r
-          int pos = chain.seqstart +\r
-              (fatom.resNumber - chain.pdbstart - chain.offset)+1;\r
+          chain = (PDBChain) pdb.chains.elementAt(foundchain);\r
+          if(chain == mainchain)\r
+          {\r
+            int pos = chain.seqstart +\r
+                (fatom.resNumber - chain.pdbstart - chain.offset) + 1;\r
 \r
-          int index = seqcanvas.getViewport().getAlignment().findIndex(sequence);\r
+            int index = seqcanvas.getViewport().getAlignment().findIndex(\r
+                sequence);\r
 \r
-          seqcanvas.highlightSearchResults(new int[]{index, pos, pos});\r
+            seqcanvas.highlightSearchResults(new int[]\r
+                                             {index, pos, pos});\r
+          }\r
         }\r
         else\r
           seqcanvas.highlightSearchResults(null);\r
 \r
-        if (fatom != null) {\r
-            this.setToolTipText(fatom.resNumber+" "+ fatom.resName);\r
-        } else {\r
+        if (fatom != null)\r
+        {\r
+            this.setToolTipText(chain.id+":"+ fatom.resNumber+" "+ fatom.resName);\r
+        } else\r
+        {\r
             this.setToolTipText("");\r
         }\r
     }\r
@@ -748,24 +775,30 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
     }\r
 \r
     int foundchain = -1;\r
-    public myAtom findAtom(int x, int y) {\r
-        myAtom fatom = null;\r
+    public Atom findAtom(int x, int y) {\r
+        Atom fatom = null;\r
 \r
         foundchain = -1;\r
 \r
-        for (int ii = 0; ii < pdb.chains.size(); ii++) {\r
+        for (int ii = 0; ii < pdb.chains.size(); ii++)\r
+        {\r
             PDBChain chain = (PDBChain) pdb.chains.elementAt(ii);\r
+            int truex;\r
+            Bond tmpBond=null;\r
 \r
-            if (chain.isVisible) {\r
+            if (chain.isVisible)\r
+            {\r
                 Vector bonds = ((PDBChain) pdb.chains.elementAt(ii)).bonds;\r
 \r
-                for (int i = 0; i < bonds.size(); i++) {\r
-                    Bond tmpBond = (Bond) bonds.elementAt(i);\r
+                for (int i = 0; i < bonds.size(); i++)\r
+                {\r
+                    tmpBond = (Bond) bonds.elementAt(i);\r
 \r
-                    int truex = (int) (((tmpBond.start[0] - centre[0]) * scale) +\r
+                    truex = (int) (((tmpBond.start[0] - centre[0]) * scale) +\r
                         (getWidth() / 2));\r
 \r
-                    if (Math.abs(truex - x) <= 2) {\r
+                    if (Math.abs(truex - x) <= 2)\r
+                    {\r
                         int truey = (int) (((tmpBond.start[1] - centre[1]) * scale) +\r
                             (getHeight() / 2));\r
 \r
@@ -777,6 +810,25 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
                         }\r
                     }\r
                 }\r
+\r
+                // Still here? Maybe its the last bond\r
+\r
+                truex = (int) ( ( (tmpBond.end[0] - centre[0]) * scale) +\r
+                               (getWidth() / 2));\r
+\r
+                if (Math.abs(truex - x) <= 2)\r
+                {\r
+                  int truey = (int) ( ( (tmpBond.end[1] - centre[1]) * scale) +\r
+                                     (getHeight() / 2));\r
+\r
+                  if (Math.abs(truey - y) <= 2)\r
+                  {\r
+                    fatom = tmpBond.at2;\r
+                    foundchain = ii;\r
+                    break;\r
+                  }\r
+                }\r
+\r
             }\r
 \r
             if (fatom != null) //)&& chain.ds != null)\r
@@ -787,4 +839,40 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
 \r
         return fatom;\r
     }\r
+\r
+   Bond highlightBond1, highlightBond2;\r
+   public void highlightRes(int ii)\r
+  {\r
+    highlightBond1 = null;\r
+    highlightBond2 = null;\r
+\r
+    int index = ii - mainchain.seqstart - mainchain.offset+1;\r
+    if(index <0 )\r
+      return;\r
+\r
+    if(index<=mainchain.bonds.size())\r
+    {\r
+      if(index>0)\r
+      {\r
+        highlightBond1 = (Bond) mainchain.bonds.elementAt(index - 1);\r
+      }\r
+\r
+      if(index!=mainchain.bonds.size())\r
+        highlightBond2 = (Bond) mainchain.bonds.elementAt(index);\r
+    }\r
+\r
+    redrawneeded = true;\r
+    repaint();\r
+  }\r
+\r
+    public void setAllchainsVisible(boolean b)\r
+    {\r
+      for (int ii = 0; ii < pdb.chains.size(); ii++)\r
+      {\r
+        PDBChain chain = (PDBChain) pdb.chains.elementAt(ii);\r
+        chain.isVisible = b;\r
+      }\r
+      mainchain.isVisible = true;\r
+      findCentre();\r
+    }\r
 }\r
index 208ecd0..9c1d0e0 100755 (executable)
@@ -34,7 +34,7 @@ public class PDBChain {
     public Vector residues = new Vector();\r
     public int offset;\r
     public Sequence sequence;\r
-    public boolean isVisible = false;\r
+    public boolean isVisible = true;\r
     public int pdbstart = 0;\r
     public int pdbend = 0;\r
     public int seqstart = 0;\r
@@ -61,8 +61,8 @@ public class PDBChain {
         for (int i = 0; i < (residues.size() - 1); i++) {\r
             Residue tmpres = (Residue) residues.elementAt(i);\r
             Residue tmpres2 = (Residue) residues.elementAt(i + 1);\r
-            myAtom at1 = tmpres.findAtom("CA");\r
-            myAtom at2 = tmpres2.findAtom("CA");\r
+            Atom at1 = tmpres.findAtom("CA");\r
+            Atom at2 = tmpres2.findAtom("CA");\r
 \r
             if ((at1 != null) && (at2 != null)) {\r
                 if (at1.chain.equals(at2.chain)) {\r
@@ -72,7 +72,7 @@ public class PDBChain {
         }\r
     }\r
 \r
-    public void makeBond(myAtom at1, myAtom at2) {\r
+    public void makeBond(Atom at1, Atom at2) {\r
         float[] start = new float[3];\r
         float[] end = new float[3];\r
 \r
@@ -92,7 +92,7 @@ public class PDBChain {
         String seq = "";\r
 \r
         for (int i = 0; i < atoms.size(); i++) {\r
-            myAtom tmp = (myAtom) atoms.elementAt(i);\r
+            Atom tmp = (Atom) atoms.elementAt(i);\r
             //String resName = tmp.resName;\r
             int resNumber = tmp.resNumber;\r
             int res = resNumber;\r
@@ -103,18 +103,18 @@ public class PDBChain {
 \r
             Vector resAtoms = new Vector();\r
 \r
-            resAtoms.addElement((myAtom) atoms.elementAt(i));\r
+            resAtoms.addElement((Atom) atoms.elementAt(i));\r
             i++;\r
-            resNumber = ((myAtom) atoms.elementAt(i)).resNumber;\r
+            resNumber = ((Atom) atoms.elementAt(i)).resNumber;\r
 \r
             //Add atoms to a vector while the residue number\r
             //remains the same\r
             while ((resNumber == res) && (i < atoms.size())) {\r
-                resAtoms.addElement((myAtom) atoms.elementAt(i));\r
+                resAtoms.addElement((Atom) atoms.elementAt(i));\r
                 i++;\r
 \r
                 if (i < atoms.size()) {\r
-                    resNumber = ((myAtom) atoms.elementAt(i)).resNumber;\r
+                    resNumber = ((Atom) atoms.elementAt(i)).resNumber;\r
                 } else {\r
                     resNumber++;\r
                 }\r
@@ -128,7 +128,7 @@ public class PDBChain {
             count++;\r
 \r
             Residue tmpres = (Residue) residues.lastElement();\r
-            myAtom tmpat = (myAtom) tmpres.atoms.elementAt(0);\r
+            Atom tmpat = (Atom) tmpres.atoms.elementAt(0);\r
 \r
             // Keep totting up the sequence\r
             if (ResidueProperties.getAA3Hash().get(tmpat.resName) == null) {\r
@@ -231,17 +231,13 @@ public class PDBChain {
 \r
 \r
 \r
-    public void setChainColours() {\r
-        for (int i = 0; i < bonds.size(); i++) {\r
+    public void setChainColours(Color col)\r
+    {\r
+        for (int i = 0; i < bonds.size(); i++)\r
+        {\r
             Bond tmp = (Bond) bonds.elementAt(i);\r
-\r
-            try {\r
-                tmp.startCol = (Color) ResidueProperties.getChainColours().get(id);\r
-                tmp.endCol = (Color) ResidueProperties.getChainColours().get(id);\r
-            } catch (Exception e) {\r
-                tmp.startCol = Color.lightGray;\r
-                tmp.endCol = Color.lightGray;\r
-            }\r
+            tmp.startCol = col;\r
+            tmp.endCol = col;\r
         }\r
     }\r
 }\r
index 95d4b35..06b6f65 100755 (executable)
@@ -174,6 +174,15 @@ public class PDBViewer extends JInternalFrame implements Runnable
         molecule_actionPerformed(e);\r
       }\r
     });\r
+    allchains.setSelected(true);\r
+    allchains.setText("Show All Chains");\r
+    allchains.addItemListener(new ItemListener()\r
+    {\r
+      public void itemStateChanged(ItemEvent e)\r
+      {\r
+        allchains_itemStateChanged(e);\r
+      }\r
+    });\r
     jMenuBar1.add(fileMenu);\r
     jMenuBar1.add(coloursMenu);\r
     fileMenu.add(saveMenu);\r
@@ -189,6 +198,7 @@ public class PDBViewer extends JInternalFrame implements Runnable
     coloursMenu.add(depth);\r
     coloursMenu.add(zbuffer);\r
     coloursMenu.add(molecule);\r
+    coloursMenu.add(allchains);\r
     ButtonGroup bg = new ButtonGroup();\r
     bg.add(seqButton);\r
     bg.add(chain);\r
@@ -211,6 +221,7 @@ public class PDBViewer extends JInternalFrame implements Runnable
   JRadioButtonMenuItem chain = new JRadioButtonMenuItem();\r
   JRadioButtonMenuItem seqButton = new JRadioButtonMenuItem();\r
   JCheckBoxMenuItem molecule = new JCheckBoxMenuItem();\r
+  JCheckBoxMenuItem allchains = new JCheckBoxMenuItem();\r
 \r
   /**\r
    * DOCUMENT ME!\r
@@ -329,4 +340,9 @@ public class PDBViewer extends JInternalFrame implements Runnable
     Desktop.addInternalFrame(cap, "PDB - Sequence Mapping", 500, 600);\r
     cap.setText(pdbcanvas.mappingDetails.toString());\r
   }\r
+\r
+  public void allchains_itemStateChanged(ItemEvent e)\r
+  {\r
+    pdbcanvas.setAllchainsVisible(allchains.getState());\r
+  }\r
 }\r
index f9d842f..d1e4d65 100755 (executable)
@@ -23,6 +23,7 @@ import java.io.*;
 import java.net.*;\r
 \r
 import java.util.*;\r
+import java.awt.Color;\r
 \r
 \r
 public class PDBfile extends jalview.io.FileParse {\r
@@ -77,7 +78,7 @@ public class PDBfile extends jalview.io.FileParse {
 \r
                 if (inStr.indexOf("ATOM") != -1) {\r
                     try {\r
-                        myAtom tmpatom = new myAtom(str);\r
+                        Atom tmpatom = new Atom(str);\r
 \r
                         if (findChain(tmpatom.chain) != null) {\r
                             //   System.out.println("Adding to chain " + tmpatom.chain);\r
@@ -114,7 +115,6 @@ public class PDBfile extends jalview.io.FileParse {
 \r
     public PDBChain findChain(String id) {\r
         for (int i = 0; i < chains.size(); i++) {\r
-            // System.out.println("ID = " + id + " " +((PDBChain)chains.elementAt(i)).id);\r
             if (((PDBChain) chains.elementAt(i)).id.equals(id)) {\r
                 return (PDBChain) chains.elementAt(i);\r
             }\r
@@ -135,17 +135,13 @@ public class PDBfile extends jalview.io.FileParse {
         }\r
     }\r
 \r
-    public void colourBySequence()//jalview.gui.SequenceRenderer sr,\r
-                                // jalview.gui.FeatureRenderer fr)\r
-                                {\r
-            for (int i = 0; i < chains.size(); i++) {\r
-              //((PDBChain)chains.elementAt(i)).colourBySequence(sr,fr);\r
-            }\r
-    }\r
-\r
-    public void setChainColours() {\r
-        for (int i = 0; i < chains.size(); i++) {\r
-            ((PDBChain) chains.elementAt(i)).setChainColours();\r
+    public void setChainColours()\r
+    {\r
+       for (int i = 0; i < chains.size(); i++)\r
+       {\r
+            ((PDBChain) chains.elementAt(i)).setChainColours(\r
+                     Color.getHSBColor(1.0f / (float)i, .4f, 1.0f)\r
+                );\r
         }\r
     }\r
 }\r
index b01d982..efaf1f0 100755 (executable)
@@ -33,10 +33,10 @@ public class Residue {
         this.count = count;\r
     }\r
 \r
-    public myAtom findAtom(String name) {\r
+    public Atom findAtom(String name) {\r
         for (int i = 0; i < atoms.size(); i++) {\r
-            if (((myAtom) atoms.elementAt(i)).name.equals(name)) {\r
-                return (myAtom) atoms.elementAt(i);\r
+            if (((Atom) atoms.elementAt(i)).name.equals(name)) {\r
+                return (Atom) atoms.elementAt(i);\r
             }\r
         }\r
 \r