import java.awt.event.ActionEvent;
import javax.swing.*;

class RedoAction extends AbstractAction {
  public RedoAction() {
    super("Redo");
    setEnabled(false);
  }
  
  public void actionPerformed(ActionEvent e) {
    try {
      undo.redo();
    } catch (CannotRedoException ex) {
      System.out.println("Unable to redo: " + ex);
      ex.printStackTrace();
    }
    update();
    undoAction.update();
  }
  
  protected void update() {
    if (undo.canRedo()) {
      setEnabled(true);
      putValue(Action.NAME, undo.getRedoPresentationName());
    } else {
      setEnabled(false);
      putValue(Action.NAME, "Redo");
    }
  }
}    
