1 /* TransferHandler.java --
2 Copyright (C) 2004, 2005 Free Software Foundation, Inc.
4 This file is part of GNU Classpath.
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
41 import java
.awt
.datatransfer
.Clipboard
;
42 import java
.awt
.datatransfer
.DataFlavor
;
43 import java
.awt
.datatransfer
.Transferable
;
44 import java
.awt
.event
.ActionEvent
;
45 import java
.awt
.event
.InputEvent
;
46 import java
.awt
.Toolkit
;
47 import java
.io
.Serializable
;
49 public class TransferHandler
implements Serializable
51 static class TransferAction
extends AbstractAction
53 private String command
;
55 public TransferAction(String command
)
58 this.command
= command
;
61 public void actionPerformed(ActionEvent event
)
63 JComponent component
= (JComponent
) event
.getSource();
64 TransferHandler transferHandler
= component
.getTransferHandler();
65 Clipboard clipboard
= getClipboard(component
);
67 if (clipboard
== null)
70 Toolkit
.getDefaultToolkit().beep();
74 if (command
.equals(COMMAND_COPY
))
75 transferHandler
.exportToClipboard(component
, clipboard
, COPY
);
76 else if (command
.equals(COMMAND_CUT
))
77 transferHandler
.exportToClipboard(component
, clipboard
, MOVE
);
78 else if (command
.equals(COMMAND_PASTE
))
80 Transferable transferable
= clipboard
.getContents(null);
82 if (transferable
!= null)
83 transferHandler
.importData(component
, transferable
);
88 * Get the system cliboard or null if the caller isn't allowed to
89 * access the system clipboard.
91 * @param component a component, used to get the toolkit.
92 * @return the clipboard
94 private static Clipboard
getClipboard(JComponent component
)
98 return component
.getToolkit().getSystemClipboard();
100 catch (SecurityException se
)
107 private static final long serialVersionUID
= -967749805571669910L;
109 private static final String COMMAND_COPY
= "copy";
110 private static final String COMMAND_CUT
= "cut";
111 private static final String COMMAND_PASTE
= "paste";
113 public static final int NONE
= 0;
114 public static final int COPY
= 1;
115 public static final int MOVE
= 2;
116 public static final int COPY_OR_MOVE
= 3;
118 private static Action copyAction
= new TransferAction(COMMAND_COPY
);
119 private static Action cutAction
= new TransferAction(COMMAND_CUT
);
120 private static Action pasteAction
= new TransferAction(COMMAND_PASTE
);
122 private int sourceActions
;
123 private Icon visualRepresentation
;
125 public static Action
getCopyAction()
130 public static Action
getCutAction()
135 public static Action
getPasteAction()
140 protected TransferHandler()
142 this.sourceActions
= NONE
;
145 public TransferHandler(String property
)
147 this.sourceActions
= property
!= null ? COPY
: NONE
;
150 public boolean canImport (JComponent c
, DataFlavor
[] flavors
)
155 protected Transferable
createTransferable(JComponent c
)
160 public void exportAsDrag (JComponent c
, InputEvent e
, int action
)
162 // TODO: Implement this properly
165 protected void exportDone (JComponent c
, Transferable data
, int action
)
167 // TODO: Implement this properly
170 public void exportToClipboard(JComponent c
, Clipboard clip
, int action
)
172 // TODO: Implement this properly
175 public int getSourceActions (JComponent c
)
177 return sourceActions
;
180 public Icon
getVisualRepresentation (Transferable t
)
182 return visualRepresentation
;
185 public boolean importData (JComponent c
, Transferable t
)