Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVeronika Irvine2004-10-22 17:28:39 +0000
committerVeronika Irvine2004-10-22 17:28:39 +0000
commit55410ab794f2d88c386d97f69b0ab7514aca1475 (patch)
treefe9efdc31e8907631dcf8d2ef98bae338bece531 /examples
parent7c94de29d44059fc804e71ba9cd6e47dfac27c93 (diff)
downloadeclipse.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.java177
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

Back to the top