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