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 RedoAction extends AbstractColumbaAction implements 39 PropertyChangeListener { 40 41 private JComponent focusOwner = null; 42 43 public RedoAction(IFrameMediator controller) { 44 super(controller, GlobalResourceLoader.getString(null, null, 45 "menu_edit_redo")); 46 47 putValue(SHORT_DESCRIPTION, GlobalResourceLoader.getString(null, null, 49 "menu_edit_redo_tooltip").replaceAll("&", "")); 50 51 putValue(SMALL_ICON, ImageLoader.getSmallIcon(IconKeys.EDIT_REDO)); 53 54 putValue(LARGE_ICON, ImageLoader.getIcon(IconKeys.EDIT_REDO)); 56 57 setShowToolBarText(false); 59 60 putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Y, 62 Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); 63 64 setEnabled(true); 65 66 KeyboardFocusManager manager = KeyboardFocusManager 67 .getCurrentKeyboardFocusManager(); 68 69 manager.addPropertyChangeListener("permanentFocusOwner", this); 70 71 } 72 73 public void propertyChange(PropertyChangeEvent e) { 74 Object o = e.getNewValue(); 75 if (o instanceof JComponent ) 76 focusOwner = (JComponent ) o; 77 else 78 focusOwner = null; 79 80 } 81 82 public void actionPerformed(ActionEvent evt) { 83 if (focusOwner == null) 84 return; 85 86 if (focusOwner instanceof JTextComponent ) { 87 Document doc = ((JTextComponent ) focusOwner).getDocument(); 88 89 if (doc instanceof UndoDocument) { 90 ((UndoDocument) doc).redo(); 91 } 92 } 93 } 94 95 } 96 | Popular Tags |