package org.eclipse.wst.sse.sieditor.ui.v2.dnd; | |
import java.nio.charset.Charset; | |
import org.eclipse.core.runtime.IStatus; | |
import org.eclipse.core.runtime.Status; | |
import org.eclipse.jface.resource.JFaceResources; | |
import org.eclipse.jface.util.Policy; | |
import org.eclipse.swt.dnd.ByteArrayTransfer; | |
import org.eclipse.swt.dnd.TransferData; | |
import org.eclipse.wst.sse.sieditor.model.api.INamedObject; | |
/** | |
* Class for serializing gadgets to/from a byte array | |
*/ | |
public class SiEditorTransfer extends ByteArrayTransfer { | |
private static SiEditorTransfer instance = new SiEditorTransfer(); | |
private static final String TYPE_NAME = "sie-transfer-format"; //$NON-NLS-1$ | |
private static final int TYPEID = registerType(TYPE_NAME); | |
private INamedObject modelObject; | |
public static SiEditorTransfer getInstance() { | |
return instance; | |
} | |
private SiEditorTransfer() { | |
} | |
protected int[] getTypeIds() { | |
return new int[] { TYPEID }; | |
} | |
/* | |
* Method declared on Transfer. | |
*/ | |
protected String[] getTypeNames() { | |
return new String[] { TYPE_NAME }; | |
} | |
@Override | |
public boolean isSupportedType(TransferData transferData) { | |
return transferData.type == TYPEID; | |
} | |
private boolean isInvalidNativeType(Object result) { | |
return !(result instanceof byte[]) || !TYPE_NAME.equals(new String((byte[]) result, Charset.forName("UTF-8"))); //$NON-NLS-1$ | |
} | |
public void javaToNative(Object object, TransferData transferData) { | |
byte[] check = TYPE_NAME.getBytes(Charset.forName("UTF-8")); //$NON-NLS-1$ | |
super.javaToNative(check, transferData); | |
modelObject = (INamedObject) object; | |
} | |
public Object nativeToJava(TransferData transferData) { | |
Object result = super.nativeToJava(transferData); | |
if (isInvalidNativeType(result)) { | |
Policy.getLog().log( | |
new Status(IStatus.ERROR, Policy.JFACE, IStatus.ERROR, JFaceResources | |
.getString("LocalContextSelectionTransfer.errorMessage"), null)); //$NON-NLS-1$ | |
} | |
return modelObject; | |
} | |
} |