package MCview; import javax.swing.*; import java.awt.event.*; import jalview.datamodel.*; import jalview.gui.*; import jalview.io.EBIFetchClient; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class PDBViewer extends JInternalFrame implements Runnable { PDBEntry pdb; Sequence sequence; PDBCanvas pdbcanvas; public PDBViewer(PDBEntry entry, Sequence seq, SeqCanvas seqcanvas) { pdb = entry; sequence = seq; Thread worker = new Thread(this); worker.start(); try { jbInit(); } catch (Exception ex) { ex.printStackTrace(); } pdbcanvas = new PDBCanvas(seqcanvas, seq); setContentPane(pdbcanvas); StringBuffer title = new StringBuffer(sequence.getName() + ":" + pdb.getId()); if(pdb.getProperty()!=null) { title.append( " Method: " ); title.append(pdb.getProperty().get("method")); title.append( " Chain:" ); title.append( pdb.getProperty().get("chains")); } Desktop.addInternalFrame(this,title.toString(),400, 400); } public void run() { try { EBIFetchClient ebi = new EBIFetchClient(); String[] result = ebi.fetchData("pdb:" + pdb.getId(), "default","raw"); PDBfile pdbfile = new PDBfile(result); pdbcanvas.setPDBFile(pdbfile); } catch (Exception ex) { ex.printStackTrace(); } } private void jbInit() throws Exception { this.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent evt) { pdbcanvas.keyPressed(evt); } }); this.setJMenuBar(jMenuBar1); fileMenu.setText("File"); coloursMenu.setText("Colours"); saveMenu.setActionCommand("Save Image"); saveMenu.setText("Save As"); png.setText("PNG"); png.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { png_actionPerformed(e); } }); eps.setText("EPS"); eps.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { eps_actionPerformed(e); } }); mapping.setText("View Mapping"); mapping.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { mapping_actionPerformed(e); } }); wire.setText("Wireframe"); wire.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { wire_actionPerformed(e); } }); depth.setSelected(true); depth.setText("Depthcue"); depth.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { depth_actionPerformed(e); } }); zbuffer.setSelected(true); zbuffer.setText("Z Buffering"); zbuffer.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { zbuffer_actionPerformed(e); } }); charge.setText("Charge & Cysteine"); charge.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { charge_actionPerformed(e); } }); hydro.setText("Hydrophobicity"); hydro.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { hydro_actionPerformed(e); } }); chain.setText("By Chain"); chain.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { chain_actionPerformed(e); } }); seqButton.setSelected(true); seqButton.setText("By Sequence"); seqButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { seqButton_actionPerformed(e); } }); molecule.setText("By Molecule"); molecule.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { molecule_actionPerformed(e); } }); allchains.setSelected(true); allchains.setText("Show All Chains"); allchains.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { allchains_itemStateChanged(e); } }); jMenuBar1.add(fileMenu); jMenuBar1.add(coloursMenu); fileMenu.add(saveMenu); fileMenu.add(mapping); saveMenu.add(png); saveMenu.add(eps); coloursMenu.add(seqButton); coloursMenu.add(chain); coloursMenu.add(hydro); coloursMenu.add(charge); coloursMenu.addSeparator(); coloursMenu.add(wire); coloursMenu.add(depth); coloursMenu.add(zbuffer); coloursMenu.add(molecule); coloursMenu.add(allchains); ButtonGroup bg = new ButtonGroup(); bg.add(seqButton); bg.add(chain); bg.add(hydro); bg.add(charge); } JMenuBar jMenuBar1 = new JMenuBar(); JMenu fileMenu = new JMenu(); JMenu coloursMenu = new JMenu(); JMenu saveMenu = new JMenu(); JMenuItem png = new JMenuItem(); JMenuItem eps = new JMenuItem(); JMenuItem mapping = new JMenuItem(); JCheckBoxMenuItem wire = new JCheckBoxMenuItem(); JCheckBoxMenuItem depth = new JCheckBoxMenuItem(); JCheckBoxMenuItem zbuffer = new JCheckBoxMenuItem(); JRadioButtonMenuItem charge = new JRadioButtonMenuItem(); JRadioButtonMenuItem hydro = new JRadioButtonMenuItem(); JRadioButtonMenuItem chain = new JRadioButtonMenuItem(); JRadioButtonMenuItem seqButton = new JRadioButtonMenuItem(); JCheckBoxMenuItem molecule = new JCheckBoxMenuItem(); JCheckBoxMenuItem allchains = new JCheckBoxMenuItem(); /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ public void eps_actionPerformed(ActionEvent e) { makePDBImage(jalview.util.ImageMaker.EPS); } /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ public void png_actionPerformed(ActionEvent e) { makePDBImage(jalview.util.ImageMaker.PNG); } void makePDBImage(int type) { int width = pdbcanvas.getWidth(); int height = pdbcanvas.getHeight(); jalview.util.ImageMaker im; if (type == jalview.util.ImageMaker.PNG) im = new jalview.util.ImageMaker(this, jalview.util.ImageMaker.PNG, "Make PNG image from view", width, height, null, null); else im = new jalview.util.ImageMaker(this, jalview.util.ImageMaker.EPS, "Make EPS file from view", width, height, null, this.getTitle()); if (im.getGraphics() != null) { pdbcanvas.drawAll(im.getGraphics(), width, height); im.writeImage(); } } public void charge_actionPerformed(ActionEvent e) { clearButtonGroup(); pdbcanvas.pdb.setChargeColours(); pdbcanvas.redrawneeded=true; pdbcanvas.repaint(); } public void hydro_actionPerformed(ActionEvent e) { clearButtonGroup(); pdbcanvas.pdb.setHydrophobicityColours(); pdbcanvas.redrawneeded=true; pdbcanvas.repaint(); } public void chain_actionPerformed(ActionEvent e) { clearButtonGroup(); pdbcanvas.pdb.setChainColours(); pdbcanvas.redrawneeded=true; pdbcanvas.repaint(); } public void zbuffer_actionPerformed(ActionEvent e) { pdbcanvas.zbuffer = ! pdbcanvas.zbuffer; pdbcanvas.redrawneeded=true; pdbcanvas.repaint(); } public void molecule_actionPerformed(ActionEvent e) { pdbcanvas.bymolecule = ! pdbcanvas.bymolecule; pdbcanvas.redrawneeded=true; pdbcanvas.repaint(); } public void depth_actionPerformed(ActionEvent e) { pdbcanvas.depthcue = ! pdbcanvas.depthcue; pdbcanvas.redrawneeded=true; pdbcanvas.repaint(); } public void wire_actionPerformed(ActionEvent e) { pdbcanvas.wire = ! pdbcanvas.wire; pdbcanvas.redrawneeded=true; pdbcanvas.repaint(); } public void seqButton_actionPerformed(ActionEvent e) { clearButtonGroup(); pdbcanvas.bysequence = seqButton.isSelected(); pdbcanvas.updateSeqColours(); } void clearButtonGroup() { pdbcanvas.bysequence = false; pdbcanvas.bymolecule = false; } public void mapping_actionPerformed(ActionEvent e) { jalview.gui.CutAndPasteTransfer cap = new jalview.gui.CutAndPasteTransfer(); Desktop.addInternalFrame(cap, "PDB - Sequence Mapping", 550, 600); cap.setText(pdbcanvas.mappingDetails.toString()); } public void allchains_itemStateChanged(ItemEvent e) { pdbcanvas.setAllchainsVisible(allchains.getState()); } }