Dead
[official-gcc.git] / gomp-20050608-branch / libjava / classpath / javax / swing / TransferHandler.java
blob830feee83326ab0eaa851eb2864cc647d4a697e3
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)
9 any later version.
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
19 02110-1301 USA.
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
24 combination.
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. */
39 package javax.swing;
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)
57 super(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)
69 // Access denied!
70 Toolkit.getDefaultToolkit().beep();
71 return;
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);
87 /**
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)
96 try
98 return component.getToolkit().getSystemClipboard();
100 catch (SecurityException se)
102 return null;
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()
127 return copyAction;
130 public static Action getCutAction()
132 return cutAction;
135 public static Action getPasteAction()
137 return pasteAction;
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)
152 return false;
155 protected Transferable createTransferable(JComponent c)
157 return null;
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)
187 return false;