]> git.argeo.org Git - lgpl/argeo-commons.git/blob - argeo/cms/ui/fs/FileDrop.java
Prepare next development cycle
[lgpl/argeo-commons.git] / argeo / cms / ui / fs / FileDrop.java
1 package org.argeo.cms.ui.fs;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5
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;
21
22 public class FileDrop {
23 private final static Log log = LogFactory.getLog(FileDrop.class);
24
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;
30
31 @Override
32 public void dropAccept(DropTargetEvent event) {
33 if (!ClientFileTransfer.getInstance().isSupportedType(event.currentDataType)) {
34 event.detail = DND.DROP_NONE;
35 }
36 }
37
38 @Override
39 public void drop(DropTargetEvent event) {
40 handleFileDrop(control, (ClientFile[]) event.data);
41 }
42 });
43 }
44
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() {
49
50 @Override
51 public void receive(InputStream stream, FileDetails details) throws IOException {
52 if (log.isDebugEnabled())
53 log.debug("Process upload of " + details.getFileName() + " (" + details.getContentType() + ")");
54 control.getDisplay()
55 .syncExec(() -> processUpload(stream, details.getFileName(), details.getContentType()));
56 }
57 };
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());
64 // }
65 }
66
67 /** Executed in UI thread */
68 protected void processUpload(InputStream in, String fileName, String contetnType) {
69
70 }
71 }