Applet Structure viewer has all colours available
[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\r
32 {\r
33       PDBEntry pdb;\r
34       Sequence sequence;\r
35       AppletPDBCanvas pdbcanvas;\r
36 \r
37 \r
38       public AppletPDBViewer(String pdbtext,String type,\r
39                        Sequence seq,\r
40                        SeqCanvas seqcanvas)\r
41       {\r
42         sequence = seq;\r
43 \r
44         try\r
45         {\r
46           jbInit();\r
47         }\r
48         catch (Exception ex)\r
49         {\r
50           ex.printStackTrace();\r
51         }\r
52 \r
53         pdbcanvas = new AppletPDBCanvas(seqcanvas, seq);\r
54 \r
55         add(pdbcanvas, BorderLayout.CENTER);\r
56 \r
57         StringBuffer title = new StringBuffer(sequence.getName() + ":");\r
58 \r
59         jalview.bin.JalviewLite.addFrame(this,title.toString(),400, 400);\r
60 \r
61         try{\r
62         PDBfile pdbfile = new PDBfile(pdbtext, type);\r
63         pdbcanvas.setPDBFile(pdbfile);\r
64         }\r
65         catch(Exception ex){\r
66           pdbcanvas.errorLoading = true;\r
67           pdbcanvas.repaint();\r
68         }\r
69       }\r
70 \r
71 \r
72       private void jbInit()\r
73           throws Exception\r
74       {\r
75         this.setMenuBar(jMenuBar1);\r
76         fileMenu.setLabel("File");\r
77         coloursMenu.setLabel("Colours");\r
78         mapping.setLabel("View Mapping");\r
79         mapping.addActionListener(new ActionListener()\r
80         {\r
81           public void actionPerformed(ActionEvent e)\r
82           {\r
83             mapping_actionPerformed();\r
84           }\r
85         });\r
86         wire.setLabel("Wireframe");\r
87         wire.addItemListener(new ItemListener()\r
88         {\r
89           public void itemStateChanged(ItemEvent e)\r
90           {\r
91             wire_actionPerformed();\r
92           }\r
93         });\r
94         depth.setState(true);\r
95         depth.setLabel("Depthcue");\r
96         depth.addItemListener(new ItemListener()\r
97         {\r
98           public void itemStateChanged(ItemEvent e)\r
99           {\r
100             depth_actionPerformed();\r
101           }\r
102         });\r
103         zbuffer.setState(true);\r
104         zbuffer.setLabel("Z Buffering");\r
105         zbuffer.addItemListener(new ItemListener()\r
106         {\r
107           public void itemStateChanged(ItemEvent e)\r
108           {\r
109             zbuffer_actionPerformed();\r
110           }\r
111         });\r
112         charge.setLabel("Charge & Cysteine");\r
113         charge.addActionListener(new ActionListener()\r
114         {\r
115           public void actionPerformed(ActionEvent e)\r
116           {\r
117             charge_actionPerformed();\r
118           }\r
119         });\r
120         hydro.setLabel("Hydrophobicity");\r
121         hydro.addActionListener(new ActionListener()\r
122         {\r
123           public void actionPerformed(ActionEvent e)\r
124           {\r
125             pdbcanvas.setColours(new HydrophobicColourScheme());\r
126           }\r
127         });\r
128         chain.setLabel("By Chain");\r
129         chain.addActionListener(new ActionListener()\r
130         {\r
131           public void actionPerformed(ActionEvent e)\r
132           {\r
133             chain_actionPerformed();\r
134           }\r
135         });\r
136         seqButton.setLabel("By Sequence");\r
137         seqButton.addActionListener(new ActionListener()\r
138         {\r
139           public void actionPerformed(ActionEvent e){\r
140             seqButton_actionPerformed();\r
141           }\r
142         });\r
143     allchains.setLabel("All Chains Visible");\r
144     allchains.addItemListener(new ItemListener()\r
145     {\r
146       public void itemStateChanged(ItemEvent itemEvent)\r
147       {\r
148         allchains_itemStateChanged(itemEvent);\r
149       }\r
150     });\r
151     viewMenu.setLabel("View");\r
152     zappo.setLabel("Zappo");\r
153     zappo.addActionListener(new ActionListener()\r
154     {\r
155       public void actionPerformed(ActionEvent actionEvent)\r
156       {\r
157         pdbcanvas.setColours(new ZappoColourScheme());\r
158       }\r
159     });\r
160     taylor.setLabel("Taylor");\r
161     taylor.addActionListener(new ActionListener()\r
162     {\r
163       public void actionPerformed(ActionEvent actionEvent)\r
164       {\r
165         pdbcanvas.setColours(new TaylorColourScheme());\r
166       }\r
167     });\r
168     helix.setLabel("Helix Propensity");\r
169     helix.addActionListener(new ActionListener()\r
170     {\r
171       public void actionPerformed(ActionEvent actionEvent)\r
172       {\r
173        pdbcanvas.setColours(new HelixColourScheme());\r
174       }\r
175     });\r
176     strand.setLabel("Strand Propensity");\r
177     strand.addActionListener(new ActionListener()\r
178     {\r
179       public void actionPerformed(ActionEvent actionEvent)\r
180       {\r
181         pdbcanvas.setColours(new StrandColourScheme());\r
182       }\r
183     });\r
184     turn.setLabel("Turn Propensity");\r
185     turn.addActionListener(new ActionListener()\r
186     {\r
187       public void actionPerformed(ActionEvent actionEvent)\r
188       {\r
189         pdbcanvas.setColours(new TurnColourScheme());\r
190       }\r
191     });\r
192     buried.setLabel("Buried Index");\r
193     buried.addActionListener(new ActionListener()\r
194     {\r
195       public void actionPerformed(ActionEvent actionEvent)\r
196       {\r
197         pdbcanvas.setColours(new BuriedColourScheme());\r
198       }\r
199     });\r
200     user.setLabel("User Defined...");\r
201     user.addActionListener(new ActionListener()\r
202     {\r
203       public void actionPerformed(ActionEvent actionEvent)\r
204       {\r
205         pdbcanvas.bysequence = false;\r
206         new jalview.appletgui.UserDefinedColours(pdbcanvas);\r
207       }\r
208     });\r
209     jMenuBar1.add(fileMenu);\r
210         jMenuBar1.add(coloursMenu);\r
211     jMenuBar1.add(viewMenu);\r
212     fileMenu.add(mapping);;\r
213 \r
214         coloursMenu.add(seqButton);\r
215         coloursMenu.add(chain);\r
216     coloursMenu.add(charge);\r
217     coloursMenu.add(zappo);\r
218     coloursMenu.add(taylor);\r
219     coloursMenu.add(hydro);\r
220     coloursMenu.add(helix);\r
221     coloursMenu.add(strand);\r
222     coloursMenu.add(turn);\r
223     coloursMenu.add(buried);\r
224     coloursMenu.add(user);\r
225     viewMenu.add(wire);\r
226     viewMenu.add(depth);\r
227     viewMenu.add(zbuffer);\r
228     viewMenu.add(allchains);\r
229     allchains.setState(true);\r
230   }\r
231 \r
232       MenuBar jMenuBar1 = new MenuBar();\r
233       Menu fileMenu = new Menu();\r
234       Menu coloursMenu = new Menu();\r
235       MenuItem mapping = new MenuItem();\r
236       CheckboxGroup bg = new CheckboxGroup();\r
237       CheckboxMenuItem wire = new CheckboxMenuItem();\r
238       CheckboxMenuItem depth = new CheckboxMenuItem();\r
239       CheckboxMenuItem zbuffer = new CheckboxMenuItem();\r
240 \r
241       MenuItem charge = new MenuItem();\r
242       MenuItem hydro = new MenuItem();\r
243       MenuItem chain = new MenuItem();\r
244       MenuItem seqButton = new MenuItem();\r
245 \r
246      CheckboxMenuItem allchains = new CheckboxMenuItem();\r
247   Menu viewMenu = new Menu();\r
248   MenuItem turn = new MenuItem();\r
249   MenuItem strand = new MenuItem();\r
250   MenuItem helix = new MenuItem();\r
251   MenuItem taylor = new MenuItem();\r
252   MenuItem zappo = new MenuItem();\r
253   MenuItem buried = new MenuItem();\r
254   MenuItem user = new MenuItem();\r
255 \r
256   public void charge_actionPerformed()\r
257       {\r
258         pdbcanvas.bysequence = false;\r
259         pdbcanvas.pdb.setChargeColours();\r
260         pdbcanvas.redrawneeded=true;\r
261         pdbcanvas.repaint();\r
262       }\r
263 \r
264       public void chain_actionPerformed()\r
265       {\r
266          pdbcanvas.bysequence = false;\r
267          pdbcanvas.pdb.setChainColours();\r
268         pdbcanvas.redrawneeded=true;\r
269         pdbcanvas.repaint();\r
270       }\r
271 \r
272       public void zbuffer_actionPerformed()\r
273       {\r
274         pdbcanvas.zbuffer = ! pdbcanvas.zbuffer;\r
275         pdbcanvas.redrawneeded=true;\r
276         pdbcanvas.repaint();\r
277       }\r
278 \r
279       public void depth_actionPerformed()\r
280       {\r
281       pdbcanvas.depthcue = ! pdbcanvas.depthcue;\r
282       pdbcanvas.redrawneeded=true;\r
283         pdbcanvas.repaint();\r
284       }\r
285 \r
286       public void wire_actionPerformed()\r
287       {\r
288         pdbcanvas.wire = ! pdbcanvas.wire;\r
289         pdbcanvas.redrawneeded=true;\r
290         pdbcanvas.repaint();\r
291       }\r
292 \r
293       public void seqButton_actionPerformed()\r
294       {\r
295         pdbcanvas.bysequence = true;\r
296         pdbcanvas.updateSeqColours();\r
297         pdbcanvas.repaint();\r
298       }\r
299 \r
300 \r
301       public void mapping_actionPerformed()\r
302       {\r
303         jalview.appletgui.CutAndPasteTransfer cap\r
304             = new jalview.appletgui.CutAndPasteTransfer(false, null);\r
305         Frame frame = new Frame();\r
306         frame.add(cap);\r
307         jalview.bin.JalviewLite.addFrame(frame, "PDB - Sequence Mapping", 500, 600);\r
308         cap.setText(pdbcanvas.mappingDetails.toString());\r
309       }\r
310 \r
311       public void allchains_itemStateChanged(ItemEvent itemEvent)\r
312       {\r
313         pdbcanvas.setAllchainsVisible(allchains.getState());\r
314       }\r
315 \r
316 }\r