

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.undo.*;

class UndoAction extends AbstractAction {
	 Notepad notepad;

    public UndoAction(Notepad notepad){
                        super( "Undo" );
        putValue( Action.SMALL_ICON, 
                                new ImageIcon( this.getClass().getResource( "images/undo.gif" ) ) );
        setEnabled( false );
        this.notepad = notepad;
    }
    public void actionPerformed( ActionEvent e ) {
        try {
            notepad.undo.undo();
        }
        catch ( CannotUndoException ex ) {
            System.out.println( "Unable to undo: " + ex );
            ex.printStackTrace();
        }
        update();
        notepad.redoAction.update();
    }
    protected void update() {
        if( notepad.undo.canUndo() ) {
            setEnabled( true );
            putValue( "Undo", notepad.undo.getUndoPresentationName() );
        }
        else {
            setEnabled( false );
            putValue( Action.NAME, "Undo" );
        }
    }
}
