1 17 package org.columba.core.gui.globalactions; 18 19 import java.awt.KeyboardFocusManager ; 20 import java.awt.Toolkit ; 21 import java.awt.event.ActionEvent ; 22 import java.awt.event.KeyEvent ; 23 import java.beans.PropertyChangeEvent ; 24 import java.beans.PropertyChangeListener ; 25 26 import javax.swing.JComponent ; 27 import javax.swing.KeyStroke ; 28 import javax.swing.text.Document ; 29 import javax.swing.text.JTextComponent ; 30 31 import org.columba.api.gui.frame.IFrameMediator; 32 import org.columba.core.gui.action.AbstractColumbaAction; 33 import org.columba.core.gui.base.UndoDocument; 34 import org.columba.core.resourceloader.GlobalResourceLoader; 35 import org.columba.core.resourceloader.IconKeys; 36 import org.columba.core.resourceloader.ImageLoader; 37 38 public class UndoAction extends AbstractColumbaAction implements 39 PropertyChangeListener { 40 41 private JComponent focusOwner = null; 42 43 public UndoAction(IFrameMediator controller) { 44 super(controller, GlobalResourceLoader.getString(null, null, 45 "menu_edit_undo")); 46 47 putValue(SHORT_DESCRIPTION, GlobalResourceLoader.getString(null, null, 49 "menu_edit_undo_tooltip").replaceAll("&", "")); 50 51 putValue(SMALL_ICON, ImageLoader.getSmallIcon(IconKeys.EDIT_UNDO)); 53 54 putValue(LARGE_ICON, ImageLoader.getIcon(IconKeys.EDIT_UNDO)); 56 57 putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Z, 59 Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); 60 61 setShowToolBarText(false); 63 64 setEnabled(true); 65 KeyboardFocusManager manager = KeyboardFocusManager 66 .getCurrentKeyboardFocusManager(); 67 68 manager.addPropertyChangeListener("permanentFocusOwner", this); 69 70 } 71 72 public void propertyChange(PropertyChangeEvent e) { 73 Object o = e.getNewValue(); 74 if (o instanceof JComponent ) 75 focusOwner = (JComponent ) o; 76 else 77 focusOwner = null; 78 79 } 80 81 public void actionPerformed(ActionEvent evt) { 82 if (focusOwner == null) 83 return; 84 85 if (focusOwner instanceof JTextComponent ) { 86 Document doc = ((JTextComponent )focusOwner).getDocument(); 87 88 if ( doc instanceof UndoDocument) { 89 ((UndoDocument)doc).undo(); 90 } 91 } 92 } 93 94 } 95 | Popular Tags |