1:
37:
38:
39: package ;
40:
41: import ;
42: import ;
43: import ;
44: import ;
45: import ;
46: import ;
47: import ;
48:
49: public class TransferHandler implements Serializable
50: {
51: static class TransferAction extends AbstractAction
52: {
53: private String command;
54:
55: public TransferAction(String command)
56: {
57: super(command);
58: this.command = command;
59: }
60:
61: public void actionPerformed(ActionEvent event)
62: {
63: JComponent component = (JComponent) event.getSource();
64: TransferHandler transferHandler = component.getTransferHandler();
65: Clipboard clipboard = getClipboard(component);
66:
67: if (clipboard == null)
68: {
69:
70: Toolkit.getDefaultToolkit().beep();
71: return;
72: }
73:
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))
79: {
80: Transferable transferable = clipboard.getContents(null);
81:
82: if (transferable != null)
83: transferHandler.importData(component, transferable);
84: }
85: }
86:
87:
94: private static Clipboard getClipboard(JComponent component)
95: {
96: try
97: {
98: return component.getToolkit().getSystemClipboard();
99: }
100: catch (SecurityException se)
101: {
102: return null;
103: }
104: }
105: }
106:
107: private static final long serialVersionUID = -967749805571669910L;
108:
109: private static final String COMMAND_COPY = "copy";
110: private static final String COMMAND_CUT = "cut";
111: private static final String COMMAND_PASTE = "paste";
112:
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;
117:
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);
121:
122: private int sourceActions;
123: private Icon visualRepresentation;
124:
125: public static Action getCopyAction()
126: {
127: return copyAction;
128: }
129:
130: public static Action getCutAction()
131: {
132: return cutAction;
133: }
134:
135: public static Action getPasteAction()
136: {
137: return pasteAction;
138: }
139:
140: protected TransferHandler()
141: {
142: this.sourceActions = NONE;
143: }
144:
145: public TransferHandler(String property)
146: {
147: this.sourceActions = property != null ? COPY : NONE;
148: }
149:
150: public boolean canImport (JComponent c, DataFlavor[] flavors)
151: {
152: return false;
153: }
154:
155: protected Transferable createTransferable(JComponent c)
156: {
157: return null;
158: }
159:
160: public void exportAsDrag (JComponent c, InputEvent e, int action)
161: {
162:
163: }
164:
165: protected void exportDone (JComponent c, Transferable data, int action)
166: {
167:
168: }
169:
170: public void exportToClipboard(JComponent c, Clipboard clip, int action)
171: {
172:
173: }
174:
175: public int getSourceActions (JComponent c)
176: {
177: return sourceActions;
178: }
179:
180: public Icon getVisualRepresentation (Transferable t)
181: {
182: return visualRepresentation;
183: }
184:
185: public boolean importData (JComponent c, Transferable t)
186: {
187: return false;
188: }
189: }