3 import javax.swing.*;
\r
4 import java.awt.event.*;
\r
5 import jalview.datamodel.*;
\r
6 import jalview.gui.*;
\r
7 import jalview.io.EBIFetchClient;
\r
8 import java.awt.event.ActionListener;
\r
9 import java.awt.event.ActionEvent;
\r
11 public class PDBViewer extends JInternalFrame implements Runnable
\r
15 PDBCanvas pdbcanvas;
\r
18 public PDBViewer(PDBEntry entry,
\r
20 SeqCanvas seqcanvas)
\r
26 Thread worker = new Thread(this);
\r
33 catch (Exception ex)
\r
35 ex.printStackTrace();
\r
38 pdbcanvas = new PDBCanvas(seqcanvas, seq);
\r
40 setContentPane(pdbcanvas);
\r
41 StringBuffer title = new StringBuffer(sequence.getName() + ":" + pdb.getId());
\r
42 if(pdb.getProperty()!=null)
\r
44 title.append( " Method: " );
\r
45 title.append(pdb.getProperty().get("method"));
\r
46 title.append( " Chain:" );
\r
47 title.append( pdb.getProperty().get("chains"));
\r
50 Desktop.addInternalFrame(this,title.toString(),400, 400);
\r
57 EBIFetchClient ebi = new EBIFetchClient();
\r
58 String[] result = ebi.fetchData("pdb:" + pdb.getId(), "default","raw");
\r
60 PDBfile pdbfile = new PDBfile(result);
\r
62 pdbcanvas.setPDBFile(pdbfile);
\r
65 catch (Exception ex)
\r
67 ex.printStackTrace();
\r
71 private void jbInit()
\r
74 this.addKeyListener(new KeyAdapter()
\r
76 public void keyPressed(KeyEvent evt)
\r
78 pdbcanvas.keyPressed(evt);
\r
82 this.setJMenuBar(jMenuBar1);
\r
83 fileMenu.setText("File");
\r
84 coloursMenu.setText("Colours");
\r
85 saveMenu.setActionCommand("Save Image");
\r
86 saveMenu.setText("Save As");
\r
88 png.addActionListener(new ActionListener()
\r
90 public void actionPerformed(ActionEvent e)
\r
92 png_actionPerformed(e);
\r
96 eps.addActionListener(new ActionListener()
\r
98 public void actionPerformed(ActionEvent e)
\r
100 eps_actionPerformed(e);
\r
103 mapping.setText("View Mapping");
\r
104 mapping.addActionListener(new ActionListener()
\r
106 public void actionPerformed(ActionEvent e)
\r
108 mapping_actionPerformed(e);
\r
111 wire.setText("Wireframe");
\r
112 wire.addActionListener(new ActionListener()
\r
114 public void actionPerformed(ActionEvent e)
\r
116 wire_actionPerformed(e);
\r
119 depth.setSelected(true);
\r
120 depth.setText("Depthcue");
\r
121 depth.addActionListener(new ActionListener()
\r
123 public void actionPerformed(ActionEvent e)
\r
125 depth_actionPerformed(e);
\r
128 zbuffer.setSelected(true);
\r
129 zbuffer.setText("Z Buffering");
\r
130 zbuffer.addActionListener(new ActionListener()
\r
132 public void actionPerformed(ActionEvent e)
\r
134 zbuffer_actionPerformed(e);
\r
137 charge.setText("Charge & Cysteine");
\r
138 charge.addActionListener(new ActionListener()
\r
140 public void actionPerformed(ActionEvent e)
\r
142 charge_actionPerformed(e);
\r
145 hydro.setText("Hydrophobicity");
\r
146 hydro.addActionListener(new ActionListener()
\r
148 public void actionPerformed(ActionEvent e)
\r
150 hydro_actionPerformed(e);
\r
153 chain.setText("By Chain");
\r
154 chain.addActionListener(new ActionListener()
\r
156 public void actionPerformed(ActionEvent e)
\r
158 chain_actionPerformed(e);
\r
161 seqButton.setSelected(true);
\r
162 seqButton.setText("By Sequence");
\r
163 seqButton.addActionListener(new ActionListener()
\r
165 public void actionPerformed(ActionEvent e)
\r
167 seqButton_actionPerformed(e);
\r
170 molecule.setText("By Molecule");
\r
171 molecule.addActionListener(new ActionListener()
\r
173 public void actionPerformed(ActionEvent e)
\r
175 molecule_actionPerformed(e);
\r
178 allchains.setSelected(true);
\r
179 allchains.setText("Show All Chains");
\r
180 allchains.addItemListener(new ItemListener()
\r
182 public void itemStateChanged(ItemEvent e)
\r
184 allchains_itemStateChanged(e);
\r
187 jMenuBar1.add(fileMenu);
\r
188 jMenuBar1.add(coloursMenu);
\r
189 fileMenu.add(saveMenu);
\r
190 fileMenu.add(mapping);
\r
193 coloursMenu.add(seqButton);
\r
194 coloursMenu.add(chain);
\r
195 coloursMenu.add(hydro);
\r
196 coloursMenu.add(charge);
\r
197 coloursMenu.addSeparator();
\r
198 coloursMenu.add(wire);
\r
199 coloursMenu.add(depth);
\r
200 coloursMenu.add(zbuffer);
\r
201 coloursMenu.add(molecule);
\r
202 coloursMenu.add(allchains);
\r
203 ButtonGroup bg = new ButtonGroup();
\r
210 JMenuBar jMenuBar1 = new JMenuBar();
\r
211 JMenu fileMenu = new JMenu();
\r
212 JMenu coloursMenu = new JMenu();
\r
213 JMenu saveMenu = new JMenu();
\r
214 JMenuItem png = new JMenuItem();
\r
215 JMenuItem eps = new JMenuItem();
\r
216 JMenuItem mapping = new JMenuItem();
\r
217 JCheckBoxMenuItem wire = new JCheckBoxMenuItem();
\r
218 JCheckBoxMenuItem depth = new JCheckBoxMenuItem();
\r
219 JCheckBoxMenuItem zbuffer = new JCheckBoxMenuItem();
\r
220 JRadioButtonMenuItem charge = new JRadioButtonMenuItem();
\r
221 JRadioButtonMenuItem hydro = new JRadioButtonMenuItem();
\r
222 JRadioButtonMenuItem chain = new JRadioButtonMenuItem();
\r
223 JRadioButtonMenuItem seqButton = new JRadioButtonMenuItem();
\r
224 JCheckBoxMenuItem molecule = new JCheckBoxMenuItem();
\r
225 JCheckBoxMenuItem allchains = new JCheckBoxMenuItem();
\r
230 * @param e DOCUMENT ME!
\r
232 public void eps_actionPerformed(ActionEvent e)
\r
234 makePDBImage(jalview.util.ImageMaker.EPS);
\r
240 * @param e DOCUMENT ME!
\r
242 public void png_actionPerformed(ActionEvent e)
\r
244 makePDBImage(jalview.util.ImageMaker.PNG);
\r
247 void makePDBImage(int type)
\r
249 int width = pdbcanvas.getWidth();
\r
250 int height = pdbcanvas.getHeight();
\r
252 jalview.util.ImageMaker im;
\r
254 if (type == jalview.util.ImageMaker.PNG)
\r
255 im = new jalview.util.ImageMaker(this,
\r
256 jalview.util.ImageMaker.PNG,
\r
257 "Make PNG image from view",
\r
261 im = new jalview.util.ImageMaker(this,
\r
262 jalview.util.ImageMaker.EPS,
\r
263 "Make EPS file from view",
\r
265 null, this.getTitle());
\r
267 if (im.getGraphics() != null)
\r
269 pdbcanvas.drawAll(im.getGraphics(), width, height);
\r
273 public void charge_actionPerformed(ActionEvent e)
\r
275 clearButtonGroup();
\r
276 pdbcanvas.pdb.setChargeColours();
\r
277 pdbcanvas.redrawneeded=true;
\r
278 pdbcanvas.repaint();
\r
281 public void hydro_actionPerformed(ActionEvent e)
\r
283 clearButtonGroup();
\r
284 pdbcanvas.pdb.setHydrophobicityColours();
\r
285 pdbcanvas.redrawneeded=true;
\r
286 pdbcanvas.repaint();
\r
289 public void chain_actionPerformed(ActionEvent e)
\r
291 clearButtonGroup();
\r
292 pdbcanvas.pdb.setChainColours();
\r
293 pdbcanvas.redrawneeded=true;
\r
294 pdbcanvas.repaint();
\r
297 public void zbuffer_actionPerformed(ActionEvent e)
\r
299 pdbcanvas.zbuffer = ! pdbcanvas.zbuffer;
\r
300 pdbcanvas.redrawneeded=true;
\r
301 pdbcanvas.repaint();
\r
304 public void molecule_actionPerformed(ActionEvent e)
\r
306 pdbcanvas.bymolecule = ! pdbcanvas.bymolecule;
\r
307 pdbcanvas.redrawneeded=true;
\r
308 pdbcanvas.repaint();
\r
311 public void depth_actionPerformed(ActionEvent e)
\r
313 pdbcanvas.depthcue = ! pdbcanvas.depthcue;
\r
314 pdbcanvas.redrawneeded=true;
\r
315 pdbcanvas.repaint();
\r
318 public void wire_actionPerformed(ActionEvent e)
\r
320 pdbcanvas.wire = ! pdbcanvas.wire;
\r
321 pdbcanvas.redrawneeded=true;
\r
322 pdbcanvas.repaint();
\r
325 public void seqButton_actionPerformed(ActionEvent e)
\r
327 clearButtonGroup();
\r
328 pdbcanvas.bysequence = seqButton.isSelected();
\r
329 pdbcanvas.updateSeqColours();
\r
332 void clearButtonGroup()
\r
334 pdbcanvas.bysequence = false;
\r
335 pdbcanvas.bymolecule = false;
\r
338 public void mapping_actionPerformed(ActionEvent e)
\r
340 jalview.gui.CutAndPasteTransfer cap = new jalview.gui.CutAndPasteTransfer();
\r
341 Desktop.addInternalFrame(cap, "PDB - Sequence Mapping", 550, 600);
\r
342 cap.setText(pdbcanvas.mappingDetails.toString());
\r
345 public void allchains_itemStateChanged(ItemEvent e)
\r
347 pdbcanvas.setAllchainsVisible(allchains.getState());
\r