1 package org
.argeo
.eclipse
.ui
.specific
;
3 import java
.io
.IOException
;
4 import java
.io
.InputStream
;
6 import org
.eclipse
.rap
.fileupload
.FileDetails
;
7 import org
.eclipse
.rap
.fileupload
.FileUploadHandler
;
8 import org
.eclipse
.rap
.fileupload
.FileUploadReceiver
;
9 import org
.eclipse
.rap
.rwt
.RWT
;
10 import org
.eclipse
.rap
.rwt
.client
.ClientFile
;
11 import org
.eclipse
.rap
.rwt
.client
.service
.ClientFileUploader
;
12 import org
.eclipse
.rap
.rwt
.dnd
.ClientFileTransfer
;
13 import org
.eclipse
.swt
.dnd
.DND
;
14 import org
.eclipse
.swt
.dnd
.DropTarget
;
15 import org
.eclipse
.swt
.dnd
.DropTargetAdapter
;
16 import org
.eclipse
.swt
.dnd
.DropTargetEvent
;
17 import org
.eclipse
.swt
.dnd
.Transfer
;
18 import org
.eclipse
.swt
.widgets
.Control
;
20 public class FileDropAdapter
{
22 public void prepareDropTarget(Control control
, DropTarget dropTarget
) {
23 dropTarget
.setTransfer(new Transfer
[] { ClientFileTransfer
.getInstance() });
24 dropTarget
.addDropListener(new DropTargetAdapter() {
25 private static final long serialVersionUID
= 5361645765549463168L;
28 public void dropAccept(DropTargetEvent event
) {
29 if (!ClientFileTransfer
.getInstance().isSupportedType(event
.currentDataType
)) {
30 event
.detail
= DND
.DROP_NONE
;
35 public void drop(DropTargetEvent event
) {
36 handleFileDrop(control
, event
);
41 public void handleFileDrop(Control control
, DropTargetEvent event
) {
42 ClientFile
[] clientFiles
= (ClientFile
[]) event
.data
;
43 ClientFileUploader service
= RWT
.getClient().getService(ClientFileUploader
.class);
44 // DiskFileUploadReceiver receiver = new DiskFileUploadReceiver();
45 FileUploadReceiver receiver
= new FileUploadReceiver() {
48 public void receive(InputStream stream
, FileDetails details
) throws IOException
{
50 .syncExec(() -> processUpload(stream
, details
.getFileName(), details
.getContentType()));
53 FileUploadHandler handler
= new FileUploadHandler(receiver
);
54 // handler.setMaxFileSize( sizeLimit );
55 // handler.setUploadTimeLimit( timeLimit );
56 service
.submit(handler
.getUploadUrl(), clientFiles
);
57 // for (File file : receiver.getTargetFiles()) {
58 // paths.add(file.toPath());
62 /** Executed in UI thread */
63 protected void processUpload(InputStream in
, String fileName
, String contentType
) {