X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=eclipse%2Fruntime%2Forg.argeo.eclipse.ui.rap%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Feclipse%2Fui%2Fspecific%2FImportFileSystemWizardPage.java;fp=eclipse%2Fruntime%2Forg.argeo.eclipse.ui.rap%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Feclipse%2Fui%2Fspecific%2FImportFileSystemWizardPage.java;h=829ceda6a4015958a4992642476e93807172e52b;hb=5a00c032d8c7b9617777db83b0a6d60ab6b74d18;hp=0000000000000000000000000000000000000000;hpb=83ef626b9f83190a67ba94709d2f2009626813f6;p=lgpl%2Fargeo-commons.git diff --git a/eclipse/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/ImportFileSystemWizardPage.java b/eclipse/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/ImportFileSystemWizardPage.java new file mode 100644 index 000000000..829ceda6a --- /dev/null +++ b/eclipse/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/ImportFileSystemWizardPage.java @@ -0,0 +1,106 @@ +package org.argeo.eclipse.ui.specific; + +import java.io.InputStream; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.ArgeoException; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.rwt.widgets.Upload; +import org.eclipse.rwt.widgets.UploadAdapter; +import org.eclipse.rwt.widgets.UploadEvent; +import org.eclipse.rwt.widgets.UploadItem; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; + +public class ImportFileSystemWizardPage extends WizardPage { + private Log log = LogFactory.getLog(ImportFileSystemWizardPage.class); + + private Upload uploadFile; + + public ImportFileSystemWizardPage() { + super("Import from file system"); + setDescription("Import files from the local file system into the JCR repository"); + } + + public void createControl(Composite parent) { + + Composite composite = new Composite(parent, SWT.NONE); + composite.setLayout(new GridLayout(2, false)); + composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + + new Label(composite, SWT.NONE).setText("Pick up a file"); + + uploadFile = new Upload(composite, SWT.BORDER); + uploadFile.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + uploadFile.setBrowseButtonText("Open..."); + uploadFile.addUploadListener(new UploadManager(uploadFile)); + + setControl(composite); + } + + public String getObjectPath() { + // NOTE Returns the full file name of the last uploaded file including + // the file path as selected by the user on his local machine. + // The full path including the directory and file drive are only + // returned, if the browser supports reading this properties. In Firefox + // 3, only the filename is returned. + return uploadFile.getPath(); + } + + public String getObjectName() { + return uploadFile.getUploadItem().getFileName(); + } + + public String getObjectType() { + return "nt:file"; + } + + public void performFinish() { + boolean success = uploadFile.performUpload(); + if (!success) + throw new ArgeoException("Cannot upload file named " + + uploadFile.getPath()); + } + + protected void handleUploadFinished(final Upload upload) { + if (log.isTraceEnabled()) { + UploadItem uploadItem = upload.getUploadItem(); + log.trace("filename : " + uploadItem.getFileName()); + log.trace("content-type : " + uploadItem.getContentType()); + } + } + + public InputStream getFileInputStream() { + return uploadFile.getUploadItem().getFileInputStream(); + } + + private class UploadManager extends UploadAdapter { + private Upload upload; + + public UploadManager(Upload upload) { + super(); + this.upload = upload; + } + + public void uploadFinished(UploadEvent uploadEvent) { + handleUploadFinished(upload); + } + + public void uploadInProgress(UploadEvent uploadEvent) { + } + + public void uploadException(UploadEvent uploadEvent) { + Exception exc = uploadEvent.getUploadException(); + if (exc != null) { + MessageDialog.openError(Display.getCurrent().getActiveShell(), + "Error", exc.getMessage()); + } + } + } +}