1 package org.columba.core.gui.globalactions; 17 18 import java.awt.KeyboardFocusManager ; 19 import java.awt.Toolkit ; 20 import java.awt.event.ActionEvent ; 21 import java.awt.event.KeyEvent ; 22 import java.beans.PropertyChangeEvent ; 23 import java.beans.PropertyChangeListener ; 24 25 import javax.swing.Action ; 26 import javax.swing.JComponent ; 27 import javax.swing.KeyStroke ; 28 import javax.swing.TransferHandler ; 29 30 import org.columba.api.gui.frame.IFrameMediator; 31 import org.columba.core.gui.action.AbstractColumbaAction; 32 import org.columba.core.resourceloader.GlobalResourceLoader; 33 import org.columba.core.resourceloader.IconKeys; 34 import org.columba.core.resourceloader.ImageLoader; 35 36 public class PasteAction extends AbstractColumbaAction implements 37 PropertyChangeListener { 38 39 private JComponent focusOwner = null; 40 41 public PasteAction(IFrameMediator controller) { 42 super(controller, GlobalResourceLoader.getString(null, null, 43 "menu_edit_paste")); 44 45 putValue(SHORT_DESCRIPTION, GlobalResourceLoader.getString(null, null, 47 "menu_edit_paste_tooltip").replaceAll("&", "")); 48 49 putValue(SMALL_ICON, ImageLoader.getSmallIcon(IconKeys.EDIT_PASTE)); 51 52 putValue(LARGE_ICON, ImageLoader.getIcon(IconKeys.EDIT_PASTE)); 54 55 putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_V, 57 Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); 58 59 setShowToolBarText(false); 61 62 setEnabled(true); 63 64 putValue(Action.ACTION_COMMAND_KEY, (String ) TransferHandler 65 .getPasteAction().getValue(Action.NAME)); 66 67 KeyboardFocusManager manager = KeyboardFocusManager 68 .getCurrentKeyboardFocusManager(); 69 manager.addPropertyChangeListener("permanentFocusOwner", this); 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 84 public void actionPerformed(ActionEvent e) { 85 86 if (focusOwner == null) 87 return; 88 89 String action = (String ) e.getActionCommand(); 90 Action a = focusOwner.getActionMap().get(action); 91 if (a != null) 92 a.actionPerformed(new ActionEvent (focusOwner, 93 ActionEvent.ACTION_PERFORMED, null)); 94 95 } 96 97 100 public boolean isSingleton() { 101 return true; 102 } 103 104 } 118 | Popular Tags |