alanwilliamson
In all fairness while I cannot blame SWT for my issues, with it being the non-standard Java GUI the documentation in this area is a lot thinner on the ground. So a lot more trial and error with many of the techniques with SWT. That is fine, one enjoys a challenge. Once you get into the thinking of SWT things start falling into place.
What I wanted was for my SWT application to accept files dragged into it from external applications, namely file explorers etc. I didn't want to support complex data; just give me the full path of the file that was dropped. The code I eventually worked out is below:
DropTarget dt = new DropTarget(tableUpload,
DND.DROP_DEFAULT | DND.DROP_MOVE );
dt.setTransfer(new Transfer[] { FileTransfer.getInstance() });
dt.addDropListener(new DropTargetAdapter() {
public void drop(DropTargetEvent event) {
String fileList[] = null;
FileTransfer ft = FileTransfer.getInstance();
if (ft.isSupportedType(event.currentDataType)) {
fileList = (String[])event.data;
}
}
});
The first thing we do is to create the DropTarget passing in the widget that we want to create the drop-zone for. Here we use a previously created Table. To accept files we only need to use the DROP_DEFAULT and DROP_MOVE flags.
We can use the FileTransfer class that handles all the data conversion for us giving us a String[] of full path names of all the files dropped. Now so far all this was fairly obvious but where I became unstuck was what to do with the event that was passed in.
The key here is to first of all check that the data that was dropped is indeed something we can handle. If someone drags some text to us for example, we don't want to handle that here. So you make a call to the FileTransfer.isSupportedType() and if that returns true, then the event data is an array of String's, each one representing the full path of the file dropped.
Once I got that bit right, everything literally burst into life.
Article Details
We're Hiring
We are looking for passionate Java, CFML and Web developers who are wanting to solve some interesting problems and work with cutting edge technologies both in Scotland and the USA. Goto Jobs@AW2.0 for more details.
Related Articles
Article Archives
