Package org.openscience.jchempaint.controller.undoredo

Source Code of org.openscience.jchempaint.controller.undoredo.ChangeAtomSymbolEdit

/* $RCSfile$
* $Author: gilleain $
* $Date: 2008-11-26 16:01:05 +0000 (Wed, 26 Nov 2008) $
* $Revision: 13311 $
*
* Copyright (C) 2005-2008 Tobias Helmus, Stefan Kuhn
*
* Contact: cdk-devel@lists.sourceforge.net
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.openscience.jchempaint.controller.undoredo;

import java.io.IOException;
import java.io.OptionalDataException;

import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;

import org.openscience.cdk.config.IsotopeFactory;
import org.openscience.cdk.config.XMLIsotopeFactory;
import org.openscience.cdk.interfaces.IAtom;
import org.openscience.jchempaint.controller.IChemModelRelay;

/**
* Undo/Redo Edit class for the ChangeAtomSymbolAction, containing the methods
* for undoing and redoing the regarding changes
*
* @author tohel
* @cdk.module controlbasic
*/
public class ChangeAtomSymbolEdit implements IUndoRedoable {

    private static final long serialVersionUID = 779682083223003185L;

    private IAtom atom;

  private String formerSymbol;

  private String symbol;
  private String type;
  private IChemModelRelay chemModelRelay=null;

  /**
   * @param atomInRange
   *            The atom been changed
   * @param formerSymbol
   *            The atom symbol before change
   * @param symbol
   *            The atom symbol past change
   */
  public ChangeAtomSymbolEdit(IAtom atomInRange, String formerSymbol,
      String symbol, String type, IChemModelRelay chemModelRelay) {
    this.atom = atomInRange;
    this.formerSymbol = formerSymbol;
    this.symbol = symbol;
    this.type=type;
    this.chemModelRelay=chemModelRelay;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.swing.undo.UndoableEdit#redo()
   */
  public void redo() throws CannotRedoException {
    this.atom.setSymbol(symbol);
    try {
      IsotopeFactory ifac = XMLIsotopeFactory.getInstance(atom.getBuilder());
      this.atom.setMassNumber(ifac.getMajorIsotope(symbol).getMassNumber());
      chemModelRelay.updateAtom(atom);
      ifac.configure(atom);
    } catch (OptionalDataException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    }

  /*
   * (non-Javadoc)
   *
   * @see javax.swing.undo.UndoableEdit#undo()
   */
  public void undo() throws CannotUndoException {
    this.atom.setSymbol(formerSymbol);
    try {
      IsotopeFactory ifac = XMLIsotopeFactory.getInstance(atom.getBuilder());
      this.atom.setMassNumber(ifac.getMajorIsotope(formerSymbol).getMassNumber());
      chemModelRelay.updateAtom(atom);
      ifac.configure(atom);
    } catch (OptionalDataException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    }

  /*
   * (non-Javadoc)
   *
   * @see javax.swing.undo.UndoableEdit#canRedo()
   */
  public boolean canRedo() {
    return true;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.swing.undo.UndoableEdit#canUndo()
   */
  public boolean canUndo() {
    return true;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.swing.undo.UndoableEdit#getPresentationName()
   */
  public String getPresentationName() {
    return type;
  }

}
TOP

Related Classes of org.openscience.jchempaint.controller.undoredo.ChangeAtomSymbolEdit

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.