From: <mar...@us...> - 2009-12-17 15:01:06
|
Revision: 15205 http://cdk.svn.sourceforge.net/cdk/?rev=15205&view=rev Author: mark_rynbeek Date: 2009-12-17 15:00:57 +0000 (Thu, 17 Dec 2009) Log Message: ----------- Fixes for Trac Ticket #51 Modified Paths: -------------- jchempaint/trunk/src/main/org/openscience/jchempaint/controller/AbstractSelectModule.java jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/BoundsCalculator.java jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RenderingParameters.java jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/generators/SelectAtomGenerator.java jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/generators/SelectBondGenerator.java jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/selection/RectangleSelection.java jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/selection/ShapeSelection.java jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/controller/AbstractSelectModule.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/controller/AbstractSelectModule.java 2009-12-16 16:01:00 UTC (rev 15204) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/controller/AbstractSelectModule.java 2009-12-17 15:00:57 UTC (rev 15205) @@ -62,7 +62,7 @@ IChemObject highlightedAtom = getHighlighted( p, closestAtom); IBond closestBond = chemModelRelay.getClosestBond(p); IChemObject highlightedBond = getHighlighted( p, closestBond); - //in case the user either starts dragging inside the currrent selection + //in case the user either starts dragging inside the current selection //or in highlight distance to an atom, we switch to move mode, else //we start a new selection if((bounds !=null && bounds.contains(new Point2D.Double(p.x, p.y))) @@ -76,12 +76,19 @@ (int)this.chemModelRelay.getRenderer().toScreenCoordinates(p.x, p.y).y); }else{ this.selection.clear(); - this.chemModelRelay.getRenderer() - .getRenderer2DModel() - .setSelection(this.selection); - startPoint=p; } + + if (highlightedAtom!=null ) { + selection.addAtom((IAtom)highlightedAtom); + } + if (highlightedBond!=null) { + selection.addBond((IBond)highlightedBond); + } + + this.chemModelRelay.getRenderer().getRenderer2DModel().setSelection(this.selection); + startPoint=p; } + public void mouseDrag(Point2d from, Point2d to) { this.selection.addPoint(to); @@ -94,14 +101,20 @@ } public static void showMouseCursor(Point2d p, IChemModelRelay chemModelRelay){ + //We look if we the user would move when clicking and show arrows then Rectangle2D bounds=null; if(chemModelRelay.getRenderer().getRenderer2DModel().getSelection()!=null && chemModelRelay.getRenderer().getRenderer2DModel() .getSelection().isFilled()) + try { bounds = BoundsCalculator.calculateBounds(chemModelRelay .getRenderer().getRenderer2DModel().getSelection() .getConnectedAtomContainer()); + } catch (NullPointerException e) { + + bounds=null; + } IChemObject highlightedAtom = chemModelRelay.getRenderer().getRenderer2DModel().getHighlightedAtom(); IChemObject highlightedBond = chemModelRelay.getRenderer().getRenderer2DModel().getHighlightedBond(); if((bounds !=null && bounds.contains(new Point2D.Double(p.x, p.y))) @@ -113,21 +126,22 @@ } public void mouseClickedUp(Point2d p) { + this.chemModelRelay.select(selection); this.selection.reset(); if(p.equals(startPoint)){ IAtom closestAtom = chemModelRelay.getClosestAtom(p); IBond closestBond = chemModelRelay.getClosestBond(p); - IChemObject singleSelection = getHighlighted( p, + IChemObject singleSelection = getHighlighted( p, closestAtom, closestBond ); - if(singleSelection instanceof IAtom){ - IChemObjectSelection selection = new SingleSelection<IAtom>((IAtom)singleSelection); - this.chemModelRelay.select(selection); - }else if(singleSelection instanceof IBond){ - IChemObjectSelection selection = new SingleSelection<IBond>((IBond)singleSelection); - this.chemModelRelay.select(selection); - } + if(singleSelection instanceof IAtom){ + IChemObjectSelection selection = new SingleSelection<IAtom>((IAtom)singleSelection); + this.chemModelRelay.select(selection); + }else if(singleSelection instanceof IBond){ + IChemObjectSelection selection = new SingleSelection<IBond>((IBond)singleSelection); + this.chemModelRelay.select(selection); + } } this.chemModelRelay.updateView(); } Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/BoundsCalculator.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/BoundsCalculator.java 2009-12-16 16:01:00 UTC (rev 15204) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/BoundsCalculator.java 2009-12-17 15:00:57 UTC (rev 15205) @@ -98,7 +98,7 @@ public static Rectangle2D calculateBounds(IAtomContainer ac) { // this is essential, otherwise a rectangle // of (+INF, -INF, +INF, -INF) is returned! - if (ac.getAtomCount() == 0) { + if (ac==null || ac.getAtomCount() == 0) { return new Rectangle2D.Double(); } else if (ac.getAtomCount() == 1) { Point2d p = ac.getAtom(0).getPoint2d(); Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RenderingParameters.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RenderingParameters.java 2009-12-16 16:01:00 UTC (rev 15204) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RenderingParameters.java 2009-12-17 15:00:57 UTC (rev 15205) @@ -159,7 +159,7 @@ */ private double scale = 1.0; - private Color selectedPartColor = Color.lightGray; + private Color selectedPartColor = new Color(00,153, 204); //Color.lightGray; /** * The shape to display over selected atoms Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/generators/SelectAtomGenerator.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/generators/SelectAtomGenerator.java 2009-12-16 16:01:00 UTC (rev 15204) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/generators/SelectAtomGenerator.java 2009-12-17 15:00:57 UTC (rev 15205) @@ -62,18 +62,8 @@ for (IAtom atom : selectedAC.atoms()) { Point2d p = atom.getPoint2d(); IRenderingElement element; - switch (shape) { - case SQUARE: - element = - new RectangleElement( - p.x - r, p.y - r, d, d, true, - selectionColor); - break; - case OVAL: - default: - element = new OvalElement( - p.x, p.y, d, false, selectionColor); - } + element = new OvalElement( + p.x, p.y, d, false, selectionColor); selectionElements.add(element); } } Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/generators/SelectBondGenerator.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/generators/SelectBondGenerator.java 2009-12-16 16:01:00 UTC (rev 15204) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/generators/SelectBondGenerator.java 2009-12-17 15:00:57 UTC (rev 15205) @@ -23,6 +23,7 @@ import java.awt.Color; +import org.openscience.cdk.interfaces.IAtom; import org.openscience.cdk.interfaces.IAtomContainer; import org.openscience.jchempaint.renderer.RendererModel; import org.openscience.jchempaint.renderer.elements.ElementGroup; @@ -48,6 +49,7 @@ return selectionElements; if (this.autoUpdateSelection || selection.isFilled()) { IAtomContainer selectedAC = selection.getConnectedAtomContainer(); + if (selectedAC != null) { super.setOverrideColor(selectionColor); super.setOverrideBondWidth(model.getSelectionRadius()); Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/selection/RectangleSelection.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/selection/RectangleSelection.java 2009-12-16 16:01:00 UTC (rev 15204) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/selection/RectangleSelection.java 2009-12-17 15:00:57 UTC (rev 15205) @@ -35,6 +35,8 @@ public class RectangleSelection extends ShapeSelection { private Rectangle2D rectangle; + double startX=0; + double startY=0; public RectangleSelection() { this.rectangle = new Rectangle2D.Double(); @@ -53,20 +55,48 @@ return this.rectangle.contains(p.x, p.y); } + // x will be the smallest x around (the base..) + // and negative width is not allowed + // adding points always works, but setRect goes wrong. + // .. the x is actually p.x + public void addPoint(Point2d p) { - if (rectangle.getHeight() == 0 && rectangle.getWidth() == 0) { - rectangle = new Rectangle2D.Double(p.x, p.y, 1, 1); - } else { + if (rectangle.getHeight() == 0 && rectangle.getWidth() == 0) { + rectangle = new Rectangle2D.Double(p.x, p.y, 0.1, 0.1); + startX=p.x; + startY=p.y; + } + + else { if (rectangle.contains(new Point2D.Double(p.x, p.y))) { + double width=0, height=0; double x = rectangle.getX(); + if (x == startX) { + width=p.x - x; + } + else { + x=p.x; + width=Math.abs(startX-p.x); + } + double y = rectangle.getY(); - rectangle.setRect(x, y, p.x - x, p.y - y); + if (y == startY) { + height=p.y - y; + } + else { + y=p.y; + height=Math.abs(startY-p.y); + } + rectangle.setRect(x, y, width, height); + } else { rectangle.add(new Point2D.Double(p.x, p.y)); } + } } + public boolean isEmpty() { return this.rectangle.isEmpty(); } Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/selection/ShapeSelection.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/selection/ShapeSelection.java 2009-12-16 16:01:00 UTC (rev 15204) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/selection/ShapeSelection.java 2009-12-17 15:00:57 UTC (rev 15205) @@ -30,6 +30,7 @@ import javax.vecmath.Point2d; +import org.openscience.cdk.AtomContainer; import org.openscience.cdk.interfaces.IAtom; import org.openscience.cdk.interfaces.IAtomContainer; import org.openscience.cdk.interfaces.IBond; @@ -52,9 +53,17 @@ public abstract boolean contains(Point2d p); public abstract void addPoint(Point2d p); - + public abstract boolean isEmpty(); + public void addAtom(IAtom atom) { + atoms.add(atom); + } + + public void addBond(IBond bond) { + bonds.add(bond); + } + /** * Call this after the drawing has finished */ @@ -103,23 +112,17 @@ * @see org.openscience.cdk.renderer.ISelection#getConnectedAtomContainer() */ public IAtomContainer getConnectedAtomContainer() { - // you should really have used the isFilled method... - if (atoms.size() == 0) return null; - IAtomContainer ac = atoms.get(0).getBuilder().newAtomContainer(); - for (IAtom atom : atoms) { - ac.addAtom(atom); + IAtomContainer ac = new AtomContainer(); + if (atoms.size() != 0) { + ac = atoms.get(0).getBuilder().newAtomContainer(); + for (IAtom atom : atoms) { + ac.addAtom(atom); + } } for (IBond bond : bonds) { - boolean addBond = true; - for (IAtom atom : bond.atoms()) { - if (!ac.contains(atom)) addBond = false; - } - - if (addBond) { - ac.addBond(bond); - } + ac.addBond(bond); } return ac; Modified: jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java =================================================================== --- jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java 2009-12-16 16:01:00 UTC (rev 15204) +++ jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java 2009-12-17 15:00:57 UTC (rev 15205) @@ -414,7 +414,7 @@ applet.menuItem("save").click(); DialogFixture dialog = applet.dialog(); JComboBox combobox = dialog.robot.finder().find(new ComboBoxTextComponentMatcher("org.openscience.jchempaint.io.JCPFileFilter")); - combobox.setSelectedItem(combobox.getItemAt(5)); + combobox.setSelectedItem(combobox.getItemAt(6)); JTextComponentFixture text = dialog.textBox(); File file=new File(System.getProperty("java.io.tmpdir")+File.separator+"test.mol"); if(file.exists()) @@ -573,4 +573,5 @@ Assert.assertEquals(3,panel.getChemModel().getMoleculeSet().getAtomContainerCount()); Assert.assertEquals(22,panel.getChemModel().getMoleculeSet().getAtomContainer(2).getAtomCount()); } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2009-12-29 14:16:33
|
Revision: 15239 http://cdk.svn.sourceforge.net/cdk/?rev=15239&view=rev Author: shk3 Date: 2009-12-29 14:16:24 +0000 (Tue, 29 Dec 2009) Log Message: ----------- for headless javadoc generation with the param doclet, we need paraminfo accessible as static (else a headless exception is thrown). Modified Paths: -------------- jchempaint/trunk/src/main/org/openscience/jchempaint/applet/JChemPaintAbstractApplet.java jchempaint/trunk/src/util/JCPParamsTaglet.java Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/applet/JChemPaintAbstractApplet.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/applet/JChemPaintAbstractApplet.java 2009-12-29 13:11:14 UTC (rev 15238) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/applet/JChemPaintAbstractApplet.java 2009-12-29 14:16:24 UTC (rev 15239) @@ -94,7 +94,7 @@ private static String appletInfo = "JChemPaint Applet. See http://cdk.sourceforge.net " + "for more information"; - private static String[][] paramInfo = { + public static String[][] paramInfo = { { "background", "color", "Background color as integer or hex starting with #" }, { "atomNumbersVisible", "true or false", Modified: jchempaint/trunk/src/util/JCPParamsTaglet.java =================================================================== --- jchempaint/trunk/src/util/JCPParamsTaglet.java 2009-12-29 13:11:14 UTC (rev 15238) +++ jchempaint/trunk/src/util/JCPParamsTaglet.java 2009-12-29 14:16:24 UTC (rev 15239) @@ -18,7 +18,7 @@ */ import java.util.Map; -import org.openscience.jchempaint.applet.JChemPaintEditorApplet; +import org.openscience.jchempaint.applet.JChemPaintAbstractApplet; import com.sun.javadoc.Tag; import com.sun.tools.doclets.Taglet; @@ -76,7 +76,6 @@ } public String toString(Tag tag) { - new JChemPaintEditorApplet(); return expand(tag); } @@ -93,7 +92,7 @@ } private String expand(Tag tag) { - String[][] params = new JChemPaintEditorApplet().getParameterInfo(); + String[][] params = JChemPaintAbstractApplet.paramInfo; StringBuffer value = new StringBuffer(); value.append("</DL></DT></DD><br><br>The following applet params can be used:<br>"); for(int i=0;i<params.length;i++){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2010-02-11 12:05:00
|
Revision: 15382 http://cdk.svn.sourceforge.net/cdk/?rev=15382&view=rev Author: mark_rynbeek Date: 2010-02-11 12:04:49 +0000 (Thu, 11 Feb 2010) Log Message: ----------- Modifications to make all Junit tests for applet work again Modified Paths: -------------- jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintPanel.java jchempaint/trunk/src/test/org/openscience/jchempaint/AbstractAppletTest.java jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java Added Paths: ----------- jchempaint/trunk/src/main/org/openscience/jchempaint/resources/small-bin/selectsquare.gif Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintPanel.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintPanel.java 2010-02-11 09:23:51 UTC (rev 15381) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintPanel.java 2010-02-11 12:04:49 UTC (rev 15382) @@ -413,8 +413,8 @@ //the newActiveModule should always be an AddAtomModule, but we still check if(newActiveModule instanceof AddAtomModule){ if(((AddAtomModule)newActiveModule).getStereoForNewBond().equals(IBond.Stereo.NONE)){ - this.buttons.get("bond").setBackground(Color.GRAY); - lastSecondaryButton = this.buttons.get("bond"); + this.buttons.get("bondTool").setBackground(Color.GRAY); + lastSecondaryButton = this.buttons.get("bondTool"); }else if(((AddAtomModule)newActiveModule).getStereoForNewBond().equals(IBond.Stereo.UP)){ this.buttons.get("up_bond").setBackground(Color.GRAY); lastSecondaryButton = this.buttons.get("up_bond"); @@ -429,8 +429,8 @@ lastSecondaryButton = this.buttons.get("undefined_stereo_bond"); } }else{ - this.buttons.get("bond").setBackground(Color.GRAY); - lastSecondaryButton = this.buttons.get("bond"); + this.buttons.get("bondTool").setBackground(Color.GRAY); + lastSecondaryButton = this.buttons.get("bondTool"); } } if(!(newActiveModule instanceof MoveModule)){ Added: jchempaint/trunk/src/main/org/openscience/jchempaint/resources/small-bin/selectsquare.gif =================================================================== (Binary files differ) Property changes on: jchempaint/trunk/src/main/org/openscience/jchempaint/resources/small-bin/selectsquare.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: jchempaint/trunk/src/test/org/openscience/jchempaint/AbstractAppletTest.java =================================================================== --- jchempaint/trunk/src/test/org/openscience/jchempaint/AbstractAppletTest.java 2010-02-11 09:23:51 UTC (rev 15381) +++ jchempaint/trunk/src/test/org/openscience/jchempaint/AbstractAppletTest.java 2010-02-11 12:04:49 UTC (rev 15382) @@ -44,6 +44,7 @@ applet.show(); JPanelFixture jcppanel=applet.panel("appletframe"); panel = (JChemPaintPanel)jcppanel.target; + viewer.setSize(700,700); } protected Point2d getBondPoint(JChemPaintPanel panel, int bondnumber) { Modified: jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java =================================================================== --- jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java 2010-02-11 09:23:51 UTC (rev 15381) +++ jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java 2010-02-11 12:04:49 UTC (rev 15382) @@ -21,17 +21,18 @@ applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), movetopint, MouseButton.LEFT_BUTTON,1); Assert.assertEquals(1, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); applet.button("select").click(); - movetopint=new Point(110,110); + movetopint=new Point(80,80); applet.panel("renderpanel").robot.moveMouse(applet.panel("renderpanel").component(),movetopint); applet.panel("renderpanel").robot.pressMouse(MouseButton.LEFT_BUTTON); - movetopint=new Point(90,90); + movetopint=new Point(85,85); //little fix by MR, do small initial drag first applet.panel("renderpanel").robot.moveMouse(applet.panel("renderpanel").component(),movetopint); + movetopint=new Point(120,120); + applet.panel("renderpanel").robot.moveMouse(applet.panel("renderpanel").component(),movetopint); applet.panel("renderpanel").robot.releaseMouse(MouseButton.LEFT_BUTTON); Assert.assertEquals(1, panel.getRenderPanel().getRenderer().getRenderer2DModel().getSelection().getConnectedAtomContainer().getAtomCount()); restoreModelToEmpty(); } - @Test public void testMove() throws InterruptedException{ JPanelFixture jcppanel=applet.panel("appletframe"); JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; @@ -82,16 +83,15 @@ @Test public void testBug2858663(){ JPanelFixture jcppanel=applet.panel("appletframe"); JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; - applet.button("bond").click(); + applet.button("bondTool").click(); applet.click(); Assert.assertEquals(2,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); Assert.assertEquals(1,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBondCount()); restoreModelToEmpty(); } - /* - * @cdk.bug 2859344 /6 - */ + + // @cdk.bug 2859344 /6 @Test public void overwriteStereo(){ JPanelFixture jcppanel=applet.panel("appletframe"); JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; @@ -128,9 +128,8 @@ genericStereoBondTest(IBond.Stereo.UP_OR_DOWN); } - /* - * @cdk.bug 2859344 /7 - */ + + //@cdk.bug 2859344 /7 @Test public void testUndefinedEzBond(){ genericStereoBondTest(IBond.Stereo.E_OR_Z); } @@ -138,13 +137,12 @@ @Test public void testNoneBond(){ genericStereoBondTest(IBond.Stereo.NONE); } - /* - * @cdk.bug 2860015 - */ + + //@cdk.bug 2860015 @Test public void testBug2860015(){ JPanelFixture jcppanel=applet.panel("appletframe"); JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; - applet.button("bond").click(); + applet.button("bondTool").click(); applet.click(); applet.click(); applet.click(); @@ -170,12 +168,9 @@ restoreModelToEmpty(); } - /** - * This is a test for overwriting of stereo bonds. Any stereo bond - * must overwrite all others and flip itself. - * - * @param directionToTest - */ + + // This is a test for overwriting of stereo bonds. Any stereo bond + // must overwrite all others and flip itself. private void genericStereoBondTest(IBond.Stereo directionToTest){ JPanelFixture jcppanel=applet.panel("appletframe"); JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; @@ -209,7 +204,7 @@ if(directionToTest==IBond.Stereo.E_OR_Z) applet.button("undefined_stereo_bond").click(); if(directionToTest==IBond.Stereo.NONE) - applet.button("bond").click(); + applet.button("bondTool").click(); for(int i=0;i<5;i++){ boolean self=false; if(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(i).getStereo()==directionToTest) @@ -259,5 +254,4 @@ Assert.assertEquals(IBond.Stereo.DOWN, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(8).getStereo()); restoreModelToEmpty(); } - } Modified: jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java =================================================================== --- jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java 2010-02-11 09:23:51 UTC (rev 15381) +++ jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java 2010-02-11 12:04:49 UTC (rev 15382) @@ -16,14 +16,14 @@ import org.openscience.jchempaint.renderer.selection.SingleSelection; public class JCPEditorAppletDrawingTest extends AbstractAppletTest{ - + @Test public void testAddBond() throws CDKException, ClassNotFoundException, IOException, CloneNotSupportedException { restoreModelWithBasicmol(); JPanelFixture jcppanel=applet.panel("appletframe"); JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; int oldAtomCount=panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount(); //using bond button - applet.button("bond").click(); + applet.button("bondTool").click(); //can we add a new bond? Point2d moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().x,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(1).getPoint2d().y); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); @@ -101,11 +101,13 @@ JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; int oldAtomCount=panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount(); applet.button("O").click(); - Assert.assertEquals("O",panel.get2DHub().getActiveDrawModule().getID()); + Assert.assertEquals("O",panel.get2DHub().getActiveDrawModule().getID()); + Point2d moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().x,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().y); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); Assert.assertEquals("O",panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getSymbol()); - applet.button("bond").click(); + + applet.button("bondTool").click(); moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().x,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().y); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); Assert.assertEquals(oldAtomCount+1, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); @@ -123,25 +125,27 @@ Point2d moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().x,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().y); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); Assert.assertEquals("Li",panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getSymbol()); - applet.button("bond").click(); + applet.button("bondTool").click(); moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().x,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().y); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); Assert.assertEquals(oldAtomCount+1, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); Assert.assertEquals("Li",panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()-1).getSymbol()); } - @Test public void testEnterelement() throws CDKException, ClassNotFoundException, IOException, CloneNotSupportedException { JPanelFixture jcppanel=applet.panel("appletframe"); JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; int oldAtomCount=panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount(); applet.button("enterelement").click(); + Point2d moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().x,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().y); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); + + DialogFixture dialog = applet.dialog(); dialog.textBox().setText("U"); dialog.button("ok").click(); Assert.assertEquals("U",panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getSymbol()); - applet.button("bond").click(); + applet.button("bondTool").click(); moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().x,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().y); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); Assert.assertEquals(oldAtomCount+1, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); @@ -264,7 +268,6 @@ Assert.assertEquals(oldBondCount-2, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBondCount()+panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); restoreModelWithBasicmol(); } - @Test public void selectByDoubleClick(){ restoreModelWithBasicmol(); JPanelFixture jcppanel=applet.panel("appletframe"); @@ -272,8 +275,9 @@ int oldAtomCount=panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount(); //we add a hexagon applet.button("hexagon").click(); - Point2d moveto=new Point2d(100,100); + Point2d moveto=new Point2d(200,100); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); + Assert.assertEquals(oldAtomCount+6, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()+panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); applet.button("select").click(); //double click on atom @@ -281,7 +285,7 @@ applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,2); Assert.assertEquals(oldAtomCount, panel.getRenderPanel().getRenderer().getRenderer2DModel().getSelection().getConnectedAtomContainer().getAtomCount()); } - + @Test public void mergeAndUndoRedo(){ restoreModelWithBasicmol(); JPanelFixture jcppanel=applet.panel("appletframe"); Modified: jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java =================================================================== --- jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java 2010-02-11 09:23:51 UTC (rev 15381) +++ jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java 2010-02-11 12:04:49 UTC (rev 15382) @@ -552,10 +552,10 @@ restoreModelWithBasicmol(); applet.menuItem("pasteTemplate").click(); DialogFixture dialog = applet.dialog("templates"); - JButtonFixture penicillinbutton = new JButtonFixture(dialog.robot, dialog.robot.finder().find(new ButtonTextComponentMatcher("Penicillin"))); - penicillinbutton.click(); + JButtonFixture morphineButton = new JButtonFixture(dialog.robot, dialog.robot.finder().find(new ButtonTextComponentMatcher("Morphine"))); + morphineButton.click(); Assert.assertEquals(2,panel.getChemModel().getMoleculeSet().getAtomContainerCount()); - Assert.assertEquals(18,panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); + Assert.assertEquals(22,panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); } @Test public void testMenuTemplatesAlkaloids() throws CDKException, ClassNotFoundException, IOException, CloneNotSupportedException { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2010-02-15 14:22:46
|
Revision: 15407 http://cdk.svn.sourceforge.net/cdk/?rev=15407&view=rev Author: mark_rynbeek Date: 2010-02-15 14:22:38 +0000 (Mon, 15 Feb 2010) Log Message: ----------- Bugfix for Trac# 79: Undo/redo (when pasting templates) worked only partly. Added test case. Modified Paths: -------------- jchempaint/trunk/src/main/org/openscience/jchempaint/action/CopyPasteAction.java jchempaint/trunk/src/main/org/openscience/jchempaint/application/JChemPaint.java jchempaint/trunk/src/main/org/openscience/jchempaint/controller/undoredo/AddAtomsAndBondsEdit.java jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletUndoRedoTest.java Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/action/CopyPasteAction.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/action/CopyPasteAction.java 2010-02-14 22:30:28 UTC (rev 15406) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/action/CopyPasteAction.java 2010-02-15 14:22:38 UTC (rev 15407) @@ -28,7 +28,6 @@ */ package org.openscience.jchempaint.action; -import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.DataFlavor; @@ -62,7 +61,6 @@ import org.openscience.cdk.interfaces.IReaction; import org.openscience.cdk.io.CMLReader; import org.openscience.cdk.io.IChemObjectWriter; -import org.openscience.cdk.io.INChIPlainTextReader; import org.openscience.cdk.io.ISimpleChemObjectReader; import org.openscience.cdk.io.MDLReader; import org.openscience.cdk.io.MDLWriter; @@ -79,7 +77,6 @@ import org.openscience.cdk.tools.manipulator.ReactionManipulator; import org.openscience.jchempaint.GT; import org.openscience.jchempaint.JChemPaintPanel; -import org.openscience.jchempaint.applet.JChemPaintAbstractApplet; import org.openscience.jchempaint.application.JChemPaint; import org.openscience.jchempaint.controller.ControllerHub; import org.openscience.jchempaint.controller.MoveModule; @@ -481,7 +478,8 @@ * @param renderModel The current renderer model. */ private void insertStructure(IMolecule toPaste, RendererModel renderModel) { - //add implicit hs + + //add implicit hs if(jcpPanel.get2DHub().getController2DModel().getAutoUpdateImplicitHydrogens()){ try { AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(toPaste); @@ -497,21 +495,21 @@ toPaste.getAtom(i).setValency(null); } } + //somehow, in case of single atoms, there are no coordinates if(toPaste.getAtomCount()==1 && toPaste.getAtom(0).getPoint2d()==null) toPaste.getAtom(0).setPoint2d(new Point2d(0,0)); + JChemPaint.generateModel(jcpPanel, toPaste, false,true); jcpPanel.get2DHub().fireStructureChangedEvent(); - - //We select the inserted structure - IChemObjectSelection selection - = new LogicalSelection(LogicalSelection.Type.ALL); + //We select the inserted structure + IChemObjectSelection selection = new LogicalSelection(LogicalSelection.Type.ALL); selection.select(ChemModelManipulator.newChemModel(toPaste)); renderModel.setSelection(selection); - SelectSquareModule succusorModule = new SelectSquareModule(jcpPanel.get2DHub()); - succusorModule.setID("select"); - MoveModule newActiveModule = new MoveModule(jcpPanel.get2DHub(), succusorModule); + SelectSquareModule successorModule = new SelectSquareModule(jcpPanel.get2DHub()); + successorModule.setID("select"); + MoveModule newActiveModule = new MoveModule(jcpPanel.get2DHub(), successorModule); newActiveModule.setID("move"); jcpPanel.get2DHub().setActiveDrawModule(newActiveModule); } Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/application/JChemPaint.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/application/JChemPaint.java 2010-02-14 22:30:28 UTC (rev 15406) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/application/JChemPaint.java 2010-02-15 14:22:38 UTC (rev 15407) @@ -528,7 +528,6 @@ public static void generateModel(AbstractJChemPaintPanel chemPaintPanel, IMolecule molecule, boolean generateCoordinates, boolean shiftPasted) { if (molecule == null) return; - // get relevant bits from active model IChemModel chemModel = chemPaintPanel.getChemModel(); IMoleculeSet moleculeSet = chemModel.getMoleculeSet(); if (moleculeSet == null) { @@ -537,25 +536,32 @@ // On copy & paste on top of an existing drawn structure, prevent the // pasted section to be drawn exactly on top or to far away from the - // original by shifting it to a fixed position next to it. - if (shiftPasted && moleculeSet.getAtomContainer(0)!=null && moleculeSet.getAtomContainer(0).getAtomCount()!=0) { - // where is the right border of the current structure? - double maxXCurr = Double.NEGATIVE_INFINITY; - for (IAtom atom : moleculeSet.getAtomContainer(0).atoms()) { - if(atom.getPoint2d().x>maxXCurr) - maxXCurr = atom.getPoint2d().x; - } - // where is the left border of the pasted structure? + // original by shifting it to a fixed position next to it. + + if (shiftPasted) { + double maxXCurr = Double.NEGATIVE_INFINITY; double minXPaste = Double.POSITIVE_INFINITY; - for (IAtom atom : molecule.atoms()) { - if(atom.getPoint2d().x<minXPaste) - minXPaste = atom.getPoint2d().x; + + for (IAtomContainer atc : moleculeSet.atomContainers()) { + // Detect the right border of the current structure.. + for (IAtom atom : atc.atoms()) { + if(atom.getPoint2d().x>maxXCurr) + maxXCurr = atom.getPoint2d().x; + } + // Detect the left border of the pasted structure.. + for (IAtom atom : molecule.atoms()) { + if(atom.getPoint2d().x<minXPaste) + minXPaste = atom.getPoint2d().x; + } } - // shift the pasted structure to be nicely next to the existing one. - final int MARGIN=1; - final double SHIFT = maxXCurr - minXPaste; - for (IAtom atom : molecule.atoms()) { - atom.setPoint2d(new Point2d (atom.getPoint2d().x+MARGIN+SHIFT, atom.getPoint2d().y )); + + if (maxXCurr != Double.NEGATIVE_INFINITY && minXPaste != Double.POSITIVE_INFINITY) { + // Shift the pasted structure to be nicely next to the existing one. + final int MARGIN=1; + final double SHIFT = maxXCurr - minXPaste; + for (IAtom atom : molecule.atoms()) { + atom.setPoint2d(new Point2d (atom.getPoint2d().x+MARGIN+SHIFT, atom.getPoint2d().y )); + } } } @@ -577,16 +583,15 @@ else moleculeSet.addAtomContainer(molecule); - IUndoRedoFactory i= chemPaintPanel.get2DHub().getUndoRedoFactory(); - UndoRedoHandler ih= chemPaintPanel.get2DHub().getUndoRedoHandler(); - if (i!=null) { - IUndoRedoable undoredo = i.getAddAtomsAndBondsEdit(chemPaintPanel.get2DHub().getIChemModel(), + IUndoRedoFactory undoRedoFactory= chemPaintPanel.get2DHub().getUndoRedoFactory(); + UndoRedoHandler undoRedoHandler= chemPaintPanel.get2DHub().getUndoRedoHandler(); + + if (undoRedoFactory!=null) { + IUndoRedoable undoredo = undoRedoFactory.getAddAtomsAndBondsEdit(chemPaintPanel.get2DHub().getIChemModel(), molecule, null, "Paste", chemPaintPanel.get2DHub()); - ih.postEdit(undoredo); + undoRedoHandler.postEdit(undoredo); } - //moleculeSet.addMolecule(molecule); // don't create another atom container... - ControllerHub.avoidOverlap(chemModel); chemPaintPanel.getChemModel().setMoleculeSet(moleculeSet); chemPaintPanel.get2DHub().updateView(); } Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/controller/undoredo/AddAtomsAndBondsEdit.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/controller/undoredo/AddAtomsAndBondsEdit.java 2010-02-14 22:30:28 UTC (rev 15406) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/controller/undoredo/AddAtomsAndBondsEdit.java 2010-02-15 14:22:38 UTC (rev 15407) @@ -23,7 +23,13 @@ */ package org.openscience.jchempaint.controller.undoredo; +import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; import org.openscience.cdk.interfaces.IAtom; import org.openscience.cdk.interfaces.IAtomContainer; @@ -91,16 +97,25 @@ ChemModelManipulator.getRelevantAtomContainer(chemModel, removedAtomContainer.getAtom(0)).remove(removedAtomContainer); chemModel.getMoleculeSet().addAtomContainer(removedAtomContainer); } - for (int i = 0; i < undoRedoContainer.getBondCount(); i++) { - IBond bond = undoRedoContainer.getBond(i); + + IBond[] bonds = new IBond[undoRedoContainer.getBondCount()]; + int idx=0; + for (IBond bond : undoRedoContainer.bonds()) + bonds[idx++]=bond; + for (IBond bond : bonds){ containerToAddTo = ChemModelManipulator.getRelevantAtomContainer(chemModel, bond); containerToAddTo.removeBond(bond); } - for (int i = 0; i < undoRedoContainer.getAtomCount(); i++) { - IAtom atom = undoRedoContainer.getAtom(i); + + IAtom[] atoms = new IAtom[undoRedoContainer.getAtomCount()]; + idx=0; + for (IAtom atom : undoRedoContainer.atoms()) + atoms[idx++]=atom; + for (IAtom atom : atoms){ containerToAddTo = ChemModelManipulator.getRelevantAtomContainer(chemModel, atom); containerToAddTo.removeAtom(atom); } + if(chemModelRelay.getIChemModel().getMoleculeSet().getAtomContainerCount()>1) ControllerHub.removeEmptyContainers(chemModelRelay.getIChemModel()); Iterator<IAtomContainer> containers = ChemModelManipulator.getAllAtomContainers(chemModel).iterator(); Modified: jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletUndoRedoTest.java =================================================================== --- jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletUndoRedoTest.java 2010-02-14 22:30:28 UTC (rev 15406) +++ jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletUndoRedoTest.java 2010-02-15 14:22:38 UTC (rev 15407) @@ -9,9 +9,13 @@ import junit.framework.Assert; import org.fest.swing.core.MouseButton; +import org.fest.swing.fixture.DialogFixture; +import org.fest.swing.fixture.JButtonFixture; import org.junit.BeforeClass; import org.junit.Test; +import org.openscience.cdk.interfaces.IAtomContainer; import org.openscience.cdk.interfaces.IChemModel; +import org.openscience.jchempaint.matchers.ButtonTextComponentMatcher; public class JCPEditorAppletUndoRedoTest extends AbstractAppletTest { @@ -20,7 +24,7 @@ @BeforeClass public static void setUp() { AbstractAppletTest.setUp(); } - + @Test public void testUndo() throws CloneNotSupportedException{ //These should be models.add((IChemModel)panel.getChemModel()); //but due to a bug in cdk, clone changes the model @@ -84,4 +88,37 @@ } } + /** + * Tests bug fixed for JChempaint trac Ticket #79 (new defect): + * Undo/redo when pasting templates works partly. + */ + @Test public void testUndoTemplates() throws CloneNotSupportedException{ + applet.menuItem("new").click(); + models.add((IChemModel)panel.getChemModel()); + applet.menuItem("pasteTemplate").click(); + DialogFixture dialog = applet.dialog("templates"); + JButtonFixture templateButton = new JButtonFixture(dialog.robot, dialog.robot.finder().find(new ButtonTextComponentMatcher("Cysteine"))); + templateButton.click(); + Assert.assertEquals(7,totalAtomCount()); + Assert.assertEquals(1,panel.getChemModel().getMoleculeSet().getAtomContainerCount()); + + applet.menuItem("pasteTemplate").click(); + dialog = applet.dialog("templates"); + templateButton = new JButtonFixture(dialog.robot, dialog.robot.finder().find(new ButtonTextComponentMatcher("Leucine"))); + templateButton.click(); + Assert.assertEquals(16,totalAtomCount()); + Assert.assertEquals(2,panel.getChemModel().getMoleculeSet().getAtomContainerCount()); + + applet.button("undo").click(); + Assert.assertEquals(7,totalAtomCount()); + Assert.assertEquals(1,panel.getChemModel().getMoleculeSet().getAtomContainerCount()); + } + + private int totalAtomCount () { + int totalAtomCount=0; + for(IAtomContainer atc: panel.getChemModel().getMoleculeSet().atomContainers()) { + totalAtomCount+=atc.getAtomCount(); + } + return totalAtomCount; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2010-02-16 10:31:59
|
Revision: 15408 http://cdk.svn.sourceforge.net/cdk/?rev=15408&view=rev Author: mark_rynbeek Date: 2010-02-16 10:31:48 +0000 (Tue, 16 Feb 2010) Log Message: ----------- Bugfix for Trax ticket #80. New JUnit tests provided. Modified Paths: -------------- jchempaint/trunk/src/main/org/openscience/jchempaint/controller/ControllerHub.java jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/controller/ControllerHub.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/controller/ControllerHub.java 2010-02-15 14:22:38 UTC (rev 15407) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/controller/ControllerHub.java 2010-02-16 10:31:48 UTC (rev 15408) @@ -2259,17 +2259,17 @@ changeModeListeners.remove(listener); } - //OK TODO this could do with less partitioning /* (non-Javadoc) * @see org.openscience.cdk.controller.IChemModelRelay#removeBondAndLoneAtoms(org.openscience.cdk.interfaces.IBond) */ public void removeBondAndLoneAtoms(IBond bondToRemove) { + + IAtomContainer container = ChemModelManipulator.getRelevantAtomContainer(chemModel,bondToRemove.getAtom(0)); IAtomContainer undoRedoContainer = chemModel.getBuilder().newAtomContainer(); + undoRedoContainer.addBond(bondToRemove); + removeBondWithoutUndo(bondToRemove); - undoRedoContainer.addBond(bondToRemove); - IAtomContainer container = - ChemModelManipulator.getRelevantAtomContainer(chemModel, - bondToRemove.getAtom(0)); + if (container != null) { for(int i=0;i<2;i++){ if(container.getConnectedAtomsCount(bondToRemove.getAtom(i))==0){ Modified: jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java =================================================================== --- jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java 2010-02-15 14:22:38 UTC (rev 15407) +++ jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java 2010-02-16 10:31:48 UTC (rev 15408) @@ -1,257 +1,427 @@ package org.openscience.jchempaint; import java.awt.Point; +import java.io.IOException; import javax.vecmath.Point2d; import org.fest.swing.core.ComponentDragAndDrop; import org.fest.swing.core.MouseButton; +import org.fest.swing.fixture.DialogFixture; +import org.fest.swing.fixture.JButtonFixture; import org.fest.swing.fixture.JPanelFixture; +import org.fest.swing.fixture.JPopupMenuFixture; import org.junit.Assert; import org.junit.Test; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.interfaces.IBond; +import org.openscience.jchempaint.matchers.ButtonTextComponentMatcher; +import org.openscience.jchempaint.renderer.selection.SingleSelection; -public class JCPEditorAppletBugsTest extends AbstractAppletTest{ - @Test public void testSquareSelectSingleAtom() { - JPanelFixture jcppanel=applet.panel("appletframe"); - JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; +public class JCPEditorAppletBugsTest extends AbstractAppletTest { + + @Test + public void testSquareSelectSingleAtom() { + JPanelFixture jcppanel = applet.panel("appletframe"); + JChemPaintPanel panel = (JChemPaintPanel) jcppanel.target; applet.button("C").click(); - Point movetopint=new Point(100,100); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), movetopint, MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(1, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); + Point movetopint = new Point(100, 100); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), movetopint, MouseButton.LEFT_BUTTON, 1); + Assert.assertEquals(1, panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtomCount()); applet.button("select").click(); - movetopint=new Point(80,80); - applet.panel("renderpanel").robot.moveMouse(applet.panel("renderpanel").component(),movetopint); + movetopint = new Point(80, 80); + applet.panel("renderpanel").robot.moveMouse(applet.panel("renderpanel") + .component(), movetopint); applet.panel("renderpanel").robot.pressMouse(MouseButton.LEFT_BUTTON); - movetopint=new Point(85,85); //little fix by MR, do small initial drag first - applet.panel("renderpanel").robot.moveMouse(applet.panel("renderpanel").component(),movetopint); - movetopint=new Point(120,120); - applet.panel("renderpanel").robot.moveMouse(applet.panel("renderpanel").component(),movetopint); + movetopint = new Point(85, 85); // little fix by MR, do small initial + // drag first + applet.panel("renderpanel").robot.moveMouse(applet.panel("renderpanel") + .component(), movetopint); + movetopint = new Point(120, 120); + applet.panel("renderpanel").robot.moveMouse(applet.panel("renderpanel") + .component(), movetopint); applet.panel("renderpanel").robot.releaseMouse(MouseButton.LEFT_BUTTON); - Assert.assertEquals(1, panel.getRenderPanel().getRenderer().getRenderer2DModel().getSelection().getConnectedAtomContainer().getAtomCount()); + Assert.assertEquals(1, panel.getRenderPanel().getRenderer() + .getRenderer2DModel().getSelection() + .getConnectedAtomContainer().getAtomCount()); restoreModelToEmpty(); } - - @Test public void testMove() throws InterruptedException{ - JPanelFixture jcppanel=applet.panel("appletframe"); - JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; - //we draw a hexagon - applet.button("hexagon").click(); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point(100, 100), MouseButton.LEFT_BUTTON,1); - //select this - applet.button("select").click(); - Point movetopint=new Point(50,50); - ComponentDragAndDrop dandd = new ComponentDragAndDrop(applet.panel("renderpanel").robot); - dandd.drag(applet.panel("renderpanel").component(), movetopint); - movetopint=new Point(300,300); - dandd.drop(applet.panel("renderpanel").component(), movetopint); - Point2d oldcoord=new Point2d(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().x,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d().y); - //switch to move mode should happen automatically - applet.panel("renderpanel").robot.moveMouse(applet.panel("renderpanel").target,new Point(100,100)); - applet.panel("renderpanel").robot.pressMouse(MouseButton.LEFT_BUTTON); - applet.panel("renderpanel").robot.moveMouse(applet.panel("renderpanel").target,new Point(150,150)); - applet.panel("renderpanel").robot.releaseMouseButtons(); - Assert.assertFalse(oldcoord.equals(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d())); - } - - @Test public void testSetSmiles() throws CDKException{ - JPanelFixture jcppanel=applet.panel("appletframe"); - JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; - jcpApplet.setSmiles("CCCC"); - panel.get2DHub().updateView(); - Assert.assertEquals(4,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); - restoreModelToEmpty(); - } - @Test public void testSetMolFile() throws CDKException{ - JPanelFixture jcppanel=applet.panel("appletframe"); - JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; - jcpApplet.setMolFile("\n CDK 1/19/07,10:3\n\n 2 1 0 0 0 0 0 0 0 0999 V2000 \n 2.520000 10.220000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.270000 10.470000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 1 1 0 0 0 0 \nM END"); - Assert.assertEquals(2,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); - restoreModelToEmpty(); - } - - @Test public void testGetMolFile() throws CDKException{ - applet.button("hexagon").click(); - Point movetopint=new Point(100,100); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), movetopint, MouseButton.LEFT_BUTTON,1); - Assert.assertTrue(jcpApplet.getMolFile().indexOf("6 6 0 0 0 0 0 0 0 0999 V2000")>0); - restoreModelToEmpty(); + @Test + public void testMove() throws InterruptedException { + JPanelFixture jcppanel = applet.panel("appletframe"); + JChemPaintPanel panel = (JChemPaintPanel) jcppanel.target; + // we draw a hexagon + applet.button("hexagon").click(); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point(100, 100), MouseButton.LEFT_BUTTON, 1); + // select this + applet.button("select").click(); + Point movetopint = new Point(50, 50); + ComponentDragAndDrop dandd = new ComponentDragAndDrop(applet + .panel("renderpanel").robot); + dandd.drag(applet.panel("renderpanel").component(), movetopint); + movetopint = new Point(300, 300); + dandd.drop(applet.panel("renderpanel").component(), movetopint); + Point2d oldcoord = new Point2d(panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtom(0).getPoint2d().x, panel + .getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(0) + .getPoint2d().y); + // switch to move mode should happen automatically + applet.panel("renderpanel").robot.moveMouse( + applet.panel("renderpanel").target, new Point(100, 100)); + applet.panel("renderpanel").robot.pressMouse(MouseButton.LEFT_BUTTON); + applet.panel("renderpanel").robot.moveMouse( + applet.panel("renderpanel").target, new Point(150, 150)); + applet.panel("renderpanel").robot.releaseMouseButtons(); + Assert.assertFalse(oldcoord.equals(panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getAtom(0).getPoint2d())); } - - @Test public void testBug2858663(){ - JPanelFixture jcppanel=applet.panel("appletframe"); - JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; - applet.button("bondTool").click(); - applet.click(); - Assert.assertEquals(2,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); - Assert.assertEquals(1,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBondCount()); - restoreModelToEmpty(); + + @Test + public void testSetSmiles() throws CDKException { + JPanelFixture jcppanel = applet.panel("appletframe"); + JChemPaintPanel panel = (JChemPaintPanel) jcppanel.target; + jcpApplet.setSmiles("CCCC"); + panel.get2DHub().updateView(); + Assert.assertEquals(4, panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtomCount()); + restoreModelToEmpty(); } - - + + @Test + public void testSetMolFile() throws CDKException { + JPanelFixture jcppanel = applet.panel("appletframe"); + JChemPaintPanel panel = (JChemPaintPanel) jcppanel.target; + jcpApplet + .setMolFile("\n CDK 1/19/07,10:3\n\n 2 1 0 0 0 0 0 0 0 0999 V2000 \n 2.520000 10.220000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.270000 10.470000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 1 1 0 0 0 0 \nM END"); + Assert.assertEquals(2, panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtomCount()); + restoreModelToEmpty(); + } + + @Test + public void testGetMolFile() throws CDKException { + applet.button("hexagon").click(); + Point movetopint = new Point(100, 100); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), movetopint, MouseButton.LEFT_BUTTON, 1); + Assert.assertTrue(jcpApplet.getMolFile().indexOf( + "6 6 0 0 0 0 0 0 0 0999 V2000") > 0); + restoreModelToEmpty(); + } + + @Test + public void testBug2858663() { + JPanelFixture jcppanel = applet.panel("appletframe"); + JChemPaintPanel panel = (JChemPaintPanel) jcppanel.target; + applet.button("bondTool").click(); + applet.click(); + Assert.assertEquals(2, panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtomCount()); + Assert.assertEquals(1, panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getBondCount()); + restoreModelToEmpty(); + } + // @cdk.bug 2859344 /6 - @Test public void overwriteStereo(){ - JPanelFixture jcppanel=applet.panel("appletframe"); - JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; - //we draw a hexagon - applet.button("hexagon").click(); - applet.click(); - //one of its bonds becomes an up bond - applet.button("up_bond").click(); - Point2d moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates((panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(2).getPoint2d().x+panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(3).getPoint2d().x)/2,(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(2).getPoint2d().y+panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(3).getPoint2d().y)/2); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(2).getStereo()); - //if we make that down, it must be down (and not donw_inv) - applet.button("down_bond").click(); - moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates((panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(2).getPoint2d().x+panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(3).getPoint2d().x)/2,(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(2).getPoint2d().y+panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(3).getPoint2d().y)/2); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(IBond.Stereo.DOWN, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(2).getStereo()); - //and up again - applet.button("up_bond").click(); - moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates((panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(2).getPoint2d().x+panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(3).getPoint2d().x)/2,(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(2).getPoint2d().y+panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(3).getPoint2d().y)/2); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(2).getStereo()); - restoreModelToEmpty(); + @Test + public void overwriteStereo() { + JPanelFixture jcppanel = applet.panel("appletframe"); + JChemPaintPanel panel = (JChemPaintPanel) jcppanel.target; + // we draw a hexagon + applet.button("hexagon").click(); + applet.click(); + // one of its bonds becomes an up bond + applet.button("up_bond").click(); + Point2d moveto = panel + .getRenderPanel() + .getRenderer() + .toScreenCoordinates( + (panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtom(2).getPoint2d().x + panel + .getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtom(3).getPoint2d().x) / 2, + (panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtom(2).getPoint2d().y + panel + .getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtom(3).getPoint2d().y) / 2); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(2).getStereo()); + // if we make that down, it must be down (and not donw_inv) + applet.button("down_bond").click(); + moveto = panel.getRenderPanel().getRenderer().toScreenCoordinates( + (panel.getChemModel().getMoleculeSet().getAtomContainer(0) + .getAtom(2).getPoint2d().x + panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getAtom(3) + .getPoint2d().x) / 2, + (panel.getChemModel().getMoleculeSet().getAtomContainer(0) + .getAtom(2).getPoint2d().y + panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getAtom(3) + .getPoint2d().y) / 2); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + Assert.assertEquals(IBond.Stereo.DOWN, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(2).getStereo()); + // and up again + applet.button("up_bond").click(); + moveto = panel.getRenderPanel().getRenderer().toScreenCoordinates( + (panel.getChemModel().getMoleculeSet().getAtomContainer(0) + .getAtom(2).getPoint2d().x + panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getAtom(3) + .getPoint2d().x) / 2, + (panel.getChemModel().getMoleculeSet().getAtomContainer(0) + .getAtom(2).getPoint2d().y + panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getAtom(3) + .getPoint2d().y) / 2); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(2).getStereo()); + restoreModelToEmpty(); } - - @Test public void testUpBond(){ - genericStereoBondTest(IBond.Stereo.UP); + + @Test + public void testUpBond() { + genericStereoBondTest(IBond.Stereo.UP); } - - @Test public void testDownBond(){ - genericStereoBondTest(IBond.Stereo.DOWN); - } - - @Test public void testUndefinedBond(){ - genericStereoBondTest(IBond.Stereo.UP_OR_DOWN); - } - - //@cdk.bug 2859344 /7 - @Test public void testUndefinedEzBond(){ - genericStereoBondTest(IBond.Stereo.E_OR_Z); - } - - @Test public void testNoneBond(){ - genericStereoBondTest(IBond.Stereo.NONE); - } + @Test + public void testDownBond() { + genericStereoBondTest(IBond.Stereo.DOWN); + } - //@cdk.bug 2860015 - @Test public void testBug2860015(){ - JPanelFixture jcppanel=applet.panel("appletframe"); - JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; - applet.button("bondTool").click(); - applet.click(); - applet.click(); - applet.click(); - applet.click(); - Point2d moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(3).getPoint2d().x,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(3).getPoint2d().y); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(6, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); - Assert.assertEquals(5, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBondCount()); - moveto=getBondPoint(panel,0); - panel.getRenderPanel().getRenderer().getRenderer2DModel().setHighlightedAtom(null); - applet.moveTo(new Point(100,100)); - applet.button("eraser").click(); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(5, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); - Assert.assertEquals(4, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBondCount()); - moveto=getBondPoint(panel,1); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(2, panel.getChemModel().getMoleculeSet().getAtomContainerCount()); - Assert.assertEquals(3, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); - Assert.assertEquals(2, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBondCount()); - Assert.assertEquals(1, panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); - Assert.assertEquals(0, panel.getChemModel().getMoleculeSet().getAtomContainer(1).getBondCount()); - restoreModelToEmpty(); - } - - + @Test + public void testUndefinedBond() { + genericStereoBondTest(IBond.Stereo.UP_OR_DOWN); + } + + // @cdk.bug 2859344 /7 + @Test + public void testUndefinedEzBond() { + genericStereoBondTest(IBond.Stereo.E_OR_Z); + } + + @Test + public void testNoneBond() { + genericStereoBondTest(IBond.Stereo.NONE); + } + + // @cdk.bug 2860015 + @Test + public void testBug2860015() { + JPanelFixture jcppanel = applet.panel("appletframe"); + JChemPaintPanel panel = (JChemPaintPanel) jcppanel.target; + applet.button("bondTool").click(); + applet.click(); + applet.click(); + applet.click(); + applet.click(); + Point2d moveto = panel.getRenderPanel().getRenderer() + .toScreenCoordinates( + panel.getChemModel().getMoleculeSet().getAtomContainer( + 0).getAtom(3).getPoint2d().x, + panel.getChemModel().getMoleculeSet().getAtomContainer( + 0).getAtom(3).getPoint2d().y); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + Assert.assertEquals(6, panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtomCount()); + Assert.assertEquals(5, panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getBondCount()); + moveto = getBondPoint(panel, 0); + panel.getRenderPanel().getRenderer().getRenderer2DModel() + .setHighlightedAtom(null); + applet.moveTo(new Point(100, 100)); + applet.button("eraser").click(); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + Assert.assertEquals(5, panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtomCount()); + Assert.assertEquals(4, panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getBondCount()); + moveto = getBondPoint(panel, 1); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + + Assert.assertEquals(2, panel.getChemModel().getMoleculeSet() + .getAtomContainerCount()); + Assert.assertEquals(3, panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getAtomCount()); + Assert.assertEquals(2, panel.getChemModel().getMoleculeSet() + .getAtomContainer(0).getBondCount()); + Assert.assertEquals(2, panel.getChemModel().getMoleculeSet() + .getAtomContainer(1).getAtomCount()); + Assert.assertEquals(1, panel.getChemModel().getMoleculeSet() + .getAtomContainer(1).getBondCount()); + restoreModelToEmpty(); + } + // This is a test for overwriting of stereo bonds. Any stereo bond - // must overwrite all others and flip itself. - private void genericStereoBondTest(IBond.Stereo directionToTest){ - JPanelFixture jcppanel=applet.panel("appletframe"); - JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; - //we draw a hexagon - applet.button("hexagon").click(); - applet.click(); - //we make all bond types in there - applet.button("up_bond").click(); - Point2d moveto=getBondPoint(panel,1); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(1).getStereo()); - applet.button("down_bond").click(); - moveto=getBondPoint(panel,2); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(IBond.Stereo.DOWN, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(2).getStereo()); - applet.button("undefined_bond").click(); - moveto=getBondPoint(panel,3); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(IBond.Stereo.UP_OR_DOWN, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(3).getStereo()); - applet.button("undefined_stereo_bond").click(); - moveto=getBondPoint(panel,4); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(IBond.Stereo.E_OR_Z, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(4).getStereo()); - //now we click on all of them with disired bond - if(directionToTest==IBond.Stereo.UP) - applet.button("up_bond").click(); - if(directionToTest==IBond.Stereo.DOWN) - applet.button("down_bond").click(); - if(directionToTest==IBond.Stereo.UP_OR_DOWN) - applet.button("undefined_bond").click(); - if(directionToTest==IBond.Stereo.E_OR_Z) - applet.button("undefined_stereo_bond").click(); - if(directionToTest==IBond.Stereo.NONE) - applet.button("bondTool").click(); - for(int i=0;i<5;i++){ - boolean self=false; - if(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(i).getStereo()==directionToTest) - self=true; - moveto=getBondPoint(panel,i); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - if(self){ - IBond.Stereo desiredDirection=null; - if(directionToTest==IBond.Stereo.E_OR_Z) - desiredDirection=IBond.Stereo.E_OR_Z; - else if(directionToTest==IBond.Stereo.NONE) - desiredDirection=IBond.Stereo.NONE; - else if(directionToTest==IBond.Stereo.DOWN) - desiredDirection=IBond.Stereo.DOWN_INVERTED; - else if(directionToTest==IBond.Stereo.UP) - desiredDirection=IBond.Stereo.UP_INVERTED; - else if(directionToTest==IBond.Stereo.UP_OR_DOWN) - desiredDirection=IBond.Stereo.UP_OR_DOWN_INVERTED; - Assert.assertEquals(desiredDirection, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(i).getStereo()); - }else{ - Assert.assertEquals(directionToTest, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(i).getStereo()); - } - } - restoreModelToEmpty(); + // must overwrite all others and flip itself. + private void genericStereoBondTest(IBond.Stereo directionToTest) { + JPanelFixture jcppanel = applet.panel("appletframe"); + JChemPaintPanel panel = (JChemPaintPanel) jcppanel.target; + // we draw a hexagon + applet.button("hexagon").click(); + applet.click(); + // we make all bond types in there + applet.button("up_bond").click(); + Point2d moveto = getBondPoint(panel, 1); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(1).getStereo()); + applet.button("down_bond").click(); + moveto = getBondPoint(panel, 2); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + Assert.assertEquals(IBond.Stereo.DOWN, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(2).getStereo()); + applet.button("undefined_bond").click(); + moveto = getBondPoint(panel, 3); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + Assert.assertEquals(IBond.Stereo.UP_OR_DOWN, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(3).getStereo()); + applet.button("undefined_stereo_bond").click(); + moveto = getBondPoint(panel, 4); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + Assert.assertEquals(IBond.Stereo.E_OR_Z, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(4).getStereo()); + // now we click on all of them with disired bond + if (directionToTest == IBond.Stereo.UP) + applet.button("up_bond").click(); + if (directionToTest == IBond.Stereo.DOWN) + applet.button("down_bond").click(); + if (directionToTest == IBond.Stereo.UP_OR_DOWN) + applet.button("undefined_bond").click(); + if (directionToTest == IBond.Stereo.E_OR_Z) + applet.button("undefined_stereo_bond").click(); + if (directionToTest == IBond.Stereo.NONE) + applet.button("bondTool").click(); + for (int i = 0; i < 5; i++) { + boolean self = false; + if (panel.getChemModel().getMoleculeSet().getAtomContainer(0) + .getBond(i).getStereo() == directionToTest) + self = true; + moveto = getBondPoint(panel, i); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + if (self) { + IBond.Stereo desiredDirection = null; + if (directionToTest == IBond.Stereo.E_OR_Z) + desiredDirection = IBond.Stereo.E_OR_Z; + else if (directionToTest == IBond.Stereo.NONE) + desiredDirection = IBond.Stereo.NONE; + else if (directionToTest == IBond.Stereo.DOWN) + desiredDirection = IBond.Stereo.DOWN_INVERTED; + else if (directionToTest == IBond.Stereo.UP) + desiredDirection = IBond.Stereo.UP_INVERTED; + else if (directionToTest == IBond.Stereo.UP_OR_DOWN) + desiredDirection = IBond.Stereo.UP_OR_DOWN_INVERTED; + Assert.assertEquals(desiredDirection, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(i) + .getStereo()); + } else { + Assert.assertEquals(directionToTest, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(i) + .getStereo()); + } + } + restoreModelToEmpty(); } - - @Test public void testFlipWithStereo(){ + + @Test + public void testFlipWithStereo() { + JPanelFixture jcppanel = applet.panel("appletframe"); + JChemPaintPanel panel = (JChemPaintPanel) jcppanel.target; + applet.button("hexagon").click(); + applet.click(); + applet.button("up_bond").click(); + Point2d moveto = getAtomPoint(panel, 0); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + moveto = getAtomPoint(panel, 1); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + applet.button("down_bond").click(); + moveto = getAtomPoint(panel, 2); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel") + .component(), new Point((int) moveto.x, (int) moveto.y), + MouseButton.LEFT_BUTTON, 1); + applet.button("flipHorizontal").click(); + Assert.assertEquals(IBond.Stereo.DOWN, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(6).getStereo()); + Assert.assertEquals(IBond.Stereo.DOWN, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(7).getStereo()); + Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(8).getStereo()); + applet.button("flipVertical").click(); + Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(6).getStereo()); + Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(7).getStereo()); + Assert.assertEquals(IBond.Stereo.DOWN, panel.getChemModel() + .getMoleculeSet().getAtomContainer(0).getBond(8).getStereo()); + restoreModelToEmpty(); + } + + //Test for Trac ticket # 80 : deletion of the double bonds that bind the oxygens in caffeine led to + // incorrect cascading removal of the bound carbons too. + @Test + public void testRemoveBond() throws CDKException, ClassNotFoundException, + IOException, CloneNotSupportedException { + // Clean the panel: + applet.menuItem("new").click(); JPanelFixture jcppanel=applet.panel("appletframe"); JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; - applet.button("hexagon").click(); - applet.click(); - applet.button("up_bond").click(); - Point2d moveto=getAtomPoint(panel,0); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - moveto=getAtomPoint(panel,1); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - applet.button("down_bond").click(); - moveto=getAtomPoint(panel,2); - applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); - applet.button("flipHorizontal").click(); - Assert.assertEquals(IBond.Stereo.DOWN, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(6).getStereo()); - Assert.assertEquals(IBond.Stereo.DOWN, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(7).getStereo()); - Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(8).getStereo()); - applet.button("flipVertical").click(); - Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(6).getStereo()); - Assert.assertEquals(IBond.Stereo.UP, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(7).getStereo()); - Assert.assertEquals(IBond.Stereo.DOWN, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBond(8).getStereo()); - restoreModelToEmpty(); + + // Paste caffeine template: + applet.menuItem("pasteTemplate").click(); + DialogFixture dialog = applet.dialog("templates"); + JButtonFixture templateButton = new JButtonFixture(dialog.robot, + dialog.robot.finder().find( + new ButtonTextComponentMatcher("Caffeine"))); + templateButton.click(); + applet.button("select").click(); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), + new Point(0,0), MouseButton.LEFT_BUTTON,1); + + //Delete the double bonds connecting the two oxygen atoms: + applet.button("eraser").click(); + for (IBond bond : panel.getChemModel().getMoleculeSet().getAtomContainer(0).bonds()) + if (bond.getOrder().equals(IBond.Order.DOUBLE) && + (bond.getAtom(0).getSymbol().equals("O")||bond.getAtom(1).getSymbol().equals("O"))) { + double xAvg= (bond.getAtom(0).getPoint2d().x +bond.getAtom(1).getPoint2d().x)/2; + double yAvg= (bond.getAtom(0).getPoint2d().y +bond.getAtom(1).getPoint2d().y)/2; + Point2d moveTo=panel.getRenderPanel().getRenderer().toScreenCoordinates(xAvg,yAvg); + Point p = new Point((int)moveTo.x, (int)moveTo.y); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), + p, MouseButton.LEFT_BUTTON,1); + } + + //Establish that only the double bonds plus the oxygens are gone, rest is still in place: + Assert.assertEquals(12, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount() ); + } + } Modified: jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java =================================================================== --- jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java 2010-02-15 14:22:38 UTC (rev 15407) +++ jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java 2010-02-16 10:31:48 UTC (rev 15408) @@ -264,10 +264,11 @@ moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates((panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(1).getPoint2d().x+panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(2).getPoint2d().x)/2,(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(1).getPoint2d().y+panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(2).getPoint2d().y)/2); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x, (int)moveto.y), MouseButton.LEFT_BUTTON,1); Assert.assertEquals(2, panel.getChemModel().getMoleculeSet().getAtomContainerCount()); - Assert.assertEquals(oldAtomCount-2, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()+panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); - Assert.assertEquals(oldBondCount-2, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBondCount()+panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); + Assert.assertEquals(oldAtomCount-1, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()+panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); + Assert.assertEquals(oldBondCount-2, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getBondCount()+panel.getChemModel().getMoleculeSet().getAtomContainer(1).getBondCount()); restoreModelWithBasicmol(); } + @Test public void selectByDoubleClick(){ restoreModelWithBasicmol(); JPanelFixture jcppanel=applet.panel("appletframe"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2010-02-24 18:12:56
|
Revision: 15437 http://cdk.svn.sourceforge.net/cdk/?rev=15437&view=rev Author: shk3 Date: 2010-02-24 18:12:49 +0000 (Wed, 24 Feb 2010) Log Message: ----------- Modified the Renderer so that it can either use user setting (from $HOME/.jchempaint) or not. Till now, also in standalone use, these were used if there, but the programmer might want to have control over what happens. Modified Paths: -------------- jchempaint/trunk/src/main/org/openscience/jchempaint/JCPPropertyHandler.java jchempaint/trunk/src/main/org/openscience/jchempaint/JCPToolBar.java jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintMenuHelper.java jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintPanel.java jchempaint/trunk/src/main/org/openscience/jchempaint/RenderPanel.java jchempaint/trunk/src/main/org/openscience/jchempaint/action/SaveAsAction.java jchempaint/trunk/src/main/org/openscience/jchempaint/application/JChemPaint.java jchempaint/trunk/src/main/org/openscience/jchempaint/dialog/AboutDialog.java jchempaint/trunk/src/main/org/openscience/jchempaint/dialog/editor/PropertiesModelEditor.java jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/AtomContainerRenderer.java jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/Renderer.java jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RendererModel.java jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RenderingParameters.java jchempaint/trunk/src/util/TemplateImagesMaker.java Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/JCPPropertyHandler.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/JCPPropertyHandler.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/JCPPropertyHandler.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -64,7 +64,10 @@ private ResourceBundle resources; private Properties shortCutProps; + private boolean useUserSettings; + private static boolean oldUseUserSettings; + /** * Constructor for the JCPPropertyHandler object */ @@ -81,15 +84,27 @@ /** - * Gets the instance attribute of the JCPPropertyHandler class + * Constructor for the JCPPropertyHandler. + * + * @param useUserSettings Should user setting (in $HOME/.jchempaint/properties) be used or not? + */ + public JCPPropertyHandler(boolean useUserSettings) { + this.useUserSettings = useUserSettings; + } + + + /** + * Gets the instance attribute of the JCPPropertyHandler class. * - *@return The instance value + * @param useUserSettings Should user setting (in $HOME/.jchempaint/properties) be used or not? + * @return The instance value. */ - public static JCPPropertyHandler getInstance() + public static JCPPropertyHandler getInstance(boolean useUserSettings) { - if (jcpPropsHandler == null) + if (jcpPropsHandler == null || oldUseUserSettings!=useUserSettings) { - jcpPropsHandler = new JCPPropertyHandler(); + jcpPropsHandler = new JCPPropertyHandler(useUserSettings); + oldUseUserSettings = useUserSettings; } return jcpPropsHandler; } @@ -104,12 +119,12 @@ { if (currentProperties == null) { - reloadProperties(); + reloadProperties(useUserSettings); } return currentProperties; } - public void reloadProperties() + public void reloadProperties(boolean useUserSettings) { Properties applicationProps = null; Properties defaultProps = null; @@ -127,21 +142,23 @@ logger.debug(exception); } - try - { - // set up real properties - applicationProps = new Properties(defaultProps); - FileInputStream appStream = new FileInputStream(getUserPropsFile()); - applicationProps.load(appStream); - appStream.close(); - logger.info("Loaded user properties from file"); - } catch (FileNotFoundException exception) - { - logger.warn("User does not have localized properties in "); - } catch (Exception exception) - { - logger.error("There was a problem retrieving the user properties from file"); - logger.debug(exception); + applicationProps = new Properties(defaultProps); + if(useUserSettings){ + try + { + // set up real properties + FileInputStream appStream = new FileInputStream(getUserPropsFile()); + applicationProps.load(appStream); + appStream.close(); + logger.info("Loaded user properties from file"); + } catch (FileNotFoundException exception) + { + logger.warn("User does not have localized properties in "); + } catch (Exception exception) + { + logger.error("There was a problem retrieving the user properties from file"); + logger.debug(exception); + } } currentProperties = applicationProps; } Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/JCPToolBar.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/JCPToolBar.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/JCPToolBar.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -83,7 +83,7 @@ String str; try { - str = JCPPropertyHandler.getInstance().getGUIDefinition(guistring).getString(key); + str = JCPPropertyHandler.getInstance(true).getGUIDefinition(guistring).getString(key); } catch (MissingResourceException mre) { mre.printStackTrace(); @@ -104,7 +104,7 @@ static JButton createToolbarButton(String key, AbstractJChemPaintPanel chemPaintPanel, boolean elementtype) { - JCPPropertyHandler jcpph = JCPPropertyHandler.getInstance(); + JCPPropertyHandler jcpph = JCPPropertyHandler.getInstance(true); JButton b = null; /*if(!elementtype){ */ Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintMenuHelper.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintMenuHelper.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintMenuHelper.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -68,7 +68,7 @@ protected String getMenuResourceString(String key, String guiString) { String str; try { - str = JCPPropertyHandler.getInstance().getGUIDefinition(guiString).getString(key); + str = JCPPropertyHandler.getInstance(true).getGUIDefinition(guiString).getString(key); } catch (MissingResourceException mre) { str = null; } @@ -237,7 +237,7 @@ else { mi = new JMenuItem(translation); } - JCPPropertyHandler jcpph = JCPPropertyHandler.getInstance(); + JCPPropertyHandler jcpph = JCPPropertyHandler.getInstance(true); URL url = jcpph.getResource(cmd + JCPAction.imageSuffix); if (url != null) { @@ -262,7 +262,7 @@ mi.setName(cmd); usedKeys.add(cmd); logger.debug("Created new menu item..."); - String astr = JCPPropertyHandler.getInstance().getResourceString(cmd + JCPAction.actionSuffix); + String astr = JCPPropertyHandler.getInstance(true).getResourceString(cmd + JCPAction.actionSuffix); if (astr == null) { astr = cmd; } @@ -301,7 +301,7 @@ * @param jcp The JChemPaintPanel this menu is used for. */ private void addShortCuts(String cmd, JMenuItem mi, AbstractJChemPaintPanel jcp) { - Properties shortCutProps = JCPPropertyHandler.getInstance().getJCPShort_Cuts(); + Properties shortCutProps = JCPPropertyHandler.getInstance(true).getJCPShort_Cuts(); String keyString = shortCutProps.getProperty(cmd); if (keyString != null) { Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintPanel.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintPanel.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/JChemPaintPanel.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -109,7 +109,7 @@ * @param applet If this panel is to be in an applet, pass the applet here, else null. */ public JChemPaintPanel(IChemModel chemModel, String gui, boolean debug, JChemPaintAbstractApplet applet) { - GT.setLanguage(JCPPropertyHandler.getInstance().getJCPProperties().getProperty("General.language")); + GT.setLanguage(JCPPropertyHandler.getInstance(true).getJCPProperties().getProperty("General.language")); this.guistring = gui; menuTextMaker = JCPMenuTextMaker.getInstance(guistring); this.debug = debug; @@ -120,7 +120,7 @@ } if (gui.equals("application")) { setAppTitle(" - "+ - JCPPropertyHandler.getInstance().getJCPProperties().getProperty("Title")); + JCPPropertyHandler.getInstance(true).getJCPProperties().getProperty("Title")); } init(); } Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/RenderPanel.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/RenderPanel.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/RenderPanel.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -128,7 +128,7 @@ this.setupMachinery(chemModel, fitToScreen, isViewer, applet); this.setupPanel(width, height); this.fitToScreen = fitToScreen; - int limit = Integer.parseInt(JCPPropertyHandler.getInstance() + int limit = Integer.parseInt(JCPPropertyHandler.getInstance(true) .getJCPProperties().getProperty("General.UndoStackSize")); undoManager.setLimit(limit); } @@ -161,7 +161,7 @@ if (this.renderer == null) { this.renderer = new Renderer(makeGenerators(chemModel), - makeReactionGenerators(), new AWTFontManager(), this); + makeReactionGenerators(), new AWTFontManager(), this, true); // any specific rendering settings defaults should go here this.renderer.getRenderer2DModel().setShowEndCarbons(false); this.renderer.getRenderer2DModel().setShowAromaticity(false); Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/action/SaveAsAction.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/action/SaveAsAction.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/action/SaveAsAction.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -257,7 +257,7 @@ } private boolean askIOSettings() { - return JCPPropertyHandler.getInstance().getJCPProperties() + return JCPPropertyHandler.getInstance(true).getJCPProperties() .getProperty("askForIOSettings", "false").equals("true"); } Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/application/JChemPaint.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/application/JChemPaint.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/application/JChemPaint.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -118,7 +118,7 @@ Package self = Package.getPackage("org.openscience.jchempaint"); String version = GT._("Could not determine JCP version"); if (self != null) - version = JCPPropertyHandler.getInstance().getVersion(); + version = JCPPropertyHandler.getInstance(true).getVersion(); if (vers.compareTo(requiredJVM) < 0) { System.err.println(GT._("WARNING: JChemPaint {0} must be run with a Java VM version {1} or higher.", new String[]{version, requiredJVM})); System.err.println(GT._("Your JVM version is {0}", vers)); @@ -176,7 +176,7 @@ } // Set Look&Feel - Properties props = JCPPropertyHandler.getInstance().getJCPProperties(); + Properties props = JCPPropertyHandler.getInstance(true).getJCPProperties(); try { UIManager.setLookAndFeel(props.getProperty("LookAndFeelClass")); } catch (Throwable e) { Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/dialog/AboutDialog.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/dialog/AboutDialog.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/dialog/AboutDialog.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -68,7 +68,7 @@ } public void doInit() { - String version = JCPPropertyHandler.getInstance().getVersion(); + String version = JCPPropertyHandler.getInstance(true).getVersion(); String s1 = "JChemPaint " + version + "\n"; s1 += GT._("An open-source editor for 2D chemical structures."); String s2 = GT._("An OpenScience project.")+"\n"; @@ -80,7 +80,7 @@ JLabel label1 = new JLabel(); try { - JCPPropertyHandler jcpph = JCPPropertyHandler.getInstance(); + JCPPropertyHandler jcpph = JCPPropertyHandler.getInstance(true); URL url = jcpph.getResource("jcplogo" + JCPAction.imageSuffix); ImageIcon icon = new ImageIcon(url); //ImageIcon icon = new ImageIcon(../resources/); Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/dialog/editor/PropertiesModelEditor.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/dialog/editor/PropertiesModelEditor.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/dialog/editor/PropertiesModelEditor.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -386,7 +386,7 @@ color.setBackground(currentColor); } //the general settings - Properties props = JCPPropertyHandler.getInstance().getJCPProperties(); + Properties props = JCPPropertyHandler.getInstance(true).getJCPProperties(); askForIOSettings.setSelected(props.getProperty("askForIOSettings", "false").equals("true")); undoStackSize.setText(props.getProperty("General.UndoStackSize", "50")); if (!guistring.equals(JChemPaintEditorApplet.GUI_APPLET)) { @@ -397,7 +397,7 @@ } public void applyChanges(boolean close) { - Properties props = JCPPropertyHandler.getInstance().getJCPProperties(); + Properties props = JCPPropertyHandler.getInstance(true).getJCPProperties(); model.setDrawNumbers(drawNumbers.isSelected()); //model.setShowAtomAtomMapping(showAtomAtomMapping.isSelected()); @@ -523,7 +523,7 @@ } } - JCPPropertyHandler.getInstance().saveProperties(); + JCPPropertyHandler.getInstance(true).saveProperties(); boolean languagechanged = false; for(int i=0;i<gtlanguages.length;i++){ if(gtlanguages[i].language.equals((String)language.getSelectedItem())){ @@ -534,7 +534,7 @@ } } } - JCPPropertyHandler.getInstance().saveProperties(); + JCPPropertyHandler.getInstance(true).saveProperties(); if(languagechanged && !close){ //we need to rediplay the dialog to change its language this.getParent().getParent().getParent().getParent().setVisible(false); Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/AtomContainerRenderer.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/AtomContainerRenderer.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/AtomContainerRenderer.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -112,7 +112,7 @@ /** * The renderer model is final as it is not intended to be replaced. */ - protected final RendererModel rendererModel = new RendererModel(); + protected final RendererModel rendererModel; protected List<IGenerator> generators; @@ -138,8 +138,11 @@ * a list of classes that implement the IGenerator interface * @param fontManager * a class that manages mappings between zoom and font sizes + * @param useUserSettings Should user setting (in $HOME/.jchempaint/properties) be used or not? */ - public AtomContainerRenderer(List<IGenerator> generators, IFontManager fontManager) { + public AtomContainerRenderer(List<IGenerator> generators, + IFontManager fontManager, boolean useUserSettings) { + rendererModel = new RendererModel(useUserSettings); this.generators = generators; this.fontManager = fontManager; } Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/Renderer.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/Renderer.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/Renderer.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -124,15 +124,17 @@ * a list of classes that implement the IGenerator interface * @param fontManager * a class that manages mappings between zoom and font sizes + * @param useUserSettings Should user setting (in $HOME/.jchempaint/properties) be used or not? */ - public Renderer(List<IGenerator> generators, IFontManager fontManager) { - super(generators, fontManager); + public Renderer(List<IGenerator> generators, IFontManager fontManager, + boolean useUserSettings) { + super(generators, fontManager, useUserSettings); } public Renderer(List<IGenerator> generators, List<IReactionGenerator> reactionGenerators, - IFontManager fontManager, RenderPanel renderPanel) { - this(generators, fontManager); + IFontManager fontManager, RenderPanel renderPanel, boolean useUserSettings) { + this(generators, fontManager, useUserSettings); this.reactionGenerators = reactionGenerators; this.setup(); super.renderPanel = renderPanel; Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RendererModel.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RendererModel.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RendererModel.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -94,11 +94,22 @@ private Map<IAtom, IAtom> merge=new HashMap<IAtom, IAtom>(); - public RendererModel() { - this.parameters = new RenderingParameters(); + /** + * Constructor for the RendererModel. + * + * @param useUserSettings Should user setting (in $HOME/.jchempaint/properties) be used or not? + */ + public RendererModel(boolean useUserSettings) { + this.parameters = new RenderingParameters(useUserSettings); } - public RendererModel(RenderingParameters parameters) { + /** + * Constructor for the RendererModel. + * + * @param parameters + * @param useUserSettings Should user setting (in $HOME/.jchempaint/properties) be used or not? + */ + public RendererModel(RenderingParameters parameters, boolean useUserSettings) { this.parameters = parameters; } Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RenderingParameters.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RenderingParameters.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/renderer/RenderingParameters.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -33,10 +33,47 @@ public class RenderingParameters { /** + * Constructor for the RenderingParameters. + * + * @param useUserSettings Should user setting (in $HOME/.jchempaint/properties) be used or not? + */ + public RenderingParameters(boolean useUserSettings){ + atomRadius = Double.parseDouble(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("AtomRadius", "8")); + backColor = new Color(Integer.parseInt(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("BackColor", String.valueOf(Color.white.getRGB())))); + bondWidth = Double.parseDouble(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("BondWidth", "1.0")); + compactShape = JCPPropertyHandler.getInstance(useUserSettings).getJCPProperties() + .getProperty("CompactShape", "square").equals("square") ? AtomShape.SQUARE : AtomShape.OVAL; + compact = Boolean.parseBoolean(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("IsCompact", "false")); + colorAtomsByType = Boolean.parseBoolean(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("ColorAtomsByType", "true")); + showImplicitHydrogens = Boolean.parseBoolean(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("ShowImplicitHydrogens", "true")); + willDrawNumbers = Boolean.parseBoolean(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("DrawNumbers", "false")); + kekuleStructure = Boolean.parseBoolean(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("KekuleStructure", "false")); + showEndCarbons = Boolean.parseBoolean(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("ShowEndCarbons", "false")); + showExplicitHydrogens = Boolean.parseBoolean(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("ShowExplicitHydrogens", "true")); + highlightDistance = Double.parseDouble(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("HighlightDistance", "8")); + fitToScreen = Boolean.parseBoolean(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("FitToScreen", "true")); + showAromaticity = Boolean.parseBoolean(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("ShowAromaticity", "true")); + wedgeWidth = Double.parseDouble(JCPPropertyHandler.getInstance(useUserSettings) + .getJCPProperties().getProperty("WedgeWidth", "5.0")); + } + + /** * The size on screen of a compact mode shape */ - private double atomRadius = Double.parseDouble(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("AtomRadius", "8")); + private double atomRadius; /** * When atoms are selected or in compact mode, they will @@ -52,8 +89,7 @@ /** * The background color of the rendered image */ - private Color backColor = new Color(Integer.parseInt(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("BackColor", String.valueOf(Color.white.getRGB())))); + private Color backColor; /** * The color used for underlining not typeable atoms. @@ -73,8 +109,7 @@ /** * The width on screen of a bond */ - private double bondWidth = Double.parseDouble(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("BondWidth", "1.0")); + private double bondWidth; /** * The width on screen of an atom-atom mapping line @@ -90,21 +125,18 @@ /** * Determines whether atoms are colored by type */ - private boolean colorAtomsByType = Boolean.parseBoolean(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("ColorAtomsByType", "true")); + private boolean colorAtomsByType; /** * If true, atoms are displayed in a compact notation, * as a colored square or circle, rather than as text */ - private boolean compact = Boolean.parseBoolean(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("IsCompact", "false")); + private boolean compact; /** * The shape of the compact mode atom. */ - private AtomShape compactShape = JCPPropertyHandler.getInstance().getJCPProperties() - .getProperty("CompactShape", "square").equals("square") ? AtomShape.SQUARE : AtomShape.OVAL; + private AtomShape compactShape; /** * The color to draw bonds if not other color is given. @@ -117,8 +149,7 @@ private Color externalHighlightColor = Color.RED; - private boolean fitToScreen = Boolean.parseBoolean(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("FitToScreen", "true")); + private boolean fitToScreen; private Color foreColor = Color.black; @@ -129,16 +160,14 @@ * giving each carbon element explicitly, instead of not displaying the * element symbol. Example C-C-C instead of /\. */ - private boolean kekuleStructure = Boolean.parseBoolean(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("KekuleStructure", "false")); + private boolean kekuleStructure; /** * The maximum distance on the screen the mouse pointer has to be to * highlight an element. */ - private double highlightDistance = Double.parseDouble(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("HighlightDistance", "8")); + private double highlightDistance; private boolean highlightShapeFilled = false; @@ -175,8 +204,7 @@ * Determines whether rings should be drawn with a circle if they are * aromatic. */ - private boolean showAromaticity = Boolean.parseBoolean(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("ShowAromaticity", "true")); + private boolean showAromaticity; private boolean showAromaticityInCDKStyle = false; @@ -188,16 +216,13 @@ * Determines whether methyl carbons' symbols should be drawn explicit for * methyl carbons. Example C/\C instead of /\. */ - private boolean showEndCarbons = Boolean.parseBoolean(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("ShowEndCarbons", "false")); + private boolean showEndCarbons; /** Determines whether explicit hydrogens should be drawn. */ - private boolean showExplicitHydrogens = Boolean.parseBoolean(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("ShowExplicitHydrogens", "true")); + private boolean showExplicitHydrogens; /** Determines whether implicit hydrogens should be drawn. */ - private boolean showImplicitHydrogens = Boolean.parseBoolean(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("ShowImplicitHydrogens", "true")); + private boolean showImplicitHydrogens; private boolean showMoleculeTitle = false; @@ -207,14 +232,12 @@ private boolean useAntiAliasing = true; - private boolean willDrawNumbers = Boolean.parseBoolean(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("DrawNumbers", "false")); + private boolean willDrawNumbers; /** * The width on screen of the fat end of a wedge bond. */ - private double wedgeWidth = Double.parseDouble(JCPPropertyHandler.getInstance() - .getJCPProperties().getProperty("WedgeWidth", "5.0")); + private double wedgeWidth; public int getArrowHeadWidth() { Modified: jchempaint/trunk/src/util/TemplateImagesMaker.java =================================================================== --- jchempaint/trunk/src/util/TemplateImagesMaker.java 2010-02-24 15:31:00 UTC (rev 15436) +++ jchempaint/trunk/src/util/TemplateImagesMaker.java 2010-02-24 18:12:49 UTC (rev 15437) @@ -91,7 +91,7 @@ List<IGenerator> generators = new ArrayList<IGenerator>(); generators.add(new BasicBondGenerator()); generators.add(new BasicAtomGenerator()); - Renderer renderer = new Renderer(generators,new AWTFontManager()); + Renderer renderer = new Renderer(generators,new AWTFontManager(), false); RendererModel r2dm = renderer.getRenderer2DModel(); r2dm.setDrawNumbers(false); r2dm.setBackColor(Color.LIGHT_GRAY); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2010-04-07 14:04:26
|
Revision: 15503 http://cdk.svn.sourceforge.net/cdk/?rev=15503&view=rev Author: mark_rynbeek Date: 2010-04-07 14:04:20 +0000 (Wed, 07 Apr 2010) Log Message: ----------- Fixed some tests. Updated getMol/setMol and copy paste to work with RG file format Modified Paths: -------------- jchempaint/trunk/src/main/org/openscience/jchempaint/action/CopyPasteAction.java jchempaint/trunk/src/main/org/openscience/jchempaint/applet/JChemPaintAbstractApplet.java jchempaint/trunk/src/main/org/openscience/jchempaint/controller/AddBondDragModule.java jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/action/CopyPasteAction.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/action/CopyPasteAction.java 2010-04-07 11:58:46 UTC (rev 15502) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/action/CopyPasteAction.java 2010-04-07 14:04:20 UTC (rev 15503) @@ -35,7 +35,7 @@ import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.ActionEvent; import java.io.ByteArrayInputStream; -import java.io.StringBufferInputStream; +import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; @@ -45,6 +45,7 @@ import javax.vecmath.Point2d; import org.openscience.cdk.ChemFile; +import org.openscience.cdk.ChemModel; import org.openscience.cdk.DefaultChemObjectBuilder; import org.openscience.cdk.Molecule; import org.openscience.cdk.exception.CDKException; @@ -64,7 +65,10 @@ import org.openscience.cdk.io.ISimpleChemObjectReader; import org.openscience.cdk.io.MDLReader; import org.openscience.cdk.io.MDLWriter; +import org.openscience.cdk.io.RGroupQueryReader; import org.openscience.cdk.io.ReaderFactory; +import org.openscience.cdk.isomorphism.matchers.IRGroupQuery; +import org.openscience.cdk.isomorphism.matchers.RGroupQuery; import org.openscience.cdk.layout.StructureDiagramGenerator; import org.openscience.cdk.layout.TemplateHandler; import org.openscience.cdk.smiles.SmilesGenerator; @@ -90,11 +94,10 @@ import org.openscience.jchempaint.renderer.selection.RectangleSelection; import org.openscience.jchempaint.renderer.selection.ShapeSelection; import org.openscience.jchempaint.renderer.selection.SingleSelection; +import org.openscience.jchempaint.rgroups.RGroupHandler; /** * Action to copy/paste structures. - * - * @cdk.bug 1288449 */ public class CopyPasteAction extends JCPAction{ @@ -182,7 +185,6 @@ sysClip.setContents(new SmilesSelection(CreateSmilesAction.getSmiles(chemModel)),null); } } catch (Exception e1) { - // TODO Auto-generated catch block e1.printStackTrace(); } } else if ("eraser".equals(type)) { @@ -235,21 +237,33 @@ String content=null; if (supported(transfer, molFlavor) ) { - try { - StringBufferInputStream sbis = (StringBufferInputStream) transfer.getTransferData(molFlavor); - int x; - StringBuffer sb = new StringBuffer(); + StringBuffer sb = new StringBuffer(); + try { + //StringBufferInputStream sbis=null; + //sbis = (StringBufferInputStream) transfer.getTransferData(molFlavor); + + StringReader sbis=null; + sbis = (StringReader) transfer.getTransferData(molFlavor); + + + int x; while((x=sbis.read())!=-1){ sb.append((char)x); } reader = new MDLReader(new StringReader(sb.toString())); - } catch (Exception e1) { - e1.printStackTrace(); + } catch (UnsupportedFlavorException e1) { + e1.printStackTrace(); + } catch (IOException e1) { + e1.printStackTrace(); + } catch (Exception e1) { + reader = new RGroupQueryReader(new StringReader(sb.toString())); } + } else if (supported(transfer, DataFlavor.stringFlavor) ) { try { content = (String) transfer.getTransferData(DataFlavor.stringFlavor); reader = new ReaderFactory().createReader(new StringReader(content)); + System.out.println(reader.getClass()); } catch (Exception e1) { e1.printStackTrace(); } @@ -261,6 +275,7 @@ } IMolecule toPaste = null; + boolean rgrpQuery=false; if (reader != null) { IMolecule readMolecule = chemModel.getBuilder().newMolecule(); @@ -275,14 +290,24 @@ toPaste.add(ac); } - } + } else if (reader.accepts(RGroupQuery.class)) { + rgrpQuery=true; + IRGroupQuery rgroupQuery = (RGroupQuery) reader.read(new RGroupQuery()); + chemModel = new ChemModel(); + RGroupHandler rgHandler = new RGroupHandler(rgroupQuery); + this.jcpPanel.get2DHub().setRGroupHandler(rgHandler); + chemModel.setMoleculeSet(rgHandler.getMoleculeSet(chemModel)); + rgHandler.layoutRgroup(); + + } + } catch (CDKException e1) { e1.printStackTrace(); } } //Attempt SMILES or InChI if no reader is found for content. - if (toPaste == null && + if(rgrpQuery!=true && toPaste == null && supported(transfer, DataFlavor.stringFlavor)) { try{ if (content.toLowerCase().indexOf("inchi")>-1 ) { @@ -316,16 +341,22 @@ ex.printStackTrace(); } } - if (toPaste != null) { + + if (toPaste != null || rgrpQuery==true) { jcpPanel.getRenderPanel().setZoomWide(true); jcpPanel.get2DHub().getRenderer().getRenderer2DModel().setZoomFactor(1); - - scaleStructure(toPaste); - insertStructure(toPaste, renderModel); - - }else{ + if ( rgrpQuery==true) { + this.jcpPanel.setChemModel(chemModel); + } + else { + scaleStructure(toPaste); + insertStructure(toPaste, renderModel); + } + } + else{ JOptionPane.showMessageDialog(jcpPanel, GT._("The content you tried to copy could not be read to any known format"), GT._("Could not process content"), JOptionPane.WARNING_MESSAGE); } + } else if (type.equals("cut")) { handleSystemClipboard(sysClip); IAtom atomInRange = null; @@ -373,9 +404,11 @@ MoveModule newActiveModule = new MoveModule(hub, succusorModule); newActiveModule.setID("move"); hub.setActiveDrawModule(newActiveModule); + } else if (type.equals("selectFromChemObject")) { - // FIXME: implement for others than Reaction, Atom, Bond - IChemObject object = getSource(e); + + // FIXME: implement for others than Reaction, Atom, Bond + IChemObject object = getSource(e); if (object instanceof IAtom) { SingleSelection<IAtom> container = new SingleSelection<IAtom>((IAtom)object); renderModel.setSelection(container); @@ -585,15 +618,15 @@ public synchronized Object getTransferData (DataFlavor parFlavor) throws UnsupportedFlavorException { if (parFlavor.equals (molFlavor)) { - return new StringBufferInputStream(mol); + return new StringReader(mol); } else if (parFlavor.equals (smilesFlavor)) { - return new StringBufferInputStream(smiles); + return new StringReader(smiles); } else if(parFlavor.equals(DataFlavor.stringFlavor)) { return mol; } else if(parFlavor.equals(cmlFlavor)) { - return new StringBufferInputStream(cml); + return new StringReader(cml); } else if(parFlavor.equals(svgFlavor)) { - return new StringBufferInputStream(svg); + return new StringReader(svg); } else { throw new UnsupportedFlavorException (parFlavor); } Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/applet/JChemPaintAbstractApplet.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/applet/JChemPaintAbstractApplet.java 2010-04-07 11:58:46 UTC (rev 15502) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/applet/JChemPaintAbstractApplet.java 2010-04-07 14:04:20 UTC (rev 15503) @@ -37,6 +37,7 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; +import java.io.InputStream; import java.io.StringReader; import java.io.StringWriter; import java.net.URL; @@ -62,7 +63,10 @@ import org.openscience.cdk.io.ISimpleChemObjectReader; import org.openscience.cdk.io.MDLV2000Reader; import org.openscience.cdk.io.MDLWriter; +import org.openscience.cdk.io.RGroupQueryReader; +import org.openscience.cdk.io.RGroupQueryWriter; import org.openscience.cdk.io.IChemObjectReader.Mode; +import org.openscience.cdk.isomorphism.matchers.RGroupQuery; import org.openscience.cdk.layout.StructureDiagramGenerator; import org.openscience.cdk.layout.TemplateHandler; import org.openscience.cdk.smiles.SmilesParser; @@ -355,21 +359,29 @@ } /** - * Gives a mol file of the current molecules in the editor (not reactions) + * Gives a mol file of the current molecules in the editor (not reactions). + * RGroup queries are also saved as .mol files by convention. * * @return The mol file * @throws CDKException */ public String getMolFile() throws CDKException { + StringWriter sw = new StringWriter(); - MDLWriter mdlwriter = new MDLWriter(sw); - // mdlwriter.dontWriteAromatic(); - org.openscience.cdk.interfaces.IChemModel som = theJcpp - .getChemModel(); - mdlwriter.write(som); + org.openscience.cdk.interfaces.IChemModel som = theJcpp.getChemModel(); + + if (theJcpp.get2DHub().getRGroupHandler()!=null) { + RGroupQueryWriter rgw = new RGroupQueryWriter (sw); + rgw.write(theJcpp.get2DHub().getRGroupHandler().getrGroupQuery()); + } + else { + MDLWriter mdlwriter = new MDLWriter(sw); + mdlwriter.write(som); + } return (sw.toString()); } + /** * Gives a smiles of the current editor content * @@ -461,18 +473,29 @@ * @throws Exception */ public void setMolFile(String mol) throws CDKException { - - ISimpleChemObjectReader cor = new MDLV2000Reader(new StringReader(mol), Mode.RELAXED); //TODO assess R-group? - IChemModel chemModel = JChemPaint.getChemModelFromReader(cor, theJcpp); - JChemPaint.cleanUpChemModel(chemModel,true); - theJcpp.setChemModel(chemModel); + + ISimpleChemObjectReader cor=null; + IChemModel chemModel = null; + + if (mol.contains("$RGP")) { + cor= new RGroupQueryReader(new StringReader(mol)); + chemModel=JChemPaint.getChemModelFromReader(cor, theJcpp); + } + else { + cor= new MDLV2000Reader(new StringReader(mol), Mode.RELAXED); + chemModel=JChemPaint.getChemModelFromReader(cor, theJcpp); + JChemPaint.cleanUpChemModel(chemModel,true); + } + + theJcpp.setChemModel(chemModel); theJcpp.get2DHub().updateView(); + // the newly opened file should nicely fit the screen theJcpp.getRenderPanel().setFitToScreen(true); - theJcpp.getRenderPanel().update( - theJcpp.getRenderPanel().getGraphics()); - // enable zooming by removing constraint + theJcpp.getRenderPanel().update(theJcpp.getRenderPanel().getGraphics()); + // ..enable zooming by removing constraint again theJcpp.getRenderPanel().setFitToScreen(false); + } /** Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/controller/AddBondDragModule.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/controller/AddBondDragModule.java 2010-04-07 11:58:46 UTC (rev 15502) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/controller/AddBondDragModule.java 2010-04-07 14:04:20 UTC (rev 15503) @@ -196,7 +196,6 @@ @Override public void mouseClickedUp( Point2d worldCoord ) { - System.out.println("mouseClickedUp addbonddragmod"); chemModelRelay.clearPhantoms(); if(isBond) return; Modified: jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java =================================================================== --- jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java 2010-04-07 11:58:46 UTC (rev 15502) +++ jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletBugsTest.java 2010-04-07 14:04:20 UTC (rev 15503) @@ -30,6 +30,8 @@ public class JCPEditorAppletBugsTest extends AbstractAppletTest { + private static int SAVE_AS_MOL_COMBOBOX_POS=6; + @Test public void testSquareSelectSingleAtom() { JPanelFixture jcppanel = applet.panel("appletframe"); @@ -433,7 +435,7 @@ Assert.assertEquals(12, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount() ); } - + @Test public void testBug70() throws FileNotFoundException, CDKException{ JPanelFixture jcppanel=applet.panel("appletframe"); JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; @@ -441,7 +443,7 @@ applet.click(); Point2d point = getAtomPoint(panel,0); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)point.x, (int)point.y), MouseButton.RIGHT_BUTTON,1); - applet.menuItem("showACProperties2").click(); + applet.menuItem("showACProperties").click(); DialogFixture dialog = applet.dialog(); JTextComponent textfield = dialog.robot.finder().find(JTextComponentMatcher.withName("Title")); textfield.setText("aaa"); @@ -450,7 +452,7 @@ applet.menuItem("save").click(); dialog = applet.dialog(); JComboBox combobox = dialog.robot.finder().find(new ComboBoxTextComponentMatcher("org.openscience.jchempaint.io.JCPFileFilter")); - combobox.setSelectedItem(combobox.getItemAt(5)); + combobox.setSelectedItem(combobox.getItemAt(SAVE_AS_MOL_COMBOBOX_POS)); JTextComponentFixture text = dialog.textBox(); File file=new File(System.getProperty("java.io.tmpdir")+File.separator+"test.mol"); if(file.exists()) @@ -472,7 +474,7 @@ applet.menuItem("saveAs").click(); DialogFixture dialog = applet.dialog(); JComboBox combobox = dialog.robot.finder().find(new ComboBoxTextComponentMatcher("org.openscience.jchempaint.io.JCPFileFilter")); - combobox.setSelectedItem(combobox.getItemAt(5)); + combobox.setSelectedItem(combobox.getItemAt(SAVE_AS_MOL_COMBOBOX_POS)); JTextComponentFixture text = dialog.textBox(); File file=new File(System.getProperty("java.io.tmpdir")+File.separator+"test1.mol"); if(file.exists()) @@ -488,13 +490,13 @@ applet.menuItem("new").click(); applet.button("hexagon").click(); applet.click(); - applet.button("bond").click(); + applet.button("bondTool").click(); Point2d moveto=getAtomPoint(panel,0); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)moveto.x,(int)moveto.y), MouseButton.LEFT_BUTTON,1); applet.menuItem("saveAs").click(); dialog = applet.dialog(); combobox = dialog.robot.finder().find(new ComboBoxTextComponentMatcher("org.openscience.jchempaint.io.JCPFileFilter")); - combobox.setSelectedItem(combobox.getItemAt(5)); + combobox.setSelectedItem(combobox.getItemAt(SAVE_AS_MOL_COMBOBOX_POS)); text = dialog.textBox(); file=new File(System.getProperty("java.io.tmpdir")+File.separator+"test2.mol"); if(file.exists()) @@ -520,7 +522,7 @@ applet.menuItem("saveAs").click(); dialog = applet.dialog(); combobox = dialog.robot.finder().find(new ComboBoxTextComponentMatcher("org.openscience.jchempaint.io.JCPFileFilter")); - combobox.setSelectedItem(combobox.getItemAt(5)); + combobox.setSelectedItem(combobox.getItemAt(SAVE_AS_MOL_COMBOBOX_POS)); text = dialog.textBox(); text.setText(file.toString()); okbutton = new JButtonFixture(dialog.robot, dialog.robot.finder().find(new ButtonTextComponentMatcher("Save"))); @@ -556,8 +558,14 @@ applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)point.x, (int)point.y), MouseButton.LEFT_BUTTON,1); point = getBondPoint(panel,2); applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)point.x, (int)point.y), MouseButton.LEFT_BUTTON,1); - Assert.assertEquals(6, panel.getChemModel().getMoleculeSet().getMolecule(0).getAtomCount()); - Assert.assertEquals(4, panel.getChemModel().getMoleculeSet().getMolecule(0).getBondCount()); + + int atomCount=0, bondCount=0; + for(IAtomContainer atc : panel.getChemModel().getMoleculeSet().atomContainers()) { + atomCount+=atc.getAtomCount(); + bondCount+=atc.getBondCount(); + } + Assert.assertEquals(6, atomCount); + Assert.assertEquals(4, bondCount); restoreModelToEmpty(); } Modified: jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java =================================================================== --- jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java 2010-04-07 11:58:46 UTC (rev 15502) +++ jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletMenuTest.java 2010-04-07 14:04:20 UTC (rev 15503) @@ -547,20 +547,10 @@ Assert.assertEquals(1,panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); Point2d moveto=panel.getRenderPanel().getRenderer().toScreenCoordinates(panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(4).getPoint2d().x,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtom(4).getPoint2d().y); JPopupMenuFixture popup = applet.panel("renderpanel").showPopupMenuAt(new Point((int)moveto.x,(int)moveto.y)); - try { - Thread.sleep(5000); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - popup.menuItem("cut2").click(); + //try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();} + popup.menuItem("cut").click(); Assert.assertEquals(3,panel.getChemModel().getMoleculeSet().getAtomContainerCount()); - try { - Thread.sleep(5000); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + //try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();} Assert.assertEquals(1,panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); Assert.assertEquals(4,panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); Assert.assertEquals(2,panel.getChemModel().getMoleculeSet().getAtomContainer(2).getAtomCount()); @@ -576,22 +566,6 @@ Assert.assertEquals(22,panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); } - @Test public void testMenuTemplatesAlkaloids() throws CDKException, ClassNotFoundException, IOException, CloneNotSupportedException { - restoreModelWithBasicmol(); - applet.menuItem("alkaloids").click(); - DialogFixture dialog = applet.dialog("templates"); - JButtonFixture morphinebutton = new JButtonFixture(dialog.robot, dialog.robot.finder().find(new ButtonTextComponentMatcher("Morphine"))); - morphinebutton.click(); - Assert.assertEquals(2,panel.getChemModel().getMoleculeSet().getAtomContainerCount()); - Assert.assertEquals(22,panel.getChemModel().getMoleculeSet().getAtomContainer(1).getAtomCount()); - applet.menuItem("alkaloids").click(); - dialog = applet.dialog("templates"); - morphinebutton = new JButtonFixture(dialog.robot, dialog.robot.finder().find(new ButtonTextComponentMatcher("Morphine"))); - morphinebutton.click(); - Assert.assertEquals(3,panel.getChemModel().getMoleculeSet().getAtomContainerCount()); - Assert.assertEquals(22,panel.getChemModel().getMoleculeSet().getAtomContainer(2).getAtomCount()); - } - @Test public void testSwitchLanguage(){ applet.menuItem("options").click(); DialogFixture dialog = applet.dialog(); @@ -600,22 +574,29 @@ JComboBox combobox = (JComboBox)dialog.robot.finder().find(new NameMatcher("language")); for(int i=0;i<combobox.getItemCount();i++){ if(((String)combobox.getItemAt(i)).equals("German")){ - combobox.setSelectedItem(combobox.getItemAt(i)); + combobox.setSelectedIndex(i); break; } } JButtonFixture applybutton = new JButtonFixture(dialog.robot, (JButton)dialog.robot.finder().find(new NameMatcher("apply",true))); applybutton.click(); Assert.assertEquals("Neu", applet.menuItem("new").component().getText()); + for(int i=0;i<combobox.getItemCount();i++){ if(((String)combobox.getItemAt(i)).equals("American English")){ - combobox.setSelectedItem(combobox.getItemAt(i)); + combobox.setSelectedIndex(i); + System.out.println("set USA"); break; } } - JButtonFixture okbutton = new JButtonFixture(dialog.robot, (JButton)dialog.robot.finder().find(new NameMatcher("ok",true))); + + JButtonFixture okbutton = new JButtonFixture(dialog.robot, (JButton)dialog.robot.finder().find(new NameMatcher("apply",true))); okbutton.click(); + Assert.assertFalse(dialog.component().isShowing()); - Assert.assertEquals("New", applet.menuItem("new").component().getText()); + Assert.assertEquals("New", applet.menuItem("new").component().getText()); // fails in test only? } + + + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2010-04-27 09:37:24
|
Revision: 15535 http://cdk.svn.sourceforge.net/cdk/?rev=15535&view=rev Author: shk3 Date: 2010-04-27 09:37:18 +0000 (Tue, 27 Apr 2010) Log Message: ----------- Added a test for reaction drawing Modified Paths: -------------- jchempaint/trunk/src/main/org/openscience/jchempaint/controller/ReactionHub.java jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java Modified: jchempaint/trunk/src/main/org/openscience/jchempaint/controller/ReactionHub.java =================================================================== --- jchempaint/trunk/src/main/org/openscience/jchempaint/controller/ReactionHub.java 2010-04-26 17:58:56 UTC (rev 15534) +++ jchempaint/trunk/src/main/org/openscience/jchempaint/controller/ReactionHub.java 2010-04-27 09:37:18 UTC (rev 15535) @@ -92,7 +92,7 @@ reaction.addProduct(mol); chemModel.getMoleculeSet().removeAtomContainer(oldcontainer); if(chemModel.getMoleculeSet().getAtomContainerCount()==0) - chemModel.getMoleculeSet().addAtomContainer(chemModel.getBuilder().newInstance(IAtomContainer.class)); + chemModel.getMoleculeSet().addAtomContainer(chemModel.getBuilder().newInstance(IMolecule.class)); if(controllerhub.getUndoRedoFactory()!=null && controllerhub.getUndoRedoHandler()!=null){ IUndoRedoable undoredo = controllerhub.getUndoRedoFactory().getMakeReactantOrProductInExistingReactionEdit(chemModel, newContainer, oldcontainer, reactionId, false, "Make Reactant in "+reactionId); controllerhub.getUndoRedoHandler().postEdit(undoredo); Modified: jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java =================================================================== --- jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java 2010-04-26 17:58:56 UTC (rev 15534) +++ jchempaint/trunk/src/test/org/openscience/jchempaint/JCPEditorAppletDrawingTest.java 2010-04-27 09:37:18 UTC (rev 15535) @@ -306,4 +306,36 @@ applet.button("redo").click(); Assert.assertEquals(oldAtomCount-1, panel.getChemModel().getMoleculeSet().getAtomContainer(0).getAtomCount()); } + + @Test public void drawReactions(){ + restoreModelToEmpty(); + JPanelFixture jcppanel=applet.panel("appletframe"); + JChemPaintPanel panel = (JChemPaintPanel)jcppanel.target; + applet.button("hexagon").click(); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point(100,50), MouseButton.LEFT_BUTTON,1); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point(400,50), MouseButton.LEFT_BUTTON,1); + applet.button("reactionArrow").click(); + ComponentDragAndDrop dandd = new ComponentDragAndDrop(applet.panel("renderpanel").robot); + dandd.drag(applet.panel("renderpanel").component(), new Point(150,50)); + dandd.drop(applet.panel("renderpanel").component(), new Point(350,50)); + Assert.assertEquals(1, panel.getChemModel().getReactionSet().getReactionCount()); + Assert.assertEquals(1, panel.getChemModel().getReactionSet().getReaction(0).getReactantCount()); + Assert.assertEquals(1, panel.getChemModel().getReactionSet().getReaction(0).getProductCount()); + applet.button("hexagon").click(); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point(500,50), MouseButton.LEFT_BUTTON,1); + Point2d point = getAtomPoint(panel,0); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point((int)point.x, (int)point.y), MouseButton.RIGHT_BUTTON,1); + applet.menuItem("addProductToExistingReaction").click(); + Assert.assertEquals(1, panel.getChemModel().getReactionSet().getReactionCount()); + Assert.assertEquals(1, panel.getChemModel().getReactionSet().getReaction(0).getReactantCount()); + Assert.assertEquals(2, panel.getChemModel().getReactionSet().getReaction(0).getProductCount()); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point(100,300), MouseButton.LEFT_BUTTON,1); + applet.panel("renderpanel").robot.click(applet.panel("renderpanel").component(), new Point(400,300), MouseButton.LEFT_BUTTON,1); + applet.button("reactionArrow").click(); + dandd.drag(applet.panel("renderpanel").component(), new Point(150,300)); + dandd.drop(applet.panel("renderpanel").component(), new Point(350,300)); + Assert.assertEquals(2, panel.getChemModel().getReactionSet().getReactionCount()); + Assert.assertEquals(1, panel.getChemModel().getReactionSet().getReaction(1).getReactantCount()); + Assert.assertEquals(1, panel.getChemModel().getReactionSet().getReaction(1).getProductCount()); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |