All colours added to Structure viewer
[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 java.awt.event.ActionListener;\r
27 import java.awt.event.ActionEvent;\r
28 \r
29 \r
30 public class AppletPDBViewer extends Frame\r
31 {\r
32       PDBEntry pdb;\r
33       Sequence sequence;\r
34       AppletPDBCanvas pdbcanvas;\r
35 \r
36 \r
37       public AppletPDBViewer(String pdbtext,String type,\r
38                        Sequence seq,\r
39                        SeqCanvas seqcanvas)\r
40       {\r
41         sequence = seq;\r
42 \r
43         try\r
44         {\r
45           jbInit();\r
46         }\r
47         catch (Exception ex)\r
48         {\r
49           ex.printStackTrace();\r
50         }\r
51 \r
52         pdbcanvas = new AppletPDBCanvas(seqcanvas, seq);\r
53 \r
54         add(pdbcanvas, BorderLayout.CENTER);\r
55 \r
56         StringBuffer title = new StringBuffer(sequence.getName() + ":");\r
57 \r
58         jalview.bin.JalviewLite.addFrame(this,title.toString(),400, 400);\r
59 \r
60         try{\r
61         PDBfile pdbfile = new PDBfile(pdbtext, type);\r
62         pdbcanvas.setPDBFile(pdbfile);\r
63         }\r
64         catch(Exception ex){\r
65           pdbcanvas.errorLoading = true;\r
66           pdbcanvas.repaint();\r
67         }\r
68       }\r
69 \r
70 \r
71       private void jbInit()\r
72           throws Exception\r
73       {\r
74         this.setMenuBar(jMenuBar1);\r
75         fileMenu.setLabel("File");\r
76         coloursMenu.setLabel("Colours");\r
77         mapping.setLabel("View Mapping");\r
78         mapping.addActionListener(new ActionListener()\r
79         {\r
80           public void actionPerformed(ActionEvent e)\r
81           {\r
82             mapping_actionPerformed();\r
83           }\r
84         });\r
85         wire.setLabel("Wireframe");\r
86         wire.addItemListener(new ItemListener()\r
87         {\r
88           public void itemStateChanged(ItemEvent e)\r
89           {\r
90             wire_actionPerformed();\r
91           }\r
92         });\r
93         depth.setState(true);\r
94         depth.setLabel("Depthcue");\r
95         depth.addItemListener(new ItemListener()\r
96         {\r
97           public void itemStateChanged(ItemEvent e)\r
98           {\r
99             depth_actionPerformed();\r
100           }\r
101         });\r
102         zbuffer.setState(true);\r
103         zbuffer.setLabel("Z Buffering");\r
104         zbuffer.addItemListener(new ItemListener()\r
105         {\r
106           public void itemStateChanged(ItemEvent e)\r
107           {\r
108             zbuffer_actionPerformed();\r
109           }\r
110         });\r
111         charge.setLabel("Charge & Cysteine");\r
112         charge.addActionListener(new ActionListener()\r
113         {\r
114           public void actionPerformed(ActionEvent e)\r
115           {\r
116             charge_actionPerformed();\r
117           }\r
118         });\r
119         hydro.setLabel("Hydrophobicity");\r
120         hydro.addActionListener(new ActionListener()\r
121         {\r
122           public void actionPerformed(ActionEvent e)\r
123           {\r
124             hydro_actionPerformed();\r
125           }\r
126         });\r
127         chain.setLabel("By Chain");\r
128         chain.addActionListener(new ActionListener()\r
129         {\r
130           public void actionPerformed(ActionEvent e)\r
131           {\r
132             chain_actionPerformed();\r
133           }\r
134         });\r
135         seqButton.setLabel("By Sequence");\r
136         seqButton.addActionListener(new ActionListener()\r
137         {\r
138           public void actionPerformed(ActionEvent e){\r
139             seqButton_actionPerformed();\r
140           }\r
141         });\r
142     allchains.setLabel("All Chains Visible");\r
143     allchains.addItemListener(new ItemListener()\r
144     {\r
145       public void itemStateChanged(ItemEvent itemEvent)\r
146       {\r
147         allchains_itemStateChanged(itemEvent);\r
148       }\r
149     });\r
150     jMenuBar1.add(fileMenu);\r
151         jMenuBar1.add(coloursMenu);\r
152         fileMenu.add(mapping);;\r
153 \r
154         coloursMenu.add(seqButton);\r
155         coloursMenu.add(chain);\r
156     coloursMenu.add(hydro);\r
157     coloursMenu.add(charge);\r
158     coloursMenu.addSeparator();\r
159         coloursMenu.add(wire);\r
160         coloursMenu.add(depth);\r
161         coloursMenu.add(zbuffer);\r
162     coloursMenu.add(allchains);\r
163     allchains.setState(true);\r
164   }\r
165 \r
166       MenuBar jMenuBar1 = new MenuBar();\r
167       Menu fileMenu = new Menu();\r
168       Menu coloursMenu = new Menu();\r
169       MenuItem mapping = new MenuItem();\r
170       CheckboxGroup bg = new CheckboxGroup();\r
171       CheckboxMenuItem wire = new CheckboxMenuItem();\r
172       CheckboxMenuItem depth = new CheckboxMenuItem();\r
173       CheckboxMenuItem zbuffer = new CheckboxMenuItem();\r
174 \r
175       MenuItem charge = new MenuItem();\r
176       MenuItem hydro = new MenuItem();\r
177       MenuItem chain = new MenuItem();\r
178       MenuItem seqButton = new MenuItem();\r
179 \r
180      CheckboxMenuItem allchains = new CheckboxMenuItem();\r
181 \r
182   public void charge_actionPerformed()\r
183       {\r
184         clearButtonGroup();\r
185         pdbcanvas.pdb.setChargeColours();\r
186         pdbcanvas.redrawneeded=true;\r
187         pdbcanvas.repaint();\r
188       }\r
189 \r
190       public void hydro_actionPerformed()\r
191       {\r
192         clearButtonGroup();\r
193        // pdbcanvas.pdb.setHydrophobicityColours();\r
194         pdbcanvas.redrawneeded=true;\r
195         pdbcanvas.repaint();\r
196       }\r
197 \r
198       public void chain_actionPerformed()\r
199       {\r
200         clearButtonGroup();\r
201         pdbcanvas.pdb.setChainColours();\r
202         pdbcanvas.redrawneeded=true;\r
203         pdbcanvas.repaint();\r
204       }\r
205 \r
206       public void zbuffer_actionPerformed()\r
207       {\r
208         pdbcanvas.zbuffer = ! pdbcanvas.zbuffer;\r
209         pdbcanvas.redrawneeded=true;\r
210         pdbcanvas.repaint();\r
211       }\r
212 \r
213       public void depth_actionPerformed()\r
214       {\r
215       pdbcanvas.depthcue = ! pdbcanvas.depthcue;\r
216       pdbcanvas.redrawneeded=true;\r
217         pdbcanvas.repaint();\r
218       }\r
219 \r
220       public void wire_actionPerformed()\r
221       {\r
222         pdbcanvas.wire = ! pdbcanvas.wire;\r
223         pdbcanvas.redrawneeded=true;\r
224         pdbcanvas.repaint();\r
225       }\r
226 \r
227       public void seqButton_actionPerformed()\r
228       {\r
229         clearButtonGroup();\r
230         pdbcanvas.bysequence = true;\r
231         pdbcanvas.updateSeqColours();\r
232         pdbcanvas.repaint();\r
233       }\r
234 \r
235       void clearButtonGroup()\r
236       {\r
237        pdbcanvas.bysequence = false;\r
238        pdbcanvas.bymolecule = false;\r
239       }\r
240 \r
241       public void mapping_actionPerformed()\r
242       {\r
243         jalview.appletgui.CutAndPasteTransfer cap\r
244             = new jalview.appletgui.CutAndPasteTransfer(false, null);\r
245         Frame frame = new Frame();\r
246         frame.add(cap);\r
247         jalview.bin.JalviewLite.addFrame(frame, "PDB - Sequence Mapping", 500, 600);\r
248         cap.setText(pdbcanvas.mappingDetails.toString());\r
249       }\r
250 \r
251       public void allchains_itemStateChanged(ItemEvent itemEvent)\r
252       {\r
253         pdbcanvas.setAllchainsVisible(allchains.getState());\r
254       }\r
255 }\r