1 31 32 package org.antlr.xjlib.appkit.undo; 33 34 import javax.swing.*; 35 import javax.swing.undo.CannotUndoException ; 36 import javax.swing.undo.UndoManager ; 37 import java.awt.event.ActionEvent ; 38 39 public class XJUndoAction extends AbstractAction { 40 41 protected UndoManager undoManager; 42 protected XJRedoAction redoAction; 43 44 public XJUndoAction(UndoManager manager) { 45 super("Undo"); 46 setEnabled(false); 47 this.undoManager = manager; 48 } 49 50 public void setRedoAction(XJRedoAction action) { 51 this.redoAction = action; 52 } 53 54 public void actionPerformed(ActionEvent e) { 55 try { 56 if(undoManager.canUndo()) 57 undoManager.undo(); 58 } catch (CannotUndoException ex) { 59 ex.printStackTrace(); 60 } 61 updateUndoState(); 62 redoAction.updateRedoState(); 63 } 64 65 protected void updateUndoState() { 66 if (undoManager.canUndo()) { 67 setEnabled(true); 68 putValue(Action.NAME, undoManager.getUndoPresentationName()); 69 } else { 70 setEnabled(false); 71 putValue(Action.NAME, "Undo"); 72 } 73 } 74 } 75 | Popular Tags |