blob: 8e58bd4bd472435349ebedf86c33e5b37b8527b3 [file] [log] [blame]
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;
}
}