1 11 package org.eclipse.ui.part; 12 13 import java.io.ByteArrayInputStream ; 14 import java.io.ByteArrayOutputStream ; 15 import java.io.DataInputStream ; 16 import java.io.DataOutputStream ; 17 import java.io.IOException ; 18 19 import org.eclipse.swt.dnd.ByteArrayTransfer; 20 import org.eclipse.swt.dnd.TransferData; 21 22 46 public class PluginTransfer extends ByteArrayTransfer { 47 48 private static final String TYPE_NAME = "pluggable-transfer-format"; 50 private static final int TYPEID = registerType(TYPE_NAME); 51 52 55 private static PluginTransfer instance = new PluginTransfer(); 56 57 60 private PluginTransfer() { 61 super(); 62 } 63 64 69 public static PluginTransfer getInstance() { 70 return instance; 71 } 72 73 76 protected int[] getTypeIds() { 77 return new int[] { TYPEID }; 78 } 79 80 85 protected String [] getTypeNames() { 86 return new String [] { TYPE_NAME }; 87 } 88 89 92 protected void javaToNative(Object data, TransferData transferData) { 93 PluginTransferData realData = (PluginTransferData) data; 94 if (data == null) { 95 return; 96 } 97 try { 98 ByteArrayOutputStream out = new ByteArrayOutputStream (); 99 DataOutputStream dataOut = new DataOutputStream (out); 100 dataOut.writeUTF(realData.getExtensionId()); 101 dataOut.writeInt(realData.getData().length); 102 dataOut.write(realData.getData()); 103 dataOut.close(); 104 super.javaToNative(out.toByteArray(), transferData); 105 } catch (IOException e) { 106 e.printStackTrace(); 107 } 108 } 109 110 113 protected Object nativeToJava(TransferData transferData) { 114 try { 115 byte[] bytes = (byte[]) super.nativeToJava(transferData); 116 ByteArrayInputStream in = new ByteArrayInputStream (bytes); 117 DataInputStream dataIn = new DataInputStream (in); 118 String extensionName = dataIn.readUTF(); 119 int len = dataIn.readInt(); 120 byte[] pluginData = new byte[len]; 121 dataIn.readFully(pluginData); 122 return new PluginTransferData(extensionName, pluginData); 123 } catch (IOException e) { 124 e.printStackTrace(); 125 } 126 return null; 128 } 129 } 130
| Popular Tags
|