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