3
* $Date: 2007-05-01 21:15:34 +0200 (Tue, 01 May 2007) $
6
* Copyright (C) 2005-2007 The Chemistry Development Kit (CDK) project
8
* Contact: cdk-devel@lists.sourceforge.net
10
* This program is free software; you can redistribute it and/or
11
* modify it under the terms of the GNU Lesser General Public License
12
* as published by the Free Software Foundation; either version 2.1
13
* of the License, or (at your option) any later version.
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU Lesser General Public License for more details.
20
* You should have received a copy of the GNU Lesser General Public License
21
* along with this program; if not, write to the Free Software
22
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24
package org.openscience.cdk.applications.undoredo;
26
import javax.swing.undo.AbstractUndoableEdit;
27
import javax.swing.undo.CannotRedoException;
28
import javax.swing.undo.CannotUndoException;
30
import org.openscience.cdk.interfaces.IAtomContainer;
31
import org.openscience.cdk.interfaces.IBond;
32
import org.openscience.cdk.interfaces.IChemModel;
33
import org.openscience.cdk.tools.manipulator.ChemModelManipulator;
38
public class BondChangeEdit extends AbstractUndoableEdit {
40
private static final long serialVersionUID = -2723716036619377584L;
42
private IBond newBond;
44
private IBond formerBond;
46
private IChemModel chemModel;
48
public BondChangeEdit(IChemModel chemModel, IBond formerBond, IBond newBond) {
49
this.chemModel = chemModel;
50
this.formerBond = formerBond;
51
this.newBond = newBond;
52
if (formerBond != null) {
53
formerBond.setAtom(newBond.getAtom(0), 0);
54
formerBond.setAtom(newBond.getAtom(1), 1);
61
* @see javax.swing.undo.UndoableEdit#redo()
63
public void redo() throws CannotRedoException {
64
IAtomContainer container = ChemModelManipulator.getRelevantAtomContainer(chemModel, formerBond);
65
container.removeBond(formerBond);
66
container.addBond(newBond);
72
* @see javax.swing.undo.UndoableEdit#undo()
74
public void undo() throws CannotUndoException {
75
System.out.println("BondChangeEdit undo");
76
IAtomContainer container = ChemModelManipulator.getRelevantAtomContainer(chemModel, newBond);
77
container.removeBond(newBond);
78
container.addBond(formerBond);
84
* @see javax.swing.undo.UndoableEdit#canRedo()
86
public boolean canRedo() {
93
* @see javax.swing.undo.UndoableEdit#canUndo()
95
public boolean canUndo() {
102
* @see javax.swing.undo.UndoableEdit#getPresentationName()
104
public String getPresentationName() {
105
return "Change Bond";