    FOREIGN MODULE javax_swing_undo;

    IMPORT
        java_io,
        java_lang,
        java_util,
        javax_swing_event;

    TYPE

      AbstractUndoableEdit* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + UndoableEdit + java_io.Serializable)
                              STATIC
                                UndoName! = "Undo";
                                RedoName! = "Redo";
                                PROCEDURE Init*() : AbstractUndoableEdit,CONSTRUCTOR;
                              END;

      CannotRedoException* = POINTER TO EXTENSIBLE RECORD (java_lang.RuntimeException)
                             STATIC
                               PROCEDURE Init*() : CannotRedoException,CONSTRUCTOR;
                             END;

      CannotUndoException* = POINTER TO EXTENSIBLE RECORD (java_lang.RuntimeException)
                             STATIC
                               PROCEDURE Init*() : CannotUndoException,CONSTRUCTOR;
                             END;

      CompoundEdit* = POINTER TO EXTENSIBLE RECORD (AbstractUndoableEdit)
                        edits! : java_util.Vector;
                      STATIC
                        PROCEDURE Init*() : CompoundEdit,CONSTRUCTOR;
                      END;

      StateEdit* = POINTER TO EXTENSIBLE RECORD (AbstractUndoableEdit)
                     object! : StateEditable;
                     preState! : java_util.Hashtable;
                     postState! : java_util.Hashtable;
                     undoRedoName! : java_lang.String;
                   STATIC
                     RCSID! = "$Id: StateEdit.java,v 1.6 1997/10/01 20:05:51 sandipc Exp $";
                     PROCEDURE Init*(p0 : StateEditable) : StateEdit,CONSTRUCTOR;
                     PROCEDURE Init*(p0 : StateEditable;
                                     p1 : java_lang.String) : StateEdit,CONSTRUCTOR;
                   END;

      StateEditable* = POINTER TO INTERFACE RECORD (java_lang.Object)
                       STATIC
                         RCSID* = "$Id: StateEditable.java,v 1.2 1997/09/08 19:39:08 marklin Exp $";
                       END;

      UndoableEdit* = POINTER TO INTERFACE RECORD (java_lang.Object)
                      END;

      UndoableEditSupport* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)
                               updateLevel! : INTEGER;
                               compoundEdit! : CompoundEdit;
                               listeners! : java_util.Vector;
                               realSource! : java_lang.Object;
                             STATIC
                               PROCEDURE Init*() : UndoableEditSupport,CONSTRUCTOR;
                               PROCEDURE Init*(p0 : java_lang.Object) : UndoableEditSupport,CONSTRUCTOR;
                             END;

      UndoManager* = POINTER TO EXTENSIBLE RECORD (CompoundEdit + javax_swing_event.UndoableEditListener)
                     STATIC
                       PROCEDURE Init*() : UndoManager,CONSTRUCTOR;
                     END;

    PROCEDURE (self:AbstractUndoableEdit) addEdit*(p0 : UndoableEdit) : BOOLEAN,NEW,EXTENSIBLE;

    PROCEDURE (self:AbstractUndoableEdit) canRedo*() : BOOLEAN,NEW,EXTENSIBLE;

    PROCEDURE (self:AbstractUndoableEdit) canUndo*() : BOOLEAN,NEW,EXTENSIBLE;

    PROCEDURE (self:AbstractUndoableEdit) die*(),NEW,EXTENSIBLE;

    PROCEDURE (self:AbstractUndoableEdit) getPresentationName*() : java_lang.String,NEW,EXTENSIBLE;

    PROCEDURE (self:AbstractUndoableEdit) getRedoPresentationName*() : java_lang.String,NEW,EXTENSIBLE;

    PROCEDURE (self:AbstractUndoableEdit) getUndoPresentationName*() : java_lang.String,NEW,EXTENSIBLE;

    PROCEDURE (self:AbstractUndoableEdit) isSignificant*() : BOOLEAN,NEW,EXTENSIBLE;

    PROCEDURE (self:AbstractUndoableEdit) redo*(),NEW,EXTENSIBLE;

    PROCEDURE (self:AbstractUndoableEdit) replaceEdit*(p0 : UndoableEdit) : BOOLEAN,NEW,EXTENSIBLE;

    PROCEDURE (self:AbstractUndoableEdit) toString*() : java_lang.String,EXTENSIBLE;

    PROCEDURE (self:AbstractUndoableEdit) undo*(),NEW,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) addEdit*(p0 : UndoableEdit) : BOOLEAN,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) canRedo*() : BOOLEAN,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) canUndo*() : BOOLEAN,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) die*(),EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) end*(),NEW,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) getPresentationName*() : java_lang.String,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) getRedoPresentationName*() : java_lang.String,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) getUndoPresentationName*() : java_lang.String,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) isInProgress*() : BOOLEAN,NEW,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) isSignificant*() : BOOLEAN,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) lastEdit!() : UndoableEdit,NEW,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) redo*(),EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) toString*() : java_lang.String,EXTENSIBLE;

    PROCEDURE (self:CompoundEdit) undo*(),EXTENSIBLE;

    PROCEDURE (self:StateEdit) end*(),NEW,EXTENSIBLE;

    PROCEDURE (self:StateEdit) getPresentationName*() : java_lang.String,EXTENSIBLE;

    PROCEDURE (self:StateEdit) init!(p0 : StateEditable;
                                     p1 : java_lang.String),NEW,EXTENSIBLE;

    PROCEDURE (self:StateEdit) redo*(),EXTENSIBLE;

    PROCEDURE (self:StateEdit) removeRedundantState!(),NEW,EXTENSIBLE;

    PROCEDURE (self:StateEdit) undo*(),EXTENSIBLE;

    PROCEDURE (self:StateEditable) restoreState*(p0 : java_util.Hashtable),NEW,ABSTRACT;

    PROCEDURE (self:StateEditable) storeState*(p0 : java_util.Hashtable),NEW,ABSTRACT;

    PROCEDURE (self:UndoableEdit) addEdit*(p0 : UndoableEdit) : BOOLEAN,NEW,ABSTRACT;

    PROCEDURE (self:UndoableEdit) canRedo*() : BOOLEAN,NEW,ABSTRACT;

    PROCEDURE (self:UndoableEdit) canUndo*() : BOOLEAN,NEW,ABSTRACT;

    PROCEDURE (self:UndoableEdit) die*(),NEW,ABSTRACT;

    PROCEDURE (self:UndoableEdit) getPresentationName*() : java_lang.String,NEW,ABSTRACT;

    PROCEDURE (self:UndoableEdit) getRedoPresentationName*() : java_lang.String,NEW,ABSTRACT;

    PROCEDURE (self:UndoableEdit) getUndoPresentationName*() : java_lang.String,NEW,ABSTRACT;

    PROCEDURE (self:UndoableEdit) isSignificant*() : BOOLEAN,NEW,ABSTRACT;

    PROCEDURE (self:UndoableEdit) redo*(),NEW,ABSTRACT;

    PROCEDURE (self:UndoableEdit) replaceEdit*(p0 : UndoableEdit) : BOOLEAN,NEW,ABSTRACT;

    PROCEDURE (self:UndoableEdit) undo*(),NEW,ABSTRACT;

    PROCEDURE (self:UndoableEditSupport) _postEdit!(p0 : UndoableEdit),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoableEditSupport) addUndoableEditListener*(p0 : javax_swing_event.UndoableEditListener),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoableEditSupport) beginUpdate*(),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoableEditSupport) createCompoundEdit!() : CompoundEdit,NEW,EXTENSIBLE;

    PROCEDURE (self:UndoableEditSupport) endUpdate*(),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoableEditSupport) getUpdateLevel*() : INTEGER,NEW,EXTENSIBLE;

    PROCEDURE (self:UndoableEditSupport) postEdit*(p0 : UndoableEdit),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoableEditSupport) removeUndoableEditListener*(p0 : javax_swing_event.UndoableEditListener),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoableEditSupport) toString*() : java_lang.String,EXTENSIBLE;

    PROCEDURE (self:UndoManager) addEdit*(p0 : UndoableEdit) : BOOLEAN,EXTENSIBLE;

    PROCEDURE (self:UndoManager) canRedo*() : BOOLEAN,EXTENSIBLE;

    PROCEDURE (self:UndoManager) canUndo*() : BOOLEAN,EXTENSIBLE;

    PROCEDURE (self:UndoManager) canUndoOrRedo*() : BOOLEAN,NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) discardAllEdits*(),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) editToBeRedone!() : UndoableEdit,NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) editToBeUndone!() : UndoableEdit,NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) end*(),EXTENSIBLE;

    PROCEDURE (self:UndoManager) getLimit*() : INTEGER,NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) getRedoPresentationName*() : java_lang.String,EXTENSIBLE;

    PROCEDURE (self:UndoManager) getUndoOrRedoPresentationName*() : java_lang.String,NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) getUndoPresentationName*() : java_lang.String,EXTENSIBLE;

    PROCEDURE (self:UndoManager) redo*(),EXTENSIBLE;

    PROCEDURE (self:UndoManager) redoTo!(p0 : UndoableEdit),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) setLimit*(p0 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) toString*() : java_lang.String,EXTENSIBLE;

    PROCEDURE (self:UndoManager) trimEdits!(p0 : INTEGER;
                                            p1 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) trimForLimit!(),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) undo*(),EXTENSIBLE;

    PROCEDURE (self:UndoManager) undoOrRedo*(),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) undoTo!(p0 : UndoableEdit),NEW,EXTENSIBLE;

    PROCEDURE (self:UndoManager) undoableEditHappened*(p0 : javax_swing_event.UndoableEditEvent),NEW,EXTENSIBLE;

    END javax_swing_undo.