76ee4b021b81bf0779f071a21f06e979f2519e67
[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.io.DataSourceType;
28 import jalview.schemes.BuriedColourScheme;
29 import jalview.schemes.HelixColourScheme;
30 import jalview.schemes.HydrophobicColourScheme;
31 import jalview.schemes.StrandColourScheme;
32 import jalview.schemes.TaylorColourScheme;
33 import jalview.schemes.TurnColourScheme;
34 import jalview.schemes.ZappoColourScheme;
35 import jalview.util.MessageManager;
36
37 import java.awt.BorderLayout;
38 import java.awt.CheckboxGroup;
39 import java.awt.CheckboxMenuItem;
40 import java.awt.Frame;
41 import java.awt.Menu;
42 import java.awt.MenuBar;
43 import java.awt.MenuItem;
44 import java.awt.event.ActionEvent;
45 import java.awt.event.ActionListener;
46 import java.awt.event.ItemEvent;
47 import java.awt.event.ItemListener;
48
49 public class AppletPDBViewer extends EmbmenuFrame implements
50         ActionListener, ItemListener
51 {
52   AppletPDBCanvas pdbcanvas;
53
54   public AppletPDBViewer(PDBEntry pdbentry, SequenceI[] seq,
55           String[] chains, AlignmentPanel ap, DataSourceType protocol)
56   {
57     try
58     {
59       jbInit();
60     } catch (Exception ex)
61     {
62       ex.printStackTrace();
63     }
64
65     pdbcanvas = new AppletPDBCanvas(pdbentry, seq, chains, ap, protocol);
66
67     embedMenuIfNeeded(pdbcanvas);
68     add(pdbcanvas, BorderLayout.CENTER);
69
70     StringBuffer title = new StringBuffer(seq[0].getName() + ":"
71             + pdbcanvas.pdbentry.getFile());
72
73     jalview.bin.JalviewLite.addFrame(this, title.toString(), 400, 400);
74
75   }
76
77   @Override
78   public void actionPerformed(ActionEvent evt)
79   {
80     if (evt.getSource() == mapping)
81     {
82       jalview.appletgui.CutAndPasteTransfer cap = new jalview.appletgui.CutAndPasteTransfer(
83               false, null);
84       Frame frame = new Frame();
85       frame.add(cap);
86       jalview.bin.JalviewLite.addFrame(frame,
87               MessageManager.getString("label.pdb_sequence_mapping"), 500,
88               600);
89       cap.setText(pdbcanvas.mappingDetails.toString());
90
91     }
92     else if (evt.getSource() == charge)
93     {
94       pdbcanvas.bysequence = false;
95       pdbcanvas.pdb.setChargeColours();
96     }
97
98     else if (evt.getSource() == chain)
99     {
100       pdbcanvas.bysequence = false;
101       pdbcanvas.pdb.setChainColours();
102     }
103     else if (evt.getSource() == seqButton)
104     {
105       pdbcanvas.bysequence = true;
106       pdbcanvas.colourBySequence();
107
108     }
109     else if (evt.getSource() == zappo)
110     {
111       pdbcanvas.setColours(new ZappoColourScheme());
112     }
113     else if (evt.getSource() == taylor)
114     {
115       pdbcanvas.setColours(new TaylorColourScheme());
116     }
117     else if (evt.getSource() == hydro)
118     {
119       pdbcanvas.setColours(new HydrophobicColourScheme());
120     }
121     else if (evt.getSource() == helix)
122     {
123       pdbcanvas.setColours(new HelixColourScheme());
124     }
125     else if (evt.getSource() == strand)
126     {
127       pdbcanvas.setColours(new StrandColourScheme());
128     }
129     else if (evt.getSource() == turn)
130     {
131       pdbcanvas.setColours(new TurnColourScheme());
132     }
133     else if (evt.getSource() == buried)
134     {
135       pdbcanvas.setColours(new BuriedColourScheme());
136     }
137     else if (evt.getSource() == user)
138     {
139       pdbcanvas.bysequence = false;
140       new jalview.appletgui.UserDefinedColours(pdbcanvas);
141     }
142
143     pdbcanvas.redrawneeded = true;
144     pdbcanvas.repaint();
145
146   }
147
148   @Override
149   public void itemStateChanged(ItemEvent evt)
150   {
151     if (evt.getSource() == allchains)
152     {
153       pdbcanvas.setAllchainsVisible(allchains.getState());
154     }
155     else if (evt.getSource() == wire)
156     {
157       pdbcanvas.wire = !pdbcanvas.wire;
158     }
159     else if (evt.getSource() == depth)
160     {
161       pdbcanvas.depthcue = !pdbcanvas.depthcue;
162     }
163     else if (evt.getSource() == zbuffer)
164     {
165       pdbcanvas.zbuffer = !pdbcanvas.zbuffer;
166     }
167     pdbcanvas.redrawneeded = true;
168     pdbcanvas.repaint();
169   }
170
171   private void jbInit() throws Exception
172   {
173     setMenuBar(jMenuBar1);
174     fileMenu.setLabel(MessageManager.getString("action.file"));
175     coloursMenu.setLabel(MessageManager.getString("label.colours"));
176     mapping.setLabel(MessageManager.getString("label.view_mapping"));
177     mapping.addActionListener(this);
178     wire.setLabel(MessageManager.getString("label.wireframe"));
179     wire.addItemListener(this);
180     depth.setState(true);
181     depth.setLabel(MessageManager.getString("label.depthcue"));
182     depth.addItemListener(this);
183     zbuffer.setState(true);
184     zbuffer.setLabel(MessageManager.getString("label.z_buffering"));
185     zbuffer.addItemListener(this);
186     charge.setLabel(MessageManager.getString("label.charge_cysteine"));
187     charge.addActionListener(this);
188     hydro.setLabel(MessageManager.getString("label.hydrophobicity"));
189     hydro.addActionListener(this);
190     chain.setLabel(MessageManager.getString("action.by_chain"));
191     chain.addActionListener(this);
192     seqButton.setLabel(MessageManager.getString("action.by_sequence"));
193     seqButton.addActionListener(this);
194     allchains
195             .setLabel(MessageManager.getString("label.all_chains_visible"));
196     allchains.addItemListener(this);
197     viewMenu.setLabel(MessageManager.getString("action.view"));
198     zappo.setLabel(MessageManager.getString("label.zappo"));
199     zappo.addActionListener(this);
200     taylor.setLabel(MessageManager.getString("label.taylor"));
201     taylor.addActionListener(this);
202     helix.setLabel(MessageManager.getString("label.helix_propensity"));
203     helix.addActionListener(this);
204     strand.setLabel(MessageManager.getString("label.strand_propensity"));
205     strand.addActionListener(this);
206     turn.setLabel(MessageManager.getString("label.turn_propensity"));
207     turn.addActionListener(this);
208     buried.setLabel(MessageManager.getString("label.buried_index"));
209     buried.addActionListener(this);
210     user.setLabel(MessageManager.getString("action.user_defined"));
211     user.addActionListener(this);
212     jMenuBar1.add(fileMenu);
213     jMenuBar1.add(coloursMenu);
214     jMenuBar1.add(viewMenu);
215     fileMenu.add(mapping);
216     ;
217
218     coloursMenu.add(seqButton);
219     coloursMenu.add(chain);
220     coloursMenu.add(charge);
221     coloursMenu.add(zappo);
222     coloursMenu.add(taylor);
223     coloursMenu.add(hydro);
224     coloursMenu.add(helix);
225     coloursMenu.add(strand);
226     coloursMenu.add(turn);
227     coloursMenu.add(buried);
228     coloursMenu.add(user);
229     viewMenu.add(wire);
230     viewMenu.add(depth);
231     viewMenu.add(zbuffer);
232     viewMenu.add(allchains);
233     allchains.setState(true);
234   }
235
236   MenuBar jMenuBar1 = new MenuBar();
237
238   Menu fileMenu = new Menu();
239
240   Menu coloursMenu = new Menu();
241
242   MenuItem mapping = new MenuItem();
243
244   CheckboxGroup bg = new CheckboxGroup();
245
246   CheckboxMenuItem wire = new CheckboxMenuItem();
247
248   CheckboxMenuItem depth = new CheckboxMenuItem();
249
250   CheckboxMenuItem zbuffer = new CheckboxMenuItem();
251
252   MenuItem charge = new MenuItem();
253
254   MenuItem hydro = new MenuItem();
255
256   MenuItem chain = new MenuItem();
257
258   MenuItem seqButton = new MenuItem();
259
260   CheckboxMenuItem allchains = new CheckboxMenuItem();
261
262   Menu viewMenu = new Menu();
263
264   MenuItem turn = new MenuItem();
265
266   MenuItem strand = new MenuItem();
267
268   MenuItem helix = new MenuItem();
269
270   MenuItem taylor = new MenuItem();
271
272   MenuItem zappo = new MenuItem();
273
274   MenuItem buried = new MenuItem();
275
276   MenuItem user = new MenuItem();
277
278   // End StructureListener
279   // //////////////////////////
280
281 }