Mega Code Archive

 
Categories / Java by API / Javax Swing Undo
 

New UndoManager()

import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JToolBar; import javax.swing.UIManager; import javax.swing.undo.CannotUndoException; import javax.swing.undo.UndoManager; public class MainClass {   public static void main(final String args[]) {     JFrame frame = new JFrame("Undo Sample");     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     JTextArea textArea = new JTextArea();     JScrollPane scrollPane = new JScrollPane(textArea);     UndoManager manager = new UndoManager();     textArea.getDocument().addUndoableEditListener(manager);     JToolBar toolbar = new JToolBar();     JButton undoButton = new JButton(new UndoAction(manager, (String) UIManager         .get("AbstractUndoableEdit.undoText")));     toolbar.add(undoButton);     Container content = frame.getContentPane();     content.add(toolbar, BorderLayout.NORTH);     content.add(scrollPane, BorderLayout.CENTER);     frame.setSize(300, 150);     frame.setVisible(true);   } } abstract class UndoRedoAction extends AbstractAction {   UndoManager undoManager = new UndoManager();   String errorMessage = "Cannot undo";   String errorTitle = "Undo Problem";   protected UndoRedoAction(UndoManager manager, String name) {     super(name);     undoManager = manager;   }   public void setErrorMessage(String newValue) {     errorMessage = newValue;   }   public void setErrorTitle(String newValue) {     errorTitle = newValue;   }   protected void showMessage(Object source) {     if (source instanceof Component) {       JOptionPane.showMessageDialog((Component) source, errorMessage, errorTitle,           JOptionPane.WARNING_MESSAGE);     } else {       System.err.println(errorMessage);     }   } } class UndoAction extends UndoRedoAction {   public UndoAction(UndoManager manager, String name) {     super(manager, name);     setErrorMessage("Cannot undo");     setErrorTitle("Undo Problem");   }   public void actionPerformed(ActionEvent actionEvent) {     try {       undoManager.undo();     } catch (CannotUndoException cannotUndoException) {       showMessage(actionEvent.getSource());     }   } }