org.eclipse.datatools.sqltools.common.ui.tableviewer
Class ObjectTransfer

java.lang.Object
  extended by org.eclipse.swt.dnd.Transfer
      extended by org.eclipse.swt.dnd.ByteArrayTransfer
          extended by org.eclipse.datatools.sqltools.common.ui.tableviewer.ObjectTransfer

public class ObjectTransfer
extends org.eclipse.swt.dnd.ByteArrayTransfer

This derived implementation of a byte array transfer short circuits the transfer process so that a local transfer does not serialize the object and hence can and will return the original object, not just a clone. As an addded guard, the time is recorded and serialized in javaToNative to that navive to java can ensure that it's returns the value that was really to have been transferred.

Author:
lihuang

Method Summary
static ObjectTransfer getInstance()
          This returns the one instance of this transfer agent.
 java.lang.String[] getTypeNames()
          This returns the transfer names that this agent supports.
 void javaToNative(java.lang.Object object, org.eclipse.swt.dnd.TransferData transferData)
          This records the object and current time and encodes only the current time into the transfer data.
 java.lang.Object nativeToJava(org.eclipse.swt.dnd.TransferData transferData)
          This decodes the time of the transfer and returns the recorded the object if the recorded time and the decoded time match.
 
Methods inherited from class org.eclipse.swt.dnd.ByteArrayTransfer
getSupportedTypes, isSupportedType
 
Methods inherited from class org.eclipse.swt.dnd.Transfer
registerType
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static ObjectTransfer getInstance()
This returns the one instance of this transfer agent.


getTypeNames

public java.lang.String[] getTypeNames()
This returns the transfer names that this agent supports.

Specified by:
getTypeNames in class org.eclipse.swt.dnd.Transfer

javaToNative

public void javaToNative(java.lang.Object object,
                         org.eclipse.swt.dnd.TransferData transferData)
This records the object and current time and encodes only the current time into the transfer data.

Overrides:
javaToNative in class org.eclipse.swt.dnd.ByteArrayTransfer

nativeToJava

public java.lang.Object nativeToJava(org.eclipse.swt.dnd.TransferData transferData)
This decodes the time of the transfer and returns the recorded the object if the recorded time and the decoded time match.

Overrides:
nativeToJava in class org.eclipse.swt.dnd.ByteArrayTransfer