/*
* @(#)CopyAction.java
*
* Copyright (c) 1996-2010 The authors and contributors of JHotDraw.
* You may not use, copy or modify this file, except in compliance with the
* accompanying license terms.
*/
package org.jhotdraw.app.action.edit;
import javax.annotation.Nullable;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import org.jhotdraw.gui.datatransfer.ClipboardUtil;
import org.jhotdraw.util.*;
/**
* Copies the selected region and place its contents into the system clipboard.
* <p>
* This action acts on the last {@link org.jhotdraw.gui.EditableComponent} /
* {@code JTextComponent} which had the focus when the {@code ActionEvent}
* was generated.
* <p>
* This action is called when the user selects the Copy item in the Edit
* menu. The menu item is automatically created by the application.
* <p>
* If you want this behavior in your application, you have to create an action
* with this ID and put it in your {@code ApplicationModel} in method
* {@link org.jhotdraw.app.ApplicationModel#initApplication}.
*
* @author Werner Randelshofer
* @version $Id$
*/
public class CopyAction extends AbstractSelectionAction {
private static final long serialVersionUID = 1L;
public static final String ID = "edit.copy";
/** Creates a new instance which acts on the currently focused component. */
public CopyAction() {
this(null);
}
/** Creates a new instance which acts on the specified component.
*
* @param target The target of the action. Specify null for the currently
* focused component.
*/
public CopyAction(@Nullable JComponent target) {
super(target);
ResourceBundleUtil labels = ResourceBundleUtil.getBundle("org.jhotdraw.app.Labels");
labels.configureAction(this, ID);
}
@Override
public void actionPerformed(ActionEvent evt) {
JComponent c = target;
if (c == null && (KeyboardFocusManager.getCurrentKeyboardFocusManager().
getPermanentFocusOwner() instanceof JComponent)) {
c = (JComponent) KeyboardFocusManager.getCurrentKeyboardFocusManager().
getPermanentFocusOwner();
}
// Note: copying is allowed for disabled components
if (c != null) {
c.getTransferHandler().exportToClipboard(
c,
ClipboardUtil.getClipboard(),
TransferHandler.COPY);
}
}
}