- /*
 - * @(#)AbstractUndoableEdit.java 1.24 01/02/14
 - *
 - * Copyright 1997-2001 Sun Microsystems, Inc. All Rights Reserved.
 - *
 - * This software is the proprietary information of Sun Microsystems, Inc.
 - * Use is subject to license terms.
 - *
 - */
 - package javax.swing.undo;
 - import javax.swing.UIManager;
 - import java.io.Serializable;
 - /**
 - * An abstract implementation of UndoableEdit, implementing simple
 - * responses to all boolean methods in that interface.
 - *
 - * @version 1.24 02/14/01
 - * @author Ray Ryan
 - */
 - public class AbstractUndoableEdit implements UndoableEdit, Serializable {
 - /**
 - * String returned by getUndoPresentationName()
 - *
 - * @see javax.swing.UIDefaults
 - */
 - protected static final String UndoName = "Undo";
 - /**
 - * String returned by getRedoPresentationName()
 - *
 - * @see javax.swing.UIDefaults
 - */
 - protected static final String RedoName = "Redo";
 - /**
 - * Defaults to true. Becomes false if this edit is undone, true
 - * again if it is redone.
 - */
 - boolean hasBeenDone;
 - /**
 - * True if this edit has not received die().
 - */
 - boolean alive;
 - public AbstractUndoableEdit() {
 - super();
 - hasBeenDone = true;
 - alive = true;
 - }
 - /**
 - * Sets alive to false. Note that this is a one way operation:
 - * dead edits cannot be resurrected. Sending undo() or redo() to
 - * a dead edit results in an exception being thrown.
 - *
 - * Typically an edit is killed when it is consolidated by another
 - * edit's addEdit() or replaceEdit() method, or when it is
 - * dequeued from an UndoManager
 - */
 - public void die() {
 - alive = false;
 - }
 - /**
 - * Throws CannotUndoException if canUndo() returns false. Sets
 - * hasBeenDone to false. Subclasses should override to undo the
 - * operation represented by this edit. Override should begin with
 - * a call to super.
 - *
 - * @see #canUndo
 - */
 - public void undo() throws CannotUndoException {
 - if (!canUndo()) {
 - throw new CannotUndoException();
 - }
 - hasBeenDone = false;
 - }
 - /**
 - * Returns true if this edit is alive and hasBeenDone is true.
 - *
 - * @see #die
 - * @see #undo
 - * @see #redo
 - */
 - public boolean canUndo() {
 - return alive && hasBeenDone;
 - }
 - /**
 - * Throws CannotRedoException if canRedo() returns false. Sets
 - * hasBeenDone to true. Subclasses should override to redo the
 - * operation represented by this edit. Override should begin with
 - * a call to super.
 - *
 - * @see #canRedo
 - */
 - public void redo() throws CannotRedoException {
 - if (!canRedo()) {
 - throw new CannotRedoException();
 - }
 - hasBeenDone = true;
 - }
 - /**
 - * Returns true if this edit is alive and hasBeenDone is false.
 - *
 - * @see #die
 - * @see #undo
 - * @see #redo
 - */
 - public boolean canRedo() {
 - return alive && !hasBeenDone;
 - }
 - /**
 - * This default implementation returns false.
 - *
 - * @see UndoableEdit#addEdit
 - */
 - public boolean addEdit(UndoableEdit anEdit) {
 - return false;
 - }
 - /**
 - * This default implementation returns false.
 - *
 - * @see UndoableEdit#replaceEdit
 - */
 - public boolean replaceEdit(UndoableEdit anEdit) {
 - return false;
 - }
 - /**
 - * This default implementation returns true.
 - *
 - * @see UndoableEdit#isSignificant
 - */
 - public boolean isSignificant() {
 - return true;
 - }
 - /**
 - * This default implementation returns "". Used by
 - * getUndoPresentationName() and getRedoPresentationName() to
 - * construct the strings they return. Subclasses shoul override to
 - * return an appropriate description of the operation this edit
 - * represents.
 - *
 - * @see #getUndoPresentationName
 - * @see #getRedoPresentationName
 - */
 - public String getPresentationName() {
 - return "";
 - }
 - /**
 - * If getPresentationName() returns "", returns
 - * AbstractUndoableEdit.UndoName. Otherwise returns
 - * AbstractUndoableEdit.UndoName followed by a space and
 - * getPresentationName()
 - *
 - * @see #getPresentationName
 - */
 - public String getUndoPresentationName() {
 - String name = getPresentationName();
 - if (name != "") {
 - name = UIManager.getString("AbstractUndoableEdit.undoText") + " " +
 - name;
 - } else {
 - name = UIManager.getString("AbstractUndoableEdit.undoText");
 - }
 - return name;
 - }
 - /**
 - * If getPresentationName() returns "", returns
 - * AbstractUndoableEdit.RedoName. Otherwise returns
 - * AbstractUndoableEdit.RedoName followed by a space and
 - * getPresentationName()
 - *
 - * @see #getPresentationName
 - */
 - public String getRedoPresentationName() {
 - String name = getPresentationName();
 - if (name != "") {
 - name = UIManager.getString("AbstractUndoableEdit.redoText") + " " +
 - name;
 - } else {
 - name = UIManager.getString("AbstractUndoableEdit.redoText");
 - }
 - return name;
 - }
 - /**
 - * Returns a string that displays and identifies this
 - * object's properties.
 - *
 - * @return a String representation of this object
 - */
 - public String toString()
 - {
 - return super.toString()
 - + " hasBeenDone: " + hasBeenDone
 - + " alive: " + alive;
 - }
 - }