From 5ff5dd253c8908b83850178c180640a073796d0e Mon Sep 17 00:00:00 2001 From: Bruno Sinou Date: Fri, 4 Apr 2014 08:07:29 +0000 Subject: [PATCH] some tries to understand file upload problem with RAP 2.x git-svn-id: https://svn.argeo.org/commons/trunk@6945 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../ui/specific/UploadFileWizardPage.java | 88 +++++++++++++++++++ .../ui/specific/UploadFileWizardPage.java | 67 ++++++++++++++ .../wizards/ImportFileSystemWizard.java | 8 +- 3 files changed, 160 insertions(+), 3 deletions(-) create mode 100644 base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java create mode 100644 base/runtime/org.argeo.eclipse.ui.rcp/src/main/java/org/argeo/eclipse/ui/specific/UploadFileWizardPage.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 index 000000000..5747b8900 --- /dev/null +++ b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java @@ -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 index 000000000..5bdaeceb5 --- /dev/null +++ b/base/runtime/org.argeo.eclipse.ui.rcp/src/main/java/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java @@ -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 diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/wizards/ImportFileSystemWizard.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/wizards/ImportFileSystemWizard.java index 6653a80aa..127c2cd54 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/wizards/ImportFileSystemWizard.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/wizards/ImportFileSystemWizard.java @@ -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; } -- 2.30.2