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: private static Clipboard getClipboard(JComponent component)
79: {
80: SecurityManager sm = System.getSecurityManager();
81:
82: if (sm != null)
83: {
84: try
85: {
86: sm.checkSystemClipboardAccess();
87:
88:
89: return component.getToolkit().getSystemClipboard();
90: }
91: catch (SecurityException e)
92: {
93:
94: }
95: }
96:
97:
98: if (clipboard == null)
99: clipboard = new Clipboard("Clipboard");
100:
101: return clipboard;
102: }
103: }
104:
105: private static final long serialVersionUID = -967749805571669910L;
106:
107: private static final String COMMAND_COPY = "copy";
108: private static final String COMMAND_CUT = "cut";
109: private static final String COMMAND_PASTE = "paste";
110:
111: public static final int NONE = 0;
112: public static final int COPY = 1;
113: public static final int MOVE = 2;
114: public static final int COPY_OR_MOVE = 3;
115:
116: private static Action copyAction = new TransferAction(COMMAND_COPY);
117: private static Action cutAction = new TransferAction(COMMAND_CUT);
118: private static Action pasteAction = new TransferAction(COMMAND_PASTE);
119:
120:
124: static Clipboard clipboard;
125:
126: private int sourceActions;
127: private Icon visualRepresentation;
128:
129: public static Action getCopyAction()
130: {
131: return copyAction;
132: }
133:
134: public static Action getCutAction()
135: {
136: return cutAction;
137: }
138:
139: public static Action getPasteAction()
140: {
141: return pasteAction;
142: }
143:
144: protected TransferHandler()
145: {
146: this.sourceActions = NONE;
147: }
148:
149: public TransferHandler(String property)
150: {
151: this.sourceActions = property != null ? COPY : NONE;
152: }
153:
154: public boolean canImport (JComponent c, DataFlavor[] flavors)
155: {
156: return false;
157: }
158:
159: protected Transferable createTransferable(JComponent c)
160: {
161: return null;
162: }
163:
164: public void exportAsDrag (JComponent c, InputEvent e, int action)
165: {
166:
167: }
168:
169: protected void exportDone (JComponent c, Transferable data, int action)
170: {
171:
172: }
173:
174: public void exportToClipboard(JComponent c, Clipboard clip, int action)
175: {
176:
177: }
178:
179: public int getSourceActions (JComponent c)
180: {
181: return sourceActions;
182: }
183:
184: public Icon getVisualRepresentation (Transferable t)
185: {
186: return visualRepresentation;
187: }
188:
189: public boolean importData (JComponent c, Transferable t)
190: {
191: return false;
192: }
193: }