1:
37:
38:
39: package ;
40:
41: import ;
42: import ;
43: import ;
44: import ;
45: import ;
46: import ;
47:
48: public class TransferHandler implements Serializable
49: {
50: static class TransferAction extends AbstractAction
51: {
52: private String command;
53:
54: public TransferAction(String command)
55: {
56: this.command = command;
57: }
58:
59: public void actionPerformed(ActionEvent event)
60: {
61: JComponent component = (JComponent) event.getSource();
62: TransferHandler transferHandler = component.getTransferHandler();
63: Clipboard clipboard = getClipboard(component);
64:
65: if (command.equals(COMMAND_COPY))
66: transferHandler.exportToClipboard(component, clipboard, COPY);
67: else if (command.equals(COMMAND_CUT))
68: transferHandler.exportToClipboard(component, clipboard, MOVE);
69: else if (command.equals(COMMAND_PASTE))
70: {
71: Transferable transferable = clipboard.getContents(null);
72:
73: if (transferable != null)
74: transferHandler.importData(component, transferable);
75: }
76: }
77:
78:
85: private static Clipboard getClipboard(JComponent component)
86: {
87:
88:
89: if (clipboard != null)
90: return clipboard;
91: else
92: {
93: try
94: {
95: SecurityManager sm = System.getSecurityManager();
96: if (sm != null)
97: sm.checkSystemClipboardAccess();
98:
99:
100: return component.getToolkit().getSystemClipboard();
101: }
102: catch (Exception e)
103: {
104:
105:
106: clipboard = new Clipboard("Clipboard");
107: return clipboard;
108: }
109: }
110: }
111: }
112:
113: private static final long serialVersionUID = -967749805571669910L;
114:
115: private static final String COMMAND_COPY = "copy";
116: private static final String COMMAND_CUT = "cut";
117: private static final String COMMAND_PASTE = "paste";
118:
119: public static final int NONE = 0;
120: public static final int COPY = 1;
121: public static final int MOVE = 2;
122: public static final int COPY_OR_MOVE = 3;
123:
124: private static Action copyAction = new TransferAction(COMMAND_COPY);
125: private static Action cutAction = new TransferAction(COMMAND_CUT);
126: private static Action pasteAction = new TransferAction(COMMAND_PASTE);
127:
128:
132: static Clipboard clipboard;
133:
134: private int sourceActions;
135: private Icon visualRepresentation;
136:
137: public static Action getCopyAction()
138: {
139: return copyAction;
140: }
141:
142: public static Action getCutAction()
143: {
144: return cutAction;
145: }
146:
147: public static Action getPasteAction()
148: {
149: return pasteAction;
150: }
151:
152: protected TransferHandler()
153: {
154: this.sourceActions = NONE;
155: }
156:
157: public TransferHandler(String property)
158: {
159: this.sourceActions = property != null ? COPY : NONE;
160: }
161:
162: public boolean canImport (JComponent c, DataFlavor[] flavors)
163: {
164: return false;
165: }
166:
167: protected Transferable createTransferable(JComponent c)
168: {
169: return null;
170: }
171:
172: public void exportAsDrag (JComponent c, InputEvent e, int action)
173: {
174:
175: }
176:
177: protected void exportDone (JComponent c, Transferable data, int action)
178: {
179:
180: }
181:
182: public void exportToClipboard(JComponent c, Clipboard clip, int action)
183: {
184:
185: }
186:
187: public int getSourceActions (JComponent c)
188: {
189: return sourceActions;
190: }
191:
192: public Icon getVisualRepresentation (Transferable t)
193: {
194: return visualRepresentation;
195: }
196:
197: public boolean importData (JComponent c, Transferable t)
198: {
199: return false;
200: }
201: }