package notepad; import javax.swing.event.UndoableEditEvent; import javax.swing.event.UndoableEditListener; import javax.swing.undo.UndoManager; class Notepad { //fields private UndoManager undo = new UndoManager(); private UndoAction undoAction = new UndoAction(this); private RedoAction redoAction = new RedoAction(this); //initialization Notepad() { //MENU if (ediT == null) { ediT = new JMenu("Edit"); } //undo ediT.add(undoAction); //redo ediT.add(redoAction); ediT.addSeparator(); menubar.add(ediT); //TOOLBAR //undo toolBar.add(undoAction); //redo toolBar.add(redoAction); toolBar.addSeparator(); //button/menu listeners textArea.getDocument().addUndoableEditListener(new UndoableEditListener(){ public void undoableEditHappened(UndoableEditEvent e){ //Remember the edit and update the menus undo.addEdit(e.getEdit()); undoAction.update(); redoAction.update(); } }); } public UndoManager getUndo() { return undo; } public RedoAction getRedoAction() { return redoAction; } public UndoAction getUndoAction() { return undoAction; } }