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