/** * author: Marcel Genzmehr * 29.07.2011 */ package org.freeplane.plugin.workspace.dnd; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.util.Enumeration; import java.util.Hashtable; import org.freeplane.core.util.LogUtils; /** * */ public class WorkspaceTransferable implements Transferable { public static DataFlavor WORKSPACE_DROP_ACTION_FLAVOR; // = new DataFlavor("text/drop-action; class=java.lang.String"); public static DataFlavor WORKSPACE_NODE_FLAVOR; // = new DataFlavor("application/x-java-jvm-local-objectref; class=org.freeplane.plugin.workspace.config.node.AWorkspaceNode"); public static DataFlavor WORKSPACE_FILE_LIST_FLAVOR; // = DataFlavor.javaFileListFlavor; public static DataFlavor WORKSPACE_FREEPLANE_NODE_FLAVOR; // = new DataFlavor("text/freeplane-nodes; class=java.lang.String"); public static DataFlavor WORKSPACE_SERIALIZED_FLAVOR; public static DataFlavor WORKSPACE_URI_LIST_FLAVOR; static { try { WORKSPACE_DROP_ACTION_FLAVOR = new DataFlavor("text/drop-action; class=java.lang.String"); WORKSPACE_NODE_FLAVOR = new DataFlavor("application/x-java-jvm-local-objectref; class=java.util.List"); WORKSPACE_FILE_LIST_FLAVOR = new DataFlavor("application/x-java-file-list; class=java.util.List"); WORKSPACE_FREEPLANE_NODE_FLAVOR = new DataFlavor("text/freeplane-nodes; class=java.lang.String"); WORKSPACE_SERIALIZED_FLAVOR = new DataFlavor("application/x-java-serialized-object; class=java.lang.String"); WORKSPACE_URI_LIST_FLAVOR = new DataFlavor("text/uri-list; class=java.lang.String"); } catch (final Exception e) { LogUtils.severe(e); } } private final Hashtable<DataFlavor, Object> dataMap = new Hashtable<DataFlavor, Object>(); /*********************************************************************************** * CONSTRUCTORS **********************************************************************************/ public WorkspaceTransferable(DataFlavor flavor, Object data) { addData(flavor, data); } public WorkspaceTransferable() { } /*********************************************************************************** * METHODS **********************************************************************************/ public boolean addData(DataFlavor flavor, Object data) { dataMap.put(flavor, data); return true; } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { if(dataMap.containsKey(flavor)) { return dataMap.get(flavor); } throw new UnsupportedFlavorException(flavor); } public DataFlavor[] getTransferDataFlavors() { DataFlavor[] flavors = new DataFlavor[dataMap.size()]; int i = 0; for(Enumeration<DataFlavor> e = dataMap.keys(); e.hasMoreElements(); i++) { flavors[i] = e.nextElement(); } return flavors; } // Returns whether or not the specified data flavor is supported for // this object. public boolean isDataFlavorSupported(DataFlavor flavor) { if(dataMap.containsKey(flavor)) { return true; } return false; } /*********************************************************************************** * REQUIRED METHODS FOR INTERFACES **********************************************************************************/ }