From: Egon W. <eg...@us...> - 2002-07-29 15:16:32
|
Update of /cvsroot/cdk/cdk/src/org/openscience/cdk/applications In directory usw-pr-cvs1:/tmp/cvs-serv18979/src/org/openscience/cdk/applications Modified Files: Viewer.java Log Message: Fixed wishlist bug #564839: add support for SMILES in cdk-view/cdk.applications.Viewer. Index: Viewer.java =================================================================== RCS file: /cvsroot/cdk/cdk/src/org/openscience/cdk/applications/Viewer.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** Viewer.java 18 Jul 2002 12:18:04 -0000 1.2 --- Viewer.java 29 Jul 2002 15:16:27 -0000 1.3 *************** *** 30,37 **** --- 30,41 ---- import org.openscience.cdk.tools.*; import org.openscience.cdk.geometry.*; + import org.openscience.cdk.smiles.*; + import org.openscience.cdk.layout.*; import java.util.*; import java.io.*; import javax.swing.*; import java.awt.*; + import java.awt.event.*; + import javax.vecmath.*; /** *************** *** 47,50 **** --- 51,87 ---- private boolean use3D; + // view a SMILES string + public Viewer(String SMILES) { + logger = new org.openscience.cdk.tools.LoggingTool(this.getClass().getName()); + logger.dumpSystemProperties(); + logger.dumpClasspath(); + + SmilesParser sp = new SmilesParser(); + Molecule mol = null; + try { + mol = sp.parseSmiles(SMILES); + } catch(Exception exc) { + System.out.println("Problem parsing SMILES: " + exc.toString()); + } + if (mol != null) { + StructureDiagramGenerator sdg = new StructureDiagramGenerator(); + MoleculeViewer2D mv = new MoleculeViewer2D(); + Renderer2DModel r2dm = mv.getRenderer2DModel(); + r2dm.setDrawNumbers(true); + + try { + sdg.setMolecule((Molecule)mol.clone()); + sdg.generateCoordinates(new Vector2d(0,1)); + mv.setAtomContainer(sdg.getMolecule()); + mv.display(); + } catch(Exception exc) { + System.out.println("*** Exit due to an unexpected error during coordinate generation ***"); + exc.printStackTrace(); + } + } + } + + + // view a file public Viewer(String inFile, boolean useJava3D, boolean use3D) { this.useJava3D = useJava3D; *************** *** 118,121 **** --- 155,159 ---- frame.setSize(500,500); frame.setVisible(true); + frame.addWindowListener(new AppCloser()); logger.debug(".. done"); viewed = true; *************** *** 150,153 **** --- 188,193 ---- boolean use3D = true; + boolean showSmiles = false; + String filename = ""; if (args.length == 1) { *************** *** 161,164 **** --- 201,207 ---- } else if ("--no3d".equalsIgnoreCase(opt)) { use3D = false; + } else if ("--smiles".equalsIgnoreCase(opt)) { + // Filename is considered to be a smiles string + showSmiles = true; } else { System.err.println("Unknown option: " + opt); *************** *** 173,185 **** System.out.println("options: --nojava3D Disable Java3D support"); System.out.println("options: --no3D View only 2D info"); System.exit(0); } ! if (new File(filename).canRead()) { ! new Viewer(filename, useJava3D, use3D); } else { ! System.out.println("File " + filename + " does not exist!"); } } } --- 216,244 ---- System.out.println("options: --nojava3D Disable Java3D support"); System.out.println("options: --no3D View only 2D info"); + System.out.println(); + System.out.println(" or Viewer --smiles <SMILES>"); System.exit(0); } ! if (showSmiles) { ! // Filename is considered to be a smiles string ! Viewer v = new Viewer(filename); } else { ! if (new File(filename).canRead()) { ! new Viewer(filename, useJava3D, use3D); ! } else { ! System.out.println("File " + filename + " does not exist!"); ! } ! } ! } ! ! // Class to close program ! protected static final class AppCloser extends WindowAdapter { ! ! public void windowClosing(WindowEvent e) { ! System.exit(0); } } + } |