8233ac365416a4d6259999aaf1f5323bf4a51431
[jalview.git] / src / MCview / AppletPDBViewer.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
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
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package MCview;
22
23 import jalview.appletgui.AlignmentPanel;
24 import jalview.appletgui.EmbmenuFrame;
25 import jalview.datamodel.PDBEntry;
26 import jalview.datamodel.SequenceI;
27 import jalview.schemes.BuriedColourScheme;
28 import jalview.schemes.HelixColourScheme;
29 import jalview.schemes.HydrophobicColourScheme;
30 import jalview.schemes.StrandColourScheme;
31 import jalview.schemes.TaylorColourScheme;
32 import jalview.schemes.TurnColourScheme;
33 import jalview.schemes.ZappoColourScheme;
34 import jalview.util.MessageManager;
35
36 import java.awt.BorderLayout;
37 import java.awt.CheckboxGroup;
38 import java.awt.CheckboxMenuItem;
39 import java.awt.Frame;
40 import java.awt.Menu;
41 import java.awt.MenuBar;
42 import java.awt.MenuItem;
43 import java.awt.event.ActionEvent;
44 import java.awt.event.ActionListener;
45 import java.awt.event.ItemEvent;
46 import java.awt.event.ItemListener;
47
48 public class AppletPDBViewer extends EmbmenuFrame implements
49         ActionListener, ItemListener
50 {
51   AppletPDBCanvas pdbcanvas;
52
53   public AppletPDBViewer(PDBEntry pdbentry, SequenceI[] seq,
54           String[] chains, AlignmentPanel ap, String protocol)
55   {
56     try
57     {
58       jbInit();
59     } catch (Exception ex)
60     {
61       ex.printStackTrace();
62     }
63
64     pdbcanvas = new AppletPDBCanvas(pdbentry, seq, chains, ap, protocol);
65
66     embedMenuIfNeeded(pdbcanvas);
67     add(pdbcanvas, BorderLayout.CENTER);
68
69     StringBuffer title = new StringBuffer(seq[0].getName() + ":"
70             + pdbcanvas.pdbentry.getFile());
71
72     jalview.bin.JalviewLite.addFrame(this, title.toString(), 400, 400);
73
74   }
75
76   public void actionPerformed(ActionEvent evt)
77   {
78     if (evt.getSource() == mapping)
79     {
80       jalview.appletgui.CutAndPasteTransfer cap = new jalview.appletgui.CutAndPasteTransfer(
81               false, null);
82       Frame frame = new Frame();
83       frame.add(cap);
84       jalview.bin.JalviewLite.addFrame(frame,
85               MessageManager.getString("label.pdb_sequence_mapping"), 500,
86               600);
87       cap.setText(pdbcanvas.mappingDetails.toString());
88
89     }
90     else if (evt.getSource() == charge)
91     {
92       pdbcanvas.bysequence = false;
93       pdbcanvas.pdb.setChargeColours();
94     }
95
96     else if (evt.getSource() == chain)
97     {
98       pdbcanvas.bysequence = false;
99       pdbcanvas.pdb.setChainColours();
100     }
101     else if (evt.getSource() == seqButton)
102     {
103       pdbcanvas.bysequence = true;
104       pdbcanvas.colourBySequence();
105
106     }
107     else if (evt.getSource() == zappo)
108     {
109       pdbcanvas.setColours(new ZappoColourScheme());
110     }
111     else if (evt.getSource() == taylor)
112     {
113       pdbcanvas.setColours(new TaylorColourScheme());
114     }
115     else if (evt.getSource() == hydro)
116     {
117       pdbcanvas.setColours(new HydrophobicColourScheme());
118     }
119     else if (evt.getSource() == helix)
120     {
121       pdbcanvas.setColours(new HelixColourScheme());
122     }
123     else if (evt.getSource() == strand)
124     {
125       pdbcanvas.setColours(new StrandColourScheme());
126     }
127     else if (evt.getSource() == turn)
128     {
129       pdbcanvas.setColours(new TurnColourScheme());
130     }
131     else if (evt.getSource() == buried)
132     {
133       pdbcanvas.setColours(new BuriedColourScheme());
134     }
135     else if (evt.getSource() == user)
136     {
137       pdbcanvas.bysequence = false;
138       new jalview.appletgui.UserDefinedColours(pdbcanvas);
139     }
140
141     pdbcanvas.redrawneeded = true;
142     pdbcanvas.repaint();
143
144   }
145
146   public void itemStateChanged(ItemEvent evt)
147   {
148     if (evt.getSource() == allchains)
149     {
150       pdbcanvas.setAllchainsVisible(allchains.getState());
151     }
152     else if (evt.getSource() == wire)
153     {
154       pdbcanvas.wire = !pdbcanvas.wire;
155     }
156     else if (evt.getSource() == depth)
157     {
158       pdbcanvas.depthcue = !pdbcanvas.depthcue;
159     }
160     else if (evt.getSource() == zbuffer)
161     {
162       pdbcanvas.zbuffer = !pdbcanvas.zbuffer;
163     }
164     pdbcanvas.redrawneeded = true;
165     pdbcanvas.repaint();
166   }
167
168   private void jbInit() throws Exception
169   {
170     setMenuBar(jMenuBar1);
171     fileMenu.setLabel(MessageManager.getString("action.file"));
172     coloursMenu.setLabel(MessageManager.getString("label.colours"));
173     mapping.setLabel(MessageManager.getString("label.view_mapping"));
174     mapping.addActionListener(this);
175     wire.setLabel(MessageManager.getString("label.wireframe"));
176     wire.addItemListener(this);
177     depth.setState(true);
178     depth.setLabel(MessageManager.getString("label.depthcue"));
179     depth.addItemListener(this);
180     zbuffer.setState(true);
181     zbuffer.setLabel(MessageManager.getString("label.z_buffering"));
182     zbuffer.addItemListener(this);
183     charge.setLabel(MessageManager.getString("label.charge_cysteine"));
184     charge.addActionListener(this);
185     hydro.setLabel(MessageManager.getString("label.hydrophobicity"));
186     hydro.addActionListener(this);
187     chain.setLabel(MessageManager.getString("action.by_chain"));
188     chain.addActionListener(this);
189     seqButton.setLabel(MessageManager.getString("action.by_sequence"));
190     seqButton.addActionListener(this);
191     allchains
192             .setLabel(MessageManager.getString("label.all_chains_visible"));
193     allchains.addItemListener(this);
194     viewMenu.setLabel(MessageManager.getString("action.view"));
195     zappo.setLabel(MessageManager.getString("label.zappo"));
196     zappo.addActionListener(this);
197     taylor.setLabel(MessageManager.getString("label.taylor"));
198     taylor.addActionListener(this);
199     helix.setLabel(MessageManager.getString("label.helix_propensity"));
200     helix.addActionListener(this);
201     strand.setLabel(MessageManager.getString("label.strand_propensity"));
202     strand.addActionListener(this);
203     turn.setLabel(MessageManager.getString("label.turn_propensity"));
204     turn.addActionListener(this);
205     buried.setLabel(MessageManager.getString("label.buried_index"));
206     buried.addActionListener(this);
207     user.setLabel(MessageManager.getString("action.user_defined"));
208     user.addActionListener(this);
209     jMenuBar1.add(fileMenu);
210     jMenuBar1.add(coloursMenu);
211     jMenuBar1.add(viewMenu);
212     fileMenu.add(mapping);
213     ;
214
215     coloursMenu.add(seqButton);
216     coloursMenu.add(chain);
217     coloursMenu.add(charge);
218     coloursMenu.add(zappo);
219     coloursMenu.add(taylor);
220     coloursMenu.add(hydro);
221     coloursMenu.add(helix);
222     coloursMenu.add(strand);
223     coloursMenu.add(turn);
224     coloursMenu.add(buried);
225     coloursMenu.add(user);
226     viewMenu.add(wire);
227     viewMenu.add(depth);
228     viewMenu.add(zbuffer);
229     viewMenu.add(allchains);
230     allchains.setState(true);
231   }
232
233   MenuBar jMenuBar1 = new MenuBar();
234
235   Menu fileMenu = new Menu();
236
237   Menu coloursMenu = new Menu();
238
239   MenuItem mapping = new MenuItem();
240
241   CheckboxGroup bg = new CheckboxGroup();
242
243   CheckboxMenuItem wire = new CheckboxMenuItem();
244
245   CheckboxMenuItem depth = new CheckboxMenuItem();
246
247   CheckboxMenuItem zbuffer = new CheckboxMenuItem();
248
249   MenuItem charge = new MenuItem();
250
251   MenuItem hydro = new MenuItem();
252
253   MenuItem chain = new MenuItem();
254
255   MenuItem seqButton = new MenuItem();
256
257   CheckboxMenuItem allchains = new CheckboxMenuItem();
258
259   Menu viewMenu = new Menu();
260
261   MenuItem turn = new MenuItem();
262
263   MenuItem strand = new MenuItem();
264
265   MenuItem helix = new MenuItem();
266
267   MenuItem taylor = new MenuItem();
268
269   MenuItem zappo = new MenuItem();
270
271   MenuItem buried = new MenuItem();
272
273   MenuItem user = new MenuItem();
274
275   // End StructureListener
276   // //////////////////////////
277
278 }