X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Ffs%2FFileDrop.java;fp=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Ffs%2FFileDrop.java;h=be36a46295d031fbf308996e493e4312f7843bb0;hb=1f6239ba1cd56d0acf846fb830462f2546f64baa;hp=94b2bc2cbac4b3a73a168dc6c8fca2d63c34b1f1;hpb=5e273aace32e9b891e05b6590cc6af2751f2c9fd;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/fs/FileDrop.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/fs/FileDrop.java index 94b2bc2cb..be36a4629 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/fs/FileDrop.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/fs/FileDrop.java @@ -1,71 +1,37 @@ package org.argeo.cms.ui.fs; -import java.io.IOException; import java.io.InputStream; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.eclipse.rap.fileupload.FileDetails; -import org.eclipse.rap.fileupload.FileUploadHandler; -import org.eclipse.rap.fileupload.FileUploadReceiver; -import org.eclipse.rap.rwt.RWT; -import org.eclipse.rap.rwt.client.ClientFile; -import org.eclipse.rap.rwt.client.service.ClientFileUploader; -import org.eclipse.rap.rwt.dnd.ClientFileTransfer; +import org.argeo.eclipse.ui.specific.FileDropAdapter; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DropTarget; -import org.eclipse.swt.dnd.DropTargetAdapter; import org.eclipse.swt.dnd.DropTargetEvent; -import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.widgets.Control; +/** Allows a control to receive file drops. */ public class FileDrop { private final static Log log = LogFactory.getLog(FileDrop.class); public void createDropTarget(Control control) { - DropTarget dropTarget = new DropTarget(control, DND.DROP_MOVE | DND.DROP_COPY); - dropTarget.setTransfer(new Transfer[] { ClientFileTransfer.getInstance() }); - dropTarget.addDropListener(new DropTargetAdapter() { - private static final long serialVersionUID = 5361645765549463168L; - + FileDropAdapter fileDropAdapter = new FileDropAdapter() { @Override - public void dropAccept(DropTargetEvent event) { - if (!ClientFileTransfer.getInstance().isSupportedType(event.currentDataType)) { - event.detail = DND.DROP_NONE; - } - } - - @Override - public void drop(DropTargetEvent event) { - handleFileDrop(control, (ClientFile[]) event.data); - } - }); - } - - private void handleFileDrop(Control control, ClientFile[] clientFiles) { - ClientFileUploader service = RWT.getClient().getService(ClientFileUploader.class); -// DiskFileUploadReceiver receiver = new DiskFileUploadReceiver(); - FileUploadReceiver receiver = new FileUploadReceiver() { - - @Override - public void receive(InputStream stream, FileDetails details) throws IOException { + protected void processUpload(InputStream in, String fileName, String contentType) { if (log.isDebugEnabled()) - log.debug("Process upload of " + details.getFileName() + " (" + details.getContentType() + ")"); - control.getDisplay() - .syncExec(() -> processUpload(stream, details.getFileName(), details.getContentType())); + log.debug("Process upload of " + fileName + " (" + contentType + ")"); + processUpload(in, fileName, contentType); } }; - FileUploadHandler handler = new FileUploadHandler(receiver); -// handler.setMaxFileSize( sizeLimit ); -// handler.setUploadTimeLimit( timeLimit ); - service.submit(handler.getUploadUrl(), clientFiles); -// for (File file : receiver.getTargetFiles()) { -// paths.add(file.toPath()); -// } + DropTarget dropTarget = new DropTarget(control, DND.DROP_MOVE | DND.DROP_COPY); + fileDropAdapter.prepareDropTarget(control, dropTarget); + } + + public void handleFileDrop(Control control, DropTargetEvent event) { } /** Executed in UI thread */ - protected void processUpload(InputStream in, String fileName, String contetnType) { + protected void processUpload(InputStream in, String fileName, String contentType) { } }