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;h=e875b5a3d1e23b1b9ee4b9de552bbcc5760257fc;hb=b71546ddc74d6ca49d252806aafd491c75dfe1fb;hp=94b2bc2cbac4b3a73a168dc6c8fca2d63c34b1f1;hpb=86ea60b48b0e813e5227be733d3cdd46f190665d;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..e875b5a3d 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 @@ -3,69 +3,35 @@ 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.api.cms.CmsLog; +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); + private final static CmsLog log = CmsLog.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) throws IOException { 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 + ")"); + processFileUpload(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 processFileUpload(InputStream in, String fileName, String contentType) throws IOException { } }