]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.ui/src/org/simantics/ui/dnd/LocalObjectTransferable.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.ui / src / org / simantics / ui / dnd / LocalObjectTransferable.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
3  * in Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.ui.dnd;\r
13 \r
14 import java.awt.datatransfer.Clipboard;\r
15 import java.awt.datatransfer.ClipboardOwner;\r
16 import java.awt.datatransfer.DataFlavor;\r
17 import java.awt.datatransfer.Transferable;\r
18 import java.awt.datatransfer.UnsupportedFlavorException;\r
19 import java.io.ByteArrayInputStream;\r
20 import java.io.IOException;\r
21 \r
22 public class LocalObjectTransferable implements Transferable, ClipboardOwner {\r
23 \r
24     //public static final String     TYPE_NAME = "application/x-java-jvm-local-objectref" + (new Long(System.currentTimeMillis())).toString() + ";class=java.lang.Object"; //$NON-NLS-1$;\r
25     /**\r
26      * For transferring JVM local objects as references, does not work between\r
27      * applications. The System.currentTimeMillis suffix is added to prevent\r
28      * application to application transfer.\r
29      */\r
30     public static final String     TYPE_NAME = "application/local-object-transfer-format" + (new Long(System.currentTimeMillis())).toString(); //$NON-NLS-1$;\r
31     public static final DataFlavor FLAVOR    = new DataFlavor(TYPE_NAME, null);\r
32 \r
33     Object object;\r
34 \r
35     public LocalObjectTransferable(Object object) {\r
36         this.object = new ByteArrayInputStream(new byte[0]);\r
37         LocalObjectTransfer.getTransfer().setObject(object);\r
38     }\r
39 \r
40     /**\r
41      * Returns an array of flavors in which this <code>Transferable</code> can\r
42      * provide the data. <code>DataFlavor.stringFlavor</code> is properly\r
43      * supported. Support for <code>DataFlavor.plainTextFlavor</code> is\r
44      * <b>deprecated</b>.\r
45      * \r
46      * @return an array of length two, whose elements are <code>DataFlavor.\r
47      *         stringFlavor</code> and <code>DataFlavor.plainTextFlavor</code>\r
48      */\r
49     public DataFlavor[] getTransferDataFlavors() {\r
50         return new DataFlavor[] { FLAVOR };\r
51     }\r
52 \r
53     public boolean isDataFlavorSupported(DataFlavor flavor) {\r
54         return flavor.equals(FLAVOR);\r
55     }\r
56 \r
57     public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {\r
58         if (flavor.equals(FLAVOR))\r
59             return object;\r
60         throw new UnsupportedFlavorException(flavor);\r
61     }\r
62 \r
63     public void lostOwnership(Clipboard clipboard, Transferable contents) {\r
64     }\r
65 \r
66 }\r