diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/ByteArrayTransfer.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/ByteArrayTransfer.java | 162 |
1 files changed, 14 insertions, 148 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/ByteArrayTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/ByteArrayTransfer.java index 4debaf4679..a87f6ce595 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/ByteArrayTransfer.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/carbon/org/eclipse/swt/dnd/ByteArrayTransfer.java @@ -7,109 +7,6 @@ package org.eclipse.swt.dnd; * http://www.eclipse.org/legal/cpl-v10.html */ -/** - * The class <code>ByteArrayTransfer</code> provides a platform specific - * mechanism for converting a java <code>byte[]</code> to a platform - * specific representation of the byte array and vice versa. See - * <code>Transfer</code> for additional information. - * - * <p><code>ByteArrayTransfer</code> is never used directly but is sub-classed - * by transfer agents that convert between data in a java format such as a - * <code>String</code> and a platform specific byte array. - * - * <p>If the data you are converting <b>does not</b> map to a - * <code>byte[]</code>, you should sub-class <code>Transfer</code> directly - * and do your own mapping to a platform data type.</p> - * - * <p>The following snippet shows a sublcass of ByteArrayTransfer that transfers - * data defined by the class <code>MyType</code>.</p> - * - * <pre><code> - * public class MyType { - * public String fileName; - * public long fileLength; - * public long lastModified; - * } - * </code></pre> - * - * <code><pre> - * public class MyTypeTransfer extends ByteArrayTransfer { - * - * private static final String MYTYPENAME = "my_type_name"; - * private static final int MYTYPEID = registerType(MYTYPENAME); - * private static MyTypeTransfer _instance = new MyTypeTransfer(); - * - * private MyTypeTransfer() {} - * - * public static MyTypeTransfer getInstance () { - * return _instance; - * } - * public void javaToNative (Object object, TransferData transferData) { - * if (object == null || !(object instanceof MyType[])) return; - * - * if (isSupportedType(transferData)) { - * MyType[] myTypes = (MyType[]) object; - * try { - * // write data to a byte array and then ask super to convert to pMedium - * ByteArrayOutputStream out = new ByteArrayOutputStream(); - * DataOutputStream writeOut = new DataOutputStream(out); - * for (int i = 0, length = myTypes.length; i < length; i++){ - * byte[] buffer = myTypes[i].fileName.getBytes(); - * writeOut.writeInt(buffer.length); - * writeOut.write(buffer); - * writeOut.writeLong(myTypes[i].fileLength); - * writeOut.writeLong(myTypes[i].lastModified); - * } - * byte[] buffer = out.toByteArray(); - * writeOut.close(); - * - * super.javaToNative(buffer, transferData); - * - * } catch (IOException e) { - * } - * } - * } - * public Object nativeToJava(TransferData transferData){ - * - * if (isSupportedType(transferData)) { - * - * byte[] buffer = (byte[])super.nativeToJava(transferData); - * if (buffer == null) return null; - * - * MyType[] myData = new MyType[0]; - * try { - * ByteArrayInputStream in = new ByteArrayInputStream(buffer); - * DataInputStream readIn = new DataInputStream(in); - * while(readIn.available() > 20) { - * MyType datum = new MyType(); - * int size = readIn.readInt(); - * byte[] name = new byte[size]; - * readIn.read(name); - * datum.fileName = new String(name); - * datum.fileLength = readIn.readLong(); - * datum.lastModified = readIn.readLong(); - * MyType[] newMyData = new MyType[myData.length + 1]; - * System.arraycopy(myData, 0, newMyData, 0, myData.length); - * newMyData[myData.length] = datum; - * myData = newMyData; - * } - * readIn.close(); - * } catch (IOException ex) { - * return null; - * } - * return myData; - * } - * - * return null; - * } - * protected String[] getTypeNames(){ - * return new String[]{MYTYPENAME}; - * } - * protected int[] getTypeIds(){ - * return new int[] {MYTYPEID}; - * } - * } - */ public abstract class ByteArrayTransfer extends Transfer { public TransferData[] getSupportedTypes() { @@ -123,61 +20,30 @@ public TransferData[] getSupportedTypes() { } public boolean isSupportedType(TransferData transferData){ - if (transferData != null) { - int[] types= getTypeIds(); - for (int i= 0; i < types.length; i++) { - if (transferData.type == types[i]) - return true; - } + if (transferData == null) return false; + int[] types= getTypeIds(); + for (int i= 0; i < types.length; i++) { + if (transferData.type == types[i]) + return true; } return false; } -/** - * This implementation of <code>javaToNative</code> converts a java - * <code>byte[]</code> to a platform specific representation. For additional - * information see <code>Transfer#javaToNative</code>. - * - * @see Transfer#javaToNative - * - * @param object a java <code>byte[]</code> containing the data to be converted - * @param transferData an empty <code>TransferData</code> object; this - * object will be filled in on return with the platform specific format of the data - */ protected void javaToNative (Object object, TransferData transferData) { if ((object == null) || !(object instanceof byte[]) || !(isSupportedType(transferData))) { - transferData.result = 0; + transferData.result = -1; return; } - byte[] buffer= (byte[])object; - /* - transferData.pValue = OS.g_malloc(buffer.length); - OS.memmove(transferData.pValue, buffer, buffer.length); - */ - transferData.data= buffer; - transferData.length = buffer.length; - //transferData.format = 8; - transferData.result = 1; + byte[] orig = (byte[])object; + byte[] buffer= new byte[orig.length]; + System.arraycopy(orig, 0, buffer, 0, orig.length); + transferData.data = buffer; + transferData.result = 0; } -/** - * This implementation of <code>nativeToJava</code> converts a platform specific - * representation of a byte array to a java <code>byte[]</code>. - * For additional information see <code>Transfer#nativeToJava</code>. - * - * @see Transfer#nativeToJava - * - * @param transferData the platform specific representation of the data to be - * been converted - * @return a java <code>byte[]</code> containing the converted data if the - * conversion was successful; otherwise null - */ protected Object nativeToJava(TransferData transferData) { - if ( !isSupportedType(transferData) || transferData.data == null ) return null; - int n= transferData.length; - byte[] buffer= new byte[n]; - System.arraycopy(transferData.data, 0, buffer, 0, n); - return buffer; + if (!isSupportedType(transferData)) return null; + return transferData.data; } -} +}
\ No newline at end of file |