package org.argeo.cms.ui.fs;
+import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.logging.Log;
public void createDropTarget(Control control) {
FileDropAdapter fileDropAdapter = new FileDropAdapter() {
@Override
- protected void processUpload(InputStream in, String fileName, String contentType) {
+ protected void processUpload(InputStream in, String fileName, String contentType) throws IOException {
if (log.isDebugEnabled())
log.debug("Process upload of " + fileName + " (" + contentType + ")");
- processUpload(in, fileName, contentType);
+ processFileUpload(in, fileName, contentType);
}
};
DropTarget dropTarget = new DropTarget(control, DND.DROP_MOVE | DND.DROP_COPY);
}
/** Executed in UI thread */
- protected void processUpload(InputStream in, String fileName, String contentType) {
+ protected void processFileUpload(InputStream in, String fileName, String contentType) throws IOException {
}
}
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Control;
+/** Configures a {@link Control} to receive files drop from the client OS. */
public class FileDropAdapter {
public void prepareDropTarget(Control control, DropTarget dropTarget) {
@Override
public void receive(InputStream stream, FileDetails details) throws IOException {
- control.getDisplay()
- .syncExec(() -> processUpload(stream, details.getFileName(), details.getContentType()));
+ control.getDisplay().syncExec(() -> {
+ try {
+ processUpload(stream, details.getFileName(), details.getContentType());
+ } catch (IOException e) {
+ throw new IllegalStateException("Cannot process upload of " + details.getFileName(), e);
+ }
+ });
}
};
FileUploadHandler handler = new FileUploadHandler(receiver);
}
/** Executed in UI thread */
- protected void processUpload(InputStream in, String fileName, String contentType) {
+ protected void processUpload(InputStream in, String fileName, String contentType) throws IOException {
}