some tries to understand file upload problem with RAP 2.x
authorBruno Sinou <bsinou@argeo.org>
Fri, 4 Apr 2014 08:07:29 +0000 (08:07 +0000)
committerBruno Sinou <bsinou@argeo.org>
Fri, 4 Apr 2014 08:07:29 +0000 (08:07 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@6945 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java [new file with mode: 0644]
base/runtime/org.argeo.eclipse.ui.rcp/src/main/java/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java [new file with mode: 0644]
server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/wizards/ImportFileSystemWizard.java

diff --git a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java
new file mode 100644 (file)
index 0000000..5747b89
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2007-2012 Argeo GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.argeo.eclipse.ui.specific;
+
+import java.io.InputStream;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.rap.rwt.widgets.FileUpload;
+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.Label;
+
+public class UploadFileWizardPage extends WizardPage {
+       // private final static Log log = LogFactory
+       // .getLog(UploadFileWizardPage.class);
+       private static final long serialVersionUID = 8251354244542973179L;
+       public final static String FILE_ITEM_TYPE = "FILE";
+       public final static String FOLDER_ITEM_TYPE = "FOLDER";
+
+       private FileUpload fileUpload;
+
+       public UploadFileWizardPage() {
+               super("Import from file system");
+               setDescription("Import files from the local file system to the server");
+       }
+
+       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");
+               fileUpload = new FileUpload(composite, SWT.BORDER);
+               fileUpload.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+               fileUpload.setText("Browse");
+               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 null;
+       }
+
+       public String getObjectName() {
+               return null;
+       }
+
+       public String getObjectType() {
+               return FILE_ITEM_TYPE;
+       }
+
+       public void performFinish() {
+               // boolean success = uploadFile.performUpload();
+               // if (!success)
+               // throw new ArgeoException("Cannot upload file named "
+               // + uploadFile.getPath());
+       }
+
+       // protected void handleUploadFinished(final Upload upload) {
+       // }
+
+       public InputStream getFileInputStream() {
+               return null;
+       }
+
+       public boolean getNeedsProgressMonitor() {
+               return false;
+       }
+
+}
diff --git a/base/runtime/org.argeo.eclipse.ui.rcp/src/main/java/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java b/base/runtime/org.argeo.eclipse.ui.rcp/src/main/java/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java
new file mode 100644 (file)
index 0000000..5bdaece
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2007-2012 Argeo GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.argeo.eclipse.ui.specific;
+
+import java.io.InputStream;
+
+import org.eclipse.jface.preference.DirectoryFieldEditor;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.widgets.Composite;
+
+public class UploadFileWizardPage extends WizardPage {
+
+       public final static String FILE_ITEM_TYPE = "FILE";
+       public final static String FOLDER_ITEM_TYPE = "FOLDER";
+
+       private DirectoryFieldEditor dfe;
+
+       public UploadFileWizardPage() {
+               super("Import from file system");
+               setDescription("Import files from the local file system into the JCR repository");
+       }
+
+       public void createControl(Composite parent) {
+               dfe = new DirectoryFieldEditor("directory", "From", parent);
+               setControl(dfe.getTextControl(parent));
+       }
+
+       public String getObjectPath() {
+               return dfe.getStringValue();
+       }
+
+       public String getObjectType() {
+               return FOLDER_ITEM_TYPE;
+       }
+
+       public boolean getNeedsProgressMonitor() {
+               return true;
+       }
+
+       // Dummy methods : useless in RCP context but useful for RAP
+       /** WARNING : always return null in RCP context */
+       public String getObjectName() {
+               return null;
+       }
+
+       /** WARNING : do nothing in RCP context */
+       public void performFinish() {
+       }
+
+       /** WARNING : always return null in RCP context */
+       public InputStream getFileInputStream() {
+               return null;
+       }
+}
\ No newline at end of file
index 6653a80aa1e71fc1a673203773e2586ba61263bc..127c2cd54a0669032406b7717ff2008218bbfbe8 100644 (file)
@@ -30,6 +30,7 @@ import org.apache.commons.logging.LogFactory;
 import org.argeo.ArgeoException;
 import org.argeo.eclipse.ui.ErrorFeedback;
 import org.argeo.eclipse.ui.specific.ImportToServerWizardPage;
+import org.argeo.eclipse.ui.specific.UploadFileWizardPage;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.operation.IRunnableWithProgress;
@@ -39,7 +40,7 @@ public class ImportFileSystemWizard extends Wizard {
        private final static Log log = LogFactory
                        .getLog(ImportFileSystemWizard.class);
 
-       private ImportToServerWizardPage importPage;
+       private UploadFileWizardPage importPage;
        private final Node folder;
 
        public ImportFileSystemWizard(Node folder) {
@@ -49,7 +50,7 @@ public class ImportFileSystemWizard extends Wizard {
 
        @Override
        public void addPages() {
-               importPage = new ImportToServerWizardPage();
+               importPage = new UploadFileWizardPage();
                addPage(importPage);
                setNeedsProgressMonitor(importPage.getNeedsProgressMonitor());
        }
@@ -92,7 +93,8 @@ public class ImportFileSystemWizard extends Wizard {
                        return true;
                } else if (ImportToServerWizardPage.FOLDER_ITEM_TYPE.equals(objectType)) {
                        if (objectPath == null || !new File(objectPath).exists()) {
-                               ErrorFeedback.show("Directory " + objectPath + " does not exist");
+                               ErrorFeedback.show("Directory " + objectPath
+                                               + " does not exist");
                                return false;
                        }