From: Yong Z. <yz...@us...> - 2003-12-03 21:09:39
|
Update of /cvsroot/cdk/cdk-plugins/wwmmplugin/src/uk/ac/cam/ch/wwmm In directory sc8-pr-cvs1:/tmp/cvs-serv24856/src/uk/ac/cam/ch/wwmm Modified Files: WWMMCDKPlugin.java WWMMCDKPluginQueryFrame.java Log Message: Add create IChI and lookup wwmm xindice database Index: WWMMCDKPlugin.java =================================================================== RCS file: /cvsroot/cdk/cdk-plugins/wwmmplugin/src/uk/ac/cam/ch/wwmm/WWMMCDKPlugin.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- WWMMCDKPlugin.java 3 Dec 2003 17:12:55 -0000 1.2 +++ WWMMCDKPlugin.java 3 Dec 2003 21:09:34 -0000 1.3 @@ -1,8 +1,5 @@ package uk.ac.cam.ch.wwmm; -import org.openscience.cdk.applications.plugin.*; -import org.openscience.cdk.tools.LoggingTool; - import java.awt.*; import java.awt.event.*; import javax.swing.*; @@ -14,8 +11,16 @@ import javax.swing.JMenuItem; import javax.swing.JPanel; +import org.openscience.cdk.applications.plugin.*; +import org.openscience.cdk.AtomContainer; +import org.openscience.cdk.ChemModel; +import org.openscience.cdk.Molecule; +//import org.openscience.cdk.graph.invariant.IChIGenerator; +import org.openscience.cdk.tools.ChemModelManipulator; +import org.openscience.cdk.tools.LoggingTool; import org.openscience.jchempaint.JChemPaint; +import uk.ac.cam.ch.wwmm.IChIGenerator; import uk.ac.cam.ch.wwmm.WWMMCDKPluginQueryFrame; /** @@ -26,6 +31,7 @@ */ public class WWMMCDKPlugin implements CDKPluginInterface { + private JChemPaint jcp = null; private JPanel pluginPanel = null; private CDKEditBus editBus = null; private LoggingTool logger = null; @@ -80,15 +86,28 @@ */ public JMenu getMenu(){ JMenu menu = new JMenu(); + JMenuItem item0 = new JMenuItem("Query WWMM"); - QueryWWMMEvent qweUCC =new QueryWWMMEvent(); - qweUCC.setServer(pluginProps.getProperty("WWMMServer","http://wwmm.ch.cam.ac.uk/Bob")); - item0.addActionListener(qweUCC); + QueryWWMMEvent qwe =new QueryWWMMEvent(); + qwe.setServer(pluginProps.getProperty("WWMMServer","wwmm.ch.cam.ac.uk")); + item0.addActionListener(qwe); menu.add(item0); - JMenuItem item2 = new JMenuItem("Create IChI"); + JMenuItem item1 = new JMenuItem("Create IChI"); + CreateIChIEvent cie = new CreateIChIEvent(); + item1.addActionListener(cie); + menu.add(item1); + + JMenuItem item2 = new JMenuItem("Lookup UCC Xindice Database"); + LookupWWMMEvent lweUCC =new LookupWWMMEvent(); + lweUCC.setServer(pluginProps.getProperty("WWMMServer","wwmm.ch.cam.ac.uk")); + item2.addActionListener(lweUCC); menu.add(item2); - JMenuItem item3 = new JMenuItem("Lookup UCC WWMM"); + + JMenuItem item3 = new JMenuItem("Lookup Local Xindice Database"); + LookupWWMMEvent lweLocal =new LookupWWMMEvent(); + lweLocal.setServer(pluginProps.getProperty("LocalServer","localhost:8080")); + item3.addActionListener(lweLocal); menu.add(item3); return menu; @@ -106,10 +125,103 @@ } public void actionPerformed(ActionEvent event) { - WWMMCDKPluginQueryFrame frame = new WWMMCDKPluginQueryFrame((JChemPaint)editBus); - ((JChemPaint)editBus).getDesktopPane().add(frame); - frame.pack(); - frame.show(); + WWMMCDKPluginQueryFrame frame = new WWMMCDKPluginQueryFrame((JChemPaint)editBus); + ((JChemPaint)editBus).getDesktopPane().add(frame); + frame.pack(); + frame.show(); + } + } + + class CreateIChIEvent extends AbstractAction { + public void actionPerformed(ActionEvent e) { + jcp = (JChemPaint)editBus; + logger.debug("Trying to create IChI: "); + IChIGenerator generator = new IChIGenerator(); + String IChI = ""; + logger.debug("IChI = " + IChI); + try { + ChemModel model = (ChemModel)jcp.getCurrentModel().getChemModel(); + AtomContainer container = ChemModelManipulator.getAllInOneContainer(model); + Molecule molecule = new Molecule(container); + System.out.println("Before runing IChI generater: "); + IChI = generator.createIChI(molecule); + System.out.println("After runing IChI generater: " + IChI); + + //JOptionPane.showMessageDialog(jcp, message); + TextFrame frame = new TextFrame(IChI); + frame.pack(); + frame.setVisible(true); + } catch(Exception exc) { + logger.error(exc.toString()); + } + } + } + + class LookupWWMMEvent extends AbstractAction { + private String server = ""; + + public String getServer() { + return this.server; + } + + public void setServer(String server) { + this.server = server; + } + + public void actionPerformed(ActionEvent event) { + TextFrame frame = null; + jcp = (JChemPaint)editBus; + logger.debug("Trying to create IChI: "); + IChIGenerator generator = new IChIGenerator(); + String IChI = ""; + logger.debug("IChI = " + IChI); + try { + ChemModel model = (ChemModel)jcp.getCurrentModel().getChemModel(); + AtomContainer container = ChemModelManipulator.getAllInOneContainer(model); + Molecule molecule = new Molecule(container); + logger.debug("Before runing IChI generater: "); + IChI = generator.createIChI(molecule); + String message = "Generated IChI: " + IChI; + logger.debug(message); + String server = this.server; + String collection = "nci/entry"; + String basic = new GetIChIBasic().GetBasic(IChI); + String query = "//entry[//basic[.='" + basic + "']]"; + + XindiceReader xr = new XindiceReader(); + try { + xr.sendAndReceiveQuery(server, collection, query); + int count = xr.getResultCount(); + if (count == 0) { + JOptionPane.showMessageDialog(jcp, "No molecule is found in WWMM database.\n IChI Basic='" + basic + "'"); + return; + } else if (count == -1) { + JOptionPane.showMessageDialog(jcp, "The result is null.\n IChI Basic='" + basic + "'"); + return; + } else if (count == 1) { + JOptionPane.showMessageDialog(jcp, "There is 1 molecule in WWMM database.\n IChI Basic='" + basic + "'"); + Molecule m = xr.readMolecules().getMolecule(0); + new Utils().displayInJmol(m); + String result = xr.getResult(); + frame = new TextFrame(result); + frame.pack(); + frame.setVisible(true); + } else { + JOptionPane.showMessageDialog(jcp, "There are "+ Integer.toString(count) + " molecules in WWMM database.\n IChI Basic='" + basic + "'"); + Molecule m = xr.readMolecules().getMolecule(0); + new Utils().displayInJmol(m); + String result = xr.getResult(); + frame = new TextFrame(result); + frame.pack(); + frame.setVisible(true); + } + } catch (Exception eXindice) { + eXindice.printStackTrace(); + } + + } catch(Exception exc) { + logger.error(exc.toString()); + } } } @@ -150,5 +262,36 @@ } } return pluginProps; + } + + private class TextFrame extends JFrame { + public TextFrame(String ichi) { + super("IChI"); + + //Create a text area. + JTextArea textArea = new JTextArea(ichi); + textArea.setFont(new Font("Monospaced", Font.BOLD, 16)); + textArea.setLineWrap(true); + textArea.setWrapStyleWord(true); + JScrollPane areaScrollPane = new JScrollPane(textArea); + areaScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + areaScrollPane.setPreferredSize(new Dimension(1000, 700)); + areaScrollPane.setBorder( + BorderFactory.createCompoundBorder( + BorderFactory.createCompoundBorder( + BorderFactory.createTitledBorder("IChI string"), + BorderFactory.createEmptyBorder(5,5,5,5)), + areaScrollPane.getBorder())); + + JPanel contentPane = new JPanel(); + BoxLayout box = new BoxLayout(contentPane, BoxLayout.X_AXIS); + contentPane.setLayout(box); + contentPane.add(areaScrollPane); + setContentPane(contentPane); + } + + public void closeFrame() { + dispose(); + } } } Index: WWMMCDKPluginQueryFrame.java =================================================================== RCS file: /cvsroot/cdk/cdk-plugins/wwmmplugin/src/uk/ac/cam/ch/wwmm/WWMMCDKPluginQueryFrame.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- WWMMCDKPluginQueryFrame.java 3 Dec 2003 17:11:44 -0000 1.1 +++ WWMMCDKPluginQueryFrame.java 3 Dec 2003 21:09:34 -0000 1.2 @@ -302,7 +302,7 @@ //Create a text area. JTextArea textArea = new JTextArea(entry); - textArea.setFont(new Font("Courier", Font.BOLD, 16)); + textArea.setFont(new Font("Monospaced", Font.BOLD, 16)); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); JScrollPane areaScrollPane = new JScrollPane(textArea); |