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