Printstacktrace
[jalview.git] / src / MCview / AppletPDBViewer.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer\r
3  * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4  *\r
5  * This program is free software; you can redistribute it and/or\r
6  * modify it under the terms of the GNU General Public License\r
7  * as published by the Free Software Foundation; either version 2\r
8  * of the License, or (at your option) any later version.\r
9  *\r
10  * This program is distributed in the hope that it will be useful,\r
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13  * GNU General Public License for more details.\r
14  *\r
15  * You should have received a copy of the GNU General Public License\r
16  * along with this program; if not, write to the Free Software\r
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18  */\r
19 package MCview;\r
20 \r
21 import java.awt.*;\r
22 \r
23 import java.awt.event.*;\r
24 import jalview.datamodel.*;\r
25 import jalview.appletgui.*;\r
26 import jalview.schemes.*;\r
27 import java.awt.event.ActionListener;\r
28 import java.awt.event.ActionEvent;\r
29 \r
30 \r
31 public class AppletPDBViewer extends Frame implements ActionListener, ItemListener\r
32 {\r
33       AppletPDBCanvas pdbcanvas;\r
34       public AppletPDBViewer(String pdbtext,String type,\r
35                        Sequence seq,\r
36                        SeqCanvas seqcanvas)\r
37       {\r
38 \r
39         try\r
40         {\r
41           jbInit();\r
42         }\r
43         catch (Exception ex)\r
44         {\r
45           ex.printStackTrace();\r
46         }\r
47 \r
48         pdbcanvas = new AppletPDBCanvas(seqcanvas, seq);\r
49 \r
50         add(pdbcanvas, BorderLayout.CENTER);\r
51 \r
52         StringBuffer title = new StringBuffer(seq.getName() + ":");\r
53 \r
54         jalview.bin.JalviewLite.addFrame(this,title.toString(),400, 400);\r
55 \r
56         try{\r
57         PDBfile pdbfile = new PDBfile(pdbtext, type);\r
58         pdbcanvas.setPDBFile(pdbfile);\r
59         }\r
60         catch(Exception ex){\r
61           ex.printStackTrace();\r
62           pdbcanvas.errorLoading = true;\r
63           pdbcanvas.repaint();\r
64         }\r
65       }\r
66 \r
67       public void actionPerformed(ActionEvent evt)\r
68       {\r
69         if(evt.getSource()==mapping)\r
70                mapping_actionPerformed();\r
71        else if(evt.getSource()==wire)\r
72                wire_actionPerformed();\r
73        else if(evt.getSource()==depth)\r
74                depth_actionPerformed();\r
75        else if(evt.getSource()==zbuffer)\r
76                zbuffer_actionPerformed();\r
77        else if(evt.getSource()==charge)\r
78                charge_actionPerformed();\r
79 \r
80        else if(evt.getSource()==chain)\r
81                chain_actionPerformed();\r
82        else if(evt.getSource()==seqButton)\r
83                seqButton_actionPerformed();\r
84        else if(evt.getSource()==zappo)\r
85                 pdbcanvas.setColours(new ZappoColourScheme());\r
86        else if(evt.getSource()==taylor)\r
87                pdbcanvas.setColours(new TaylorColourScheme());\r
88       else if(evt.getSource()==hydro)\r
89                pdbcanvas.setColours(new HydrophobicColourScheme());\r
90       else if(evt.getSource()==helix)\r
91                pdbcanvas.setColours(new HelixColourScheme());\r
92        else if(evt.getSource()==strand)\r
93                pdbcanvas.setColours(new StrandColourScheme());\r
94        else if(evt.getSource()==turn)\r
95                pdbcanvas.setColours(new TurnColourScheme());\r
96        else if(evt.getSource()==buried)\r
97               pdbcanvas.setColours(new BuriedColourScheme());\r
98        else if(evt.getSource()==user)\r
99        {\r
100          pdbcanvas.bysequence = false;\r
101          new jalview.appletgui.UserDefinedColours(pdbcanvas);\r
102        }\r
103       }\r
104 \r
105       public void itemStateChanged(ItemEvent evt)\r
106       {\r
107         if (evt.getSource() == allchains)\r
108           allchains_itemStateChanged();\r
109         else if (evt.getSource() == wire)\r
110           wire_actionPerformed();\r
111         else if (evt.getSource() == depth)\r
112           depth_actionPerformed();\r
113         else if (evt.getSource() == zbuffer)\r
114           zbuffer_actionPerformed();\r
115       }\r
116 \r
117 \r
118       private void jbInit()\r
119           throws Exception\r
120       {\r
121         setMenuBar(jMenuBar1);\r
122         fileMenu.setLabel("File");\r
123         coloursMenu.setLabel("Colours");\r
124         mapping.setLabel("View Mapping");\r
125         mapping.addActionListener(this);\r
126         wire.setLabel("Wireframe");\r
127         wire.addItemListener(this);\r
128         depth.setState(true);\r
129         depth.setLabel("Depthcue");\r
130         depth.addItemListener(this);\r
131         zbuffer.setState(true);\r
132         zbuffer.setLabel("Z Buffering");\r
133         zbuffer.addItemListener(this);\r
134         charge.setLabel("Charge & Cysteine");\r
135         charge.addActionListener(this);\r
136         hydro.setLabel("Hydrophobicity");\r
137         hydro.addActionListener(this);\r
138         chain.setLabel("By Chain");\r
139         chain.addActionListener(this);\r
140         seqButton.setLabel("By Sequence");\r
141         seqButton.addActionListener(this);\r
142     allchains.setLabel("All Chains Visible");\r
143     allchains.addItemListener(this);\r
144     viewMenu.setLabel("View");\r
145     zappo.setLabel("Zappo");\r
146     zappo.addActionListener(this);\r
147     taylor.setLabel("Taylor");\r
148     taylor.addActionListener(this);\r
149     helix.setLabel("Helix Propensity");\r
150     helix.addActionListener(this);\r
151     strand.setLabel("Strand Propensity");\r
152     strand.addActionListener(this);\r
153     turn.setLabel("Turn Propensity");\r
154     turn.addActionListener(this);\r
155     buried.setLabel("Buried Index");\r
156     buried.addActionListener(this);\r
157     user.setLabel("User Defined...");\r
158     user.addActionListener(this);\r
159     jMenuBar1.add(fileMenu);\r
160         jMenuBar1.add(coloursMenu);\r
161     jMenuBar1.add(viewMenu);\r
162     fileMenu.add(mapping);;\r
163 \r
164         coloursMenu.add(seqButton);\r
165         coloursMenu.add(chain);\r
166     coloursMenu.add(charge);\r
167     coloursMenu.add(zappo);\r
168     coloursMenu.add(taylor);\r
169     coloursMenu.add(hydro);\r
170     coloursMenu.add(helix);\r
171     coloursMenu.add(strand);\r
172     coloursMenu.add(turn);\r
173     coloursMenu.add(buried);\r
174     coloursMenu.add(user);\r
175     viewMenu.add(wire);\r
176     viewMenu.add(depth);\r
177     viewMenu.add(zbuffer);\r
178     viewMenu.add(allchains);\r
179     allchains.setState(true);\r
180   }\r
181 \r
182       MenuBar jMenuBar1 = new MenuBar();\r
183       Menu fileMenu = new Menu();\r
184       Menu coloursMenu = new Menu();\r
185       MenuItem mapping = new MenuItem();\r
186       CheckboxGroup bg = new CheckboxGroup();\r
187       CheckboxMenuItem wire = new CheckboxMenuItem();\r
188       CheckboxMenuItem depth = new CheckboxMenuItem();\r
189       CheckboxMenuItem zbuffer = new CheckboxMenuItem();\r
190 \r
191       MenuItem charge = new MenuItem();\r
192       MenuItem hydro = new MenuItem();\r
193       MenuItem chain = new MenuItem();\r
194       MenuItem seqButton = new MenuItem();\r
195 \r
196      CheckboxMenuItem allchains = new CheckboxMenuItem();\r
197   Menu viewMenu = new Menu();\r
198   MenuItem turn = new MenuItem();\r
199   MenuItem strand = new MenuItem();\r
200   MenuItem helix = new MenuItem();\r
201   MenuItem taylor = new MenuItem();\r
202   MenuItem zappo = new MenuItem();\r
203   MenuItem buried = new MenuItem();\r
204   MenuItem user = new MenuItem();\r
205 \r
206   public void charge_actionPerformed()\r
207       {\r
208         pdbcanvas.bysequence = false;\r
209         pdbcanvas.pdb.setChargeColours();\r
210         pdbcanvas.redrawneeded=true;\r
211         pdbcanvas.repaint();\r
212       }\r
213 \r
214       public void chain_actionPerformed()\r
215       {\r
216          pdbcanvas.bysequence = false;\r
217          pdbcanvas.pdb.setChainColours();\r
218         pdbcanvas.redrawneeded=true;\r
219         pdbcanvas.repaint();\r
220       }\r
221 \r
222       public void zbuffer_actionPerformed()\r
223       {\r
224         pdbcanvas.zbuffer = ! pdbcanvas.zbuffer;\r
225         pdbcanvas.redrawneeded=true;\r
226         pdbcanvas.repaint();\r
227       }\r
228 \r
229       public void depth_actionPerformed()\r
230       {\r
231       pdbcanvas.depthcue = ! pdbcanvas.depthcue;\r
232       pdbcanvas.redrawneeded=true;\r
233         pdbcanvas.repaint();\r
234       }\r
235 \r
236       public void wire_actionPerformed()\r
237       {\r
238         pdbcanvas.wire = ! pdbcanvas.wire;\r
239         pdbcanvas.redrawneeded=true;\r
240         pdbcanvas.repaint();\r
241       }\r
242 \r
243       public void seqButton_actionPerformed()\r
244       {\r
245         pdbcanvas.bysequence = true;\r
246         pdbcanvas.updateSeqColours();\r
247         pdbcanvas.repaint();\r
248       }\r
249 \r
250 \r
251       public void mapping_actionPerformed()\r
252       {\r
253         jalview.appletgui.CutAndPasteTransfer cap\r
254             = new jalview.appletgui.CutAndPasteTransfer(false, null);\r
255         Frame frame = new Frame();\r
256         frame.add(cap);\r
257         jalview.bin.JalviewLite.addFrame(frame, "PDB - Sequence Mapping", 500, 600);\r
258         cap.setText(pdbcanvas.mappingDetails.toString());\r
259       }\r
260 \r
261       public void allchains_itemStateChanged()\r
262       {\r
263         pdbcanvas.setAllchainsVisible(allchains.getState());\r
264       }\r
265 \r
266 }\r