import jalview.io.EBIFetchClient;\r
import java.awt.event.ActionListener;\r
import java.awt.event.ActionEvent;\r
-import java.io.FileOutputStream;\r
-import org.jibble.epsgraphics.EpsGraphics2D;\r
-import javax.imageio.ImageIO;\r
-import java.awt.image.BufferedImage;\r
-import java.awt.Graphics;\r
-import java.awt.Graphics2D;\r
-import java.awt.RenderingHints;\r
\r
public class PDBViewer extends JInternalFrame implements Runnable\r
{\r
PDBEntry pdb;\r
Sequence sequence;\r
- SeqCanvas seqcanvas;\r
PDBCanvas pdbcanvas;\r
\r
\r
Sequence seq,\r
SeqCanvas seqcanvas)\r
{\r
+\r
pdb = entry;\r
sequence = seq;\r
- this.seqcanvas = seqcanvas;\r
\r
+ Thread worker = new Thread(this);\r
+ worker.start();\r
\r
try\r
{\r
ex.printStackTrace();\r
}\r
\r
- pdbcanvas = new PDBCanvas();\r
+ pdbcanvas = new PDBCanvas(seqcanvas, seq);\r
+\r
setContentPane(pdbcanvas);\r
- Desktop.addInternalFrame(this,\r
- sequence.getName() + ":" + pdb.getId()\r
- + " Method: " + pdb.getProperty().get("method")\r
- + " Chain:" + pdb.getProperty().get("chains"),\r
- 400, 400);\r
-\r
- Thread worker = new Thread(this);\r
- worker.start();\r
+ StringBuffer title = new StringBuffer(sequence.getName() + ":" + pdb.getId());\r
+ if(pdb.getProperty()!=null)\r
+ {\r
+ title.append( " Method: " );\r
+ title.append(pdb.getProperty().get("method"));\r
+ title.append( " Chain:" );\r
+ title.append( pdb.getProperty().get("chains"));\r
+ }\r
+\r
+ Desktop.addInternalFrame(this,title.toString(),400, 400);\r
}\r
\r
public void run()\r
try\r
{\r
EBIFetchClient ebi = new EBIFetchClient();\r
- String[] result = ebi.fetchData("pdb:" + pdb.getId(), null,\r
- null);\r
+ String[] result = ebi.fetchData("pdb:" + pdb.getId(), "default","raw");\r
\r
PDBfile pdbfile = new PDBfile(result);\r
\r
- pdbcanvas.setPDBFile(pdbfile,\r
- sequence,\r
- seqcanvas.getSequenceRenderer(),\r
- seqcanvas.getFeatureRenderer());\r
+ pdbcanvas.setPDBFile(pdbfile);\r
\r
- seqcanvas.setPDBViewer(pdbcanvas);\r
}\r
catch (Exception ex)\r
{\r
{\r
public void keyPressed(KeyEvent evt)\r
{\r
- System.out.println("key press");\r
pdbcanvas.keyPressed(evt);\r
}\r
});\r
}\r
});\r
mapping.setText("View Mapping");\r
+ mapping.addActionListener(new ActionListener()\r
+ {\r
+ public void actionPerformed(ActionEvent e)\r
+ {\r
+ mapping_actionPerformed(e);\r
+ }\r
+ });\r
wire.setText("Wireframe");\r
wire.addActionListener(new ActionListener()\r
{\r
molecule_actionPerformed(e);\r
}\r
});\r
+ allchains.setSelected(true);\r
+ allchains.setText("Show All Chains");\r
+ allchains.addItemListener(new ItemListener()\r
+ {\r
+ public void itemStateChanged(ItemEvent e)\r
+ {\r
+ allchains_itemStateChanged(e);\r
+ }\r
+ });\r
jMenuBar1.add(fileMenu);\r
jMenuBar1.add(coloursMenu);\r
fileMenu.add(saveMenu);\r
coloursMenu.add(depth);\r
coloursMenu.add(zbuffer);\r
coloursMenu.add(molecule);\r
+ coloursMenu.add(allchains);\r
ButtonGroup bg = new ButtonGroup();\r
bg.add(seqButton);\r
bg.add(chain);\r
JRadioButtonMenuItem chain = new JRadioButtonMenuItem();\r
JRadioButtonMenuItem seqButton = new JRadioButtonMenuItem();\r
JCheckBoxMenuItem molecule = new JCheckBoxMenuItem();\r
+ JCheckBoxMenuItem allchains = new JCheckBoxMenuItem();\r
\r
- public void png_actionPerformed(ActionEvent e)\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param e DOCUMENT ME!\r
+ */\r
+ public void eps_actionPerformed(ActionEvent e)\r
{\r
- int width = pdbcanvas.getWidth();\r
- int height = pdbcanvas.getHeight();\r
-\r
- try\r
- {\r
- jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(jalview.bin.Cache.getProperty(\r
- "LAST_DIRECTORY"), new String[] { "png" },\r
- new String[] { "Portable network graphics" },\r
- "Portable network graphics");\r
-\r
- chooser.setFileView(new jalview.io.JalviewFileView());\r
- chooser.setDialogTitle("Create PNG Image of Molecule");\r
- chooser.setToolTipText("Save");\r
-\r
- int value = chooser.showSaveDialog(this);\r
-\r
- if (value != jalview.io.JalviewFileChooser.APPROVE_OPTION)\r
- {\r
- return;\r
- }\r
-\r
- jalview.bin.Cache.setProperty("LAST_DIRECTORY",\r
- chooser.getSelectedFile().getParent());\r
-\r
- FileOutputStream out = new FileOutputStream(chooser.getSelectedFile());\r
-\r
- BufferedImage bi = new BufferedImage(width, height,\r
- BufferedImage.TYPE_INT_RGB);\r
- Graphics png = bi.getGraphics();\r
- Graphics2D ig2 = (Graphics2D) png;\r
- ig2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\r
- RenderingHints.VALUE_ANTIALIAS_ON);\r
-\r
-\r
- pdbcanvas.drawAll(png, width, height);\r
-\r
- ImageIO.write(bi, "png", out);\r
- out.close();\r
- }\r
- catch (Exception ex)\r
- {\r
- ex.printStackTrace();\r
- }\r
+ makePDBImage(jalview.util.ImageMaker.EPS);\r
}\r
\r
- public void eps_actionPerformed(ActionEvent e)\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param e DOCUMENT ME!\r
+ */\r
+ public void png_actionPerformed(ActionEvent e)\r
{\r
- boolean accurateText = true;\r
-\r
- String renderStyle = jalview.bin.Cache.getDefault("EPS_RENDERING",\r
- "Prompt each time");\r
-\r
- // If we need to prompt, and if the GUI is visible then\r
- // Prompt for EPS rendering style\r
- if (renderStyle.equalsIgnoreCase("Prompt each time")\r
- && !\r
- (System.getProperty("java.awt.headless") != null\r
- && System.getProperty("java.awt.headless").equals("true")))\r
- {\r
- EPSOptions eps = new EPSOptions();\r
- renderStyle = eps.getValue();\r
-\r
- if (renderStyle==null || eps.cancelled)\r
- return;\r
-\r
+ makePDBImage(jalview.util.ImageMaker.PNG);\r
+ }\r
\r
- }\r
+ void makePDBImage(int type)\r
+ {\r
+ int width = pdbcanvas.getWidth();\r
+ int height = pdbcanvas.getHeight();\r
\r
- if (renderStyle.equalsIgnoreCase("text"))\r
+ jalview.util.ImageMaker im;\r
+\r
+ if (type == jalview.util.ImageMaker.PNG)\r
+ im = new jalview.util.ImageMaker(this,\r
+ jalview.util.ImageMaker.PNG,\r
+ "Make PNG image from view",\r
+ width, height,\r
+ null, null);\r
+ else\r
+ im = new jalview.util.ImageMaker(this,\r
+ jalview.util.ImageMaker.EPS,\r
+ "Make EPS file from view",\r
+ width, height,\r
+ null, this.getTitle());\r
+\r
+ if (im.getGraphics() != null)\r
{\r
- accurateText = false;\r
+ pdbcanvas.drawAll(im.getGraphics(), width, height);\r
+ im.writeImage();\r
}\r
-\r
- int width = getWidth();\r
- int height = getHeight();\r
-\r
- try\r
- {\r
- jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(jalview.bin.Cache.getProperty(\r
- "LAST_DIRECTORY"), new String[] { "eps" },\r
- new String[] { "Encapsulated Postscript" },\r
- "Encapsulated Postscript");\r
- chooser.setFileView(new jalview.io.JalviewFileView());\r
- chooser.setDialogTitle("Create EPS file from tree");\r
- chooser.setToolTipText("Save");\r
-\r
- int value = chooser.showSaveDialog(this);\r
-\r
- if (value != jalview.io.JalviewFileChooser.APPROVE_OPTION)\r
- {\r
- return;\r
- }\r
-\r
- jalview.bin.Cache.setProperty("LAST_DIRECTORY",\r
- chooser.getSelectedFile().getParent());\r
-\r
- FileOutputStream out = new FileOutputStream(chooser.getSelectedFile());\r
- EpsGraphics2D pg = new EpsGraphics2D("Tree", out, 0, 0, width,\r
- height);\r
- Graphics2D ig2 = (Graphics2D) pg;\r
- ig2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\r
- RenderingHints.VALUE_ANTIALIAS_ON);\r
-\r
-\r
- pg.setAccurateTextMode(accurateText);\r
-\r
- pdbcanvas.drawAll(pg, width, height);\r
-\r
- pg.flush();\r
- pg.close();\r
- }\r
- catch (Exception ex)\r
- {\r
- ex.printStackTrace();\r
- }\r
-\r
}\r
-\r
public void charge_actionPerformed(ActionEvent e)\r
{\r
+ clearButtonGroup();\r
pdbcanvas.pdb.setChargeColours();\r
pdbcanvas.redrawneeded=true;\r
pdbcanvas.repaint();\r
\r
public void hydro_actionPerformed(ActionEvent e)\r
{\r
+ clearButtonGroup();\r
pdbcanvas.pdb.setHydrophobicityColours();\r
pdbcanvas.redrawneeded=true;\r
pdbcanvas.repaint();\r
\r
public void chain_actionPerformed(ActionEvent e)\r
{\r
+ clearButtonGroup();\r
pdbcanvas.pdb.setChainColours();\r
pdbcanvas.redrawneeded=true;\r
pdbcanvas.repaint();\r
\r
public void seqButton_actionPerformed(ActionEvent e)\r
{\r
+ clearButtonGroup();\r
pdbcanvas.bysequence = seqButton.isSelected();\r
pdbcanvas.updateSeqColours();\r
}\r
\r
void clearButtonGroup()\r
{\r
- charge.setSelected(false);\r
- hydro.setSelected(false);\r
- chain.setSelected(false);\r
- seqButton.setSelected(false);\r
+ pdbcanvas.bysequence = false;\r
+ pdbcanvas.bymolecule = false;\r
+ }\r
+\r
+ public void mapping_actionPerformed(ActionEvent e)\r
+ {\r
+ jalview.gui.CutAndPasteTransfer cap = new jalview.gui.CutAndPasteTransfer();\r
+ Desktop.addInternalFrame(cap, "PDB - Sequence Mapping", 550, 600);\r
+ cap.setText(pdbcanvas.mappingDetails.toString());\r
+ }\r
+\r
+ public void allchains_itemStateChanged(ItemEvent e)\r
+ {\r
+ pdbcanvas.setAllchainsVisible(allchains.getState());\r
}\r
}\r