diff options
author | Veronika Irvine | 2004-10-22 17:28:39 +0000 |
---|---|---|
committer | Veronika Irvine | 2004-10-22 17:28:39 +0000 |
commit | 55410ab794f2d88c386d97f69b0ab7514aca1475 (patch) | |
tree | fe9efdc31e8907631dcf8d2ef98bae338bece531 /examples | |
parent | 7c94de29d44059fc804e71ba9cd6e47dfac27c93 (diff) | |
download | eclipse.platform.swt-55410ab794f2d88c386d97f69b0ab7514aca1475.tar.gz eclipse.platform.swt-55410ab794f2d88c386d97f69b0ab7514aca1475.tar.xz eclipse.platform.swt-55410ab794f2d88c386d97f69b0ab7514aca1475.zip |
added main
Diffstat (limited to 'examples')
-rw-r--r-- | examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet79.java | 177 |
1 files changed, 123 insertions, 54 deletions
diff --git a/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet79.java b/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet79.java index 46714a233d..d9fda49163 100644 --- a/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet79.java +++ b/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet79.java @@ -17,75 +17,80 @@ package org.eclipse.swt.snippets; * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets */ import java.io.*; + +import org.eclipse.swt.*; import org.eclipse.swt.dnd.*; +import org.eclipse.swt.layout.*; +import org.eclipse.swt.widgets.*; + +public class Snippet79 { + +/* The data being transferred is an <bold>array of type MyType</bold> where MyType is define as: */ +static class MyType { + String fileName; + long fileLength; + long lastModified; +} -public class Snippet79 extends ByteArrayTransfer { +static class MyTransfer extends ByteArrayTransfer { - /* The data being transferred is an array of type MyType which is define as: */ - public static class MyType { - String fileName; - long fileLength; - long lastModified; - } - private static final String MYTYPENAME = "name_for_my_type"; - private static final int MYTYPEID = registerType(MYTYPENAME); - private static Snippet79 _instance = new Snippet79(); - -public static Snippet79 getInstance () { + private static final int MYTYPEID = registerType (MYTYPENAME); + private static MyTransfer _instance = new MyTransfer (); + +public static MyTransfer getInstance () { return _instance; } + public void javaToNative (Object object, TransferData transferData) { - if (object == null || !(object instanceof MyType[])) return; - - if (isSupportedType(transferData)) { - MyType[] myTypes = (MyType[]) object; + 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); + 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(); + byte [] buffer = out.toByteArray (); + writeOut.close (); - super.javaToNative(buffer, transferData); - - } catch (IOException e) { + super.javaToNative (buffer, transferData); } + catch (IOException e) {} } } -public Object nativeToJava(TransferData transferData){ - if (isSupportedType(transferData)) { - - byte[] buffer = (byte[])super.nativeToJava(transferData); +public Object nativeToJava (TransferData transferData) { + if (isSupportedType (transferData)) { + byte [] buffer = (byte []) super.nativeToJava (transferData); if (buffer == null) return null; - - MyType[] myData = new MyType[0]; + + 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; + 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) { + readIn.close (); + } + catch (IOException ex) { return null; } return myData; @@ -93,10 +98,74 @@ public Object nativeToJava(TransferData transferData){ return null; } -protected String[] getTypeNames(){ - return new String[]{MYTYPENAME}; + +protected String [] getTypeNames () { + return new String [] {MYTYPENAME}; +} + +protected int [] getTypeIds () { + return new int [] {MYTYPEID}; } -protected int[] getTypeIds(){ - return new int[] {MYTYPEID}; } + +public static void main (String [] args) { + Display display = new Display (); + Shell shell = new Shell (display); + shell.setLayout (new FillLayout ()); + final Label label1 = new Label (shell, SWT.BORDER | SWT.WRAP); + label1.setText ("Drag Source for MyData[]"); + final Label label2 = new Label (shell, SWT.BORDER | SWT.WRAP); + label2.setText ("Drop Target for MyData[]"); + + DragSource source = new DragSource (label1, DND.DROP_COPY); + source.setTransfer (new Transfer [] {MyTransfer.getInstance ()}); + source.addDragListener (new DragSourceAdapter () { + public void dragSetData (DragSourceEvent event) { + MyType myType1 = new MyType (); + myType1.fileName = "C:\\abc.txt"; + myType1.fileLength = 1000; + myType1.lastModified = 12312313; + MyType myType2 = new MyType (); + myType2.fileName = "C:\\xyz.txt"; + myType2.fileLength = 500; + myType2.lastModified = 12312323; + event.data = new MyType [] {myType1, myType2}; + } + }); + DropTarget target = new DropTarget (label2, DND.DROP_COPY | DND.DROP_DEFAULT); + target.setTransfer (new Transfer [] {MyTransfer.getInstance ()}); + target.addDropListener (new DropTargetAdapter () { + public void dragEnter (DropTargetEvent event) { + if (event.detail == DND.DROP_DEFAULT) { + event.detail = DND.DROP_COPY; + } + } + + public void dragOperationChanged (DropTargetEvent event) { + if (event.detail == DND.DROP_DEFAULT) { + event.detail = DND.DROP_COPY; + } + } + + public void drop (DropTargetEvent event) { + if (event.data != null) { + MyType [] myTypes = (MyType []) event.data; + if (myTypes != null) { + String string = ""; + for (int i = 0; i < myTypes.length; i++) { + string += myTypes [i].fileName + " "; + } + label2.setText (string); + } + } + } + + }); + shell.setSize (200, 200); + shell.open (); + while (!shell.isDisposed ()) { + if (!display.readAndDispatch ()) display.sleep (); + } + display.dispose (); } +}
\ No newline at end of file |