]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.eclipse.ui.rap/src/org/argeo/eclipse/ui/specific/FileDropAdapter.java
SSH key pair management.
[lgpl/argeo-commons.git] / org.argeo.eclipse.ui.rap / src / org / argeo / eclipse / ui / specific / FileDropAdapter.java
1 package org.argeo.eclipse.ui.specific;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5
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;
19
20 public class FileDropAdapter {
21
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;
26
27 @Override
28 public void dropAccept(DropTargetEvent event) {
29 if (!ClientFileTransfer.getInstance().isSupportedType(event.currentDataType)) {
30 event.detail = DND.DROP_NONE;
31 }
32 }
33
34 @Override
35 public void drop(DropTargetEvent event) {
36 handleFileDrop(control, event);
37 }
38 });
39 }
40
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() {
46
47 @Override
48 public void receive(InputStream stream, FileDetails details) throws IOException {
49 control.getDisplay()
50 .syncExec(() -> processUpload(stream, details.getFileName(), details.getContentType()));
51 }
52 };
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());
59 // }
60 }
61
62 /** Executed in UI thread */
63 protected void processUpload(InputStream in, String fileName, String contentType) {
64
65 }
66
67 }