1 package org.columba.core.gui.globalactions; 19 20 import java.awt.KeyboardFocusManager ; 21 import java.awt.Toolkit ; 22 import java.awt.event.ActionEvent ; 23 import java.awt.event.KeyEvent ; 24 import java.beans.PropertyChangeEvent ; 25 import java.beans.PropertyChangeListener ; 26 27 import javax.swing.Action ; 28 import javax.swing.JComponent ; 29 import javax.swing.KeyStroke ; 30 import javax.swing.TransferHandler ; 31 32 import org.columba.api.gui.frame.IFrameMediator; 33 import org.columba.core.gui.action.AbstractColumbaAction; 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 CopyAction extends AbstractColumbaAction implements 39 PropertyChangeListener { 40 41 private JComponent focusOwner = null; 42 43 public CopyAction(IFrameMediator controller) { 44 super(controller, GlobalResourceLoader.getString(null, null, 45 "menu_edit_copy")); 46 47 putValue(SHORT_DESCRIPTION, GlobalResourceLoader.getString(null, null, 49 "menu_edit_copy_tooltip").replaceAll("&", "")); 50 51 putValue(SMALL_ICON, ImageLoader.getSmallIcon(IconKeys.EDIT_COPY)); 53 54 putValue(LARGE_ICON, ImageLoader.getIcon(IconKeys.EDIT_COPY)); 56 57 putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_C, 59 Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); 60 61 setShowToolBarText(false); 63 64 setEnabled(true); 65 66 putValue(Action.ACTION_COMMAND_KEY, (String ) TransferHandler 67 .getCopyAction().getValue(Action.NAME)); 68 69 KeyboardFocusManager manager = KeyboardFocusManager 70 .getCurrentKeyboardFocusManager(); 71 manager.addPropertyChangeListener("permanentFocusOwner", this); 72 73 } 74 75 public void propertyChange(PropertyChangeEvent e) { 76 Object o = e.getNewValue(); 77 if (o instanceof JComponent ) { 78 focusOwner = (JComponent ) o; 79 80 setEnabled(isEnabled()); 81 } 82 else 83 focusOwner = null; 84 85 } 86 87 90 public void actionPerformed(ActionEvent e) { 91 92 if (focusOwner == null) 93 return; 94 String action = (String ) e.getActionCommand(); 95 Action a = focusOwner.getActionMap().get(action); 96 if (a != null) 97 a.actionPerformed(new ActionEvent (focusOwner, 98 ActionEvent.ACTION_PERFORMED, null)); 99 100 } 101 102 105 public boolean isSingleton() { 106 return true; 107 } 108 109 112 } | Popular Tags |