Class RMUndoer

  • All Implemented Interfaces:
    RMArchiver.Archiving, java.lang.Cloneable

    public class RMUndoer
    extends RMObject
    RMUndoer - this object manages undo by keeping copies of changed objects. For objects to be undoable they must do the following:

    Call: undoer.addDirtyObject(this) - This registers and objects for possible change Implement: undoClone() or clone() - A typical clone implementation should do, except that all relationship objects should be copied deep unless they also register with addDirtyObject(). Objects are copied the first time they are sent to addDirtyObject(). Implement: undoEquals() or equals() - A typical equals implementation should do. At the end of the current event, objects that end up being equal to their registered clone are trimmed to avoid unecessary archival (and no-op undo events). Implement: undoCopy(anObj) or copy(anObj) - This method should restore the state of an object from its registered clone. All relationship objects should be copied deep, unless they also register with addDirtyObject().

    • Constructor Detail

      • RMUndoer

        public RMUndoer()
        Creates a new undoer.
    • Method Detail

      • getDirtyObjectCount

        public int getDirtyObjectCount()
        Returns the number of dirty objects in the current undo record.
      • addDirtyObject

        public void addDirtyObject​(RMObject anObj)
        Adds the given object to the current undo record.
      • saveChanges

        public void saveChanges()
        Pushes current undo record on the stack and opens new one.
      • undo

        public void undo()
        Pops last undo event off stack an has it update all changed objects it contains.
      • redo

        public void redo()
        Pops last redo event off stack and has it update all changed objects it contains.
      • disable

        public void disable()
        Disables undoer so it can receive new changes.
      • enable

        public void enable()
        Enables undoer.
      • getDisabled

        public int getDisabled()
        Returns whether undoer is disabled.
      • setDisabled

        public void setDisabled​(int aValue)
        Sets whether undoer is disabled.
      • getCoalesce

        public boolean getCoalesce()
        Returns whether undoer coalesces changes.
      • setCoalesce

        public void setCoalesce​(boolean aFlag)
        Sets whether undoer coalesces changes.
      • reset

        public void reset()
        Resets the undoer to its initial state (good to do when a document is saved).
      • isBenignChange

        public boolean isBenignChange​(java.lang.String aString)
        Returns whether a given change doesn't really effect signficant state change.
      • hasUndos

        public boolean hasUndos()
        Returns whether undoer has undoable changes stored away.
      • setUndoTitle

        public void setUndoTitle​(java.lang.String aString)
        Sets the title of the current undo.
      • undos

        public java.util.List undos()
        Returns the list of undos.
      • redos

        public java.util.List redos()
        Returns the list of redos.
      • allUndos

        public java.util.List allUndos()
        Returns all undos (including the current one, if changes are pending).
      • getUndoSelectedObjects

        public java.util.List getUndoSelectedObjects()
        Returns the list of objects that should be selected after current undo is fired.
      • setUndoSelectedObjects

        public void setUndoSelectedObjects​(java.util.List aList)
        Sets the list of objects that should be selected after current undo is fired.
      • getRedoSelectedObjects

        public java.util.List getRedoSelectedObjects()
        Returns the list of objects that should be selected after current undo is redone.
      • setRedoSelectedObjects

        public void setRedoSelectedObjects​(java.util.List aList)
        Sets the list of objects that should be selected after current undo is redone.
      • isDuplicate

        public boolean isDuplicate​(java.lang.String aTitle,
                                   RMObject anObj)
        Returns whether given title is title of last undo.