1 package org
.argeo
.cms
.ui
.fs
;
3 import java
.io
.IOException
;
4 import java
.io
.InputStream
;
6 import org
.apache
.commons
.logging
.Log
;
7 import org
.apache
.commons
.logging
.LogFactory
;
8 import org
.eclipse
.rap
.fileupload
.FileDetails
;
9 import org
.eclipse
.rap
.fileupload
.FileUploadHandler
;
10 import org
.eclipse
.rap
.fileupload
.FileUploadReceiver
;
11 import org
.eclipse
.rap
.rwt
.RWT
;
12 import org
.eclipse
.rap
.rwt
.client
.ClientFile
;
13 import org
.eclipse
.rap
.rwt
.client
.service
.ClientFileUploader
;
14 import org
.eclipse
.rap
.rwt
.dnd
.ClientFileTransfer
;
15 import org
.eclipse
.swt
.dnd
.DND
;
16 import org
.eclipse
.swt
.dnd
.DropTarget
;
17 import org
.eclipse
.swt
.dnd
.DropTargetAdapter
;
18 import org
.eclipse
.swt
.dnd
.DropTargetEvent
;
19 import org
.eclipse
.swt
.dnd
.Transfer
;
20 import org
.eclipse
.swt
.widgets
.Control
;
22 public class FileDrop
{
23 private final static Log log
= LogFactory
.getLog(FileDrop
.class);
25 public void createDropTarget(Control control
) {
26 DropTarget dropTarget
= new DropTarget(control
, DND
.DROP_MOVE
| DND
.DROP_COPY
);
27 dropTarget
.setTransfer(new Transfer
[] { ClientFileTransfer
.getInstance() });
28 dropTarget
.addDropListener(new DropTargetAdapter() {
29 private static final long serialVersionUID
= 5361645765549463168L;
32 public void dropAccept(DropTargetEvent event
) {
33 if (!ClientFileTransfer
.getInstance().isSupportedType(event
.currentDataType
)) {
34 event
.detail
= DND
.DROP_NONE
;
39 public void drop(DropTargetEvent event
) {
40 handleFileDrop(control
, (ClientFile
[]) event
.data
);
45 private void handleFileDrop(Control control
, ClientFile
[] clientFiles
) {
46 ClientFileUploader service
= RWT
.getClient().getService(ClientFileUploader
.class);
47 // DiskFileUploadReceiver receiver = new DiskFileUploadReceiver();
48 FileUploadReceiver receiver
= new FileUploadReceiver() {
51 public void receive(InputStream stream
, FileDetails details
) throws IOException
{
52 if (log
.isDebugEnabled())
53 log
.debug("Process upload of " + details
.getFileName() + " (" + details
.getContentType() + ")");
55 .syncExec(() -> processUpload(stream
, details
.getFileName(), details
.getContentType()));
58 FileUploadHandler handler
= new FileUploadHandler(receiver
);
59 // handler.setMaxFileSize( sizeLimit );
60 // handler.setUploadTimeLimit( timeLimit );
61 service
.submit(handler
.getUploadUrl(), clientFiles
);
62 // for (File file : receiver.getTargetFiles()) {
63 // paths.add(file.toPath());
67 /** Executed in UI thread */
68 protected void processUpload(InputStream in
, String fileName
, String contetnType
) {