From b2863f4c410d9068d7f6684668fa5327d5e64f72 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Fri, 2 Oct 2015 09:46:32 +0000 Subject: [PATCH] branch from private git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-uploader@119338 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 38 + .project | 53 + .settings/.jsdtscope | 13 + .../com.google.appengine.eclipse.core.prefs | 2 + .settings/com.google.gdt.eclipse.core.prefs | 5 + .settings/com.google.gwt.eclipse.core.prefs | 2 + .settings/org.eclipse.core.resources.prefs | 6 + .settings/org.eclipse.jdt.core.prefs | 8 + .settings/org.eclipse.jst.jsp.core.prefs | 3 + .settings/org.eclipse.m2e.core.prefs | 4 + .settings/org.eclipse.wst.common.component | 10 + ....eclipse.wst.common.project.facet.core.xml | 8 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .../org.eclipse.wst.jsdt.ui.superType.name | 1 + .settings/org.eclipse.wst.validation.prefs | 2 + .tern-project | 1 + distro/INSTALL | 0 distro/LICENSE | 7 + distro/MAINTAINERS | 4 + distro/README | 44 + distro/changelog.xml | 6 + distro/descriptor.xml | 48 + distro/profile.xml | 25 + distro/svnpath.txt | 1 + pom.xml | 305 ++++++ .../WorkspaceUploader.gwt.xml | 27 + .../client/BaloonPanelUpload.java | 57 + .../client/ClosableDialog.java | 151 +++ .../client/ConstantsWorkspaceUploader.java | 32 + .../client/DialogResult.java | 70 ++ .../workspaceuploader/client/StringUtil.java | 41 + .../client/WorkspaceUploader.java | 106 ++ .../client/WorkspaceUploaderService.java | 33 + .../client/WorkspaceUploaderServiceAsync.java | 74 ++ .../client/events/CancelUploadEvent.java | 67 ++ .../events/CancelUploadEventHandler.java | 21 + .../client/events/OpenMyUploadsEvent.java | 37 + .../events/OpenMyUploadsEventHandler.java | 19 + .../resource/WorkspaceUploaderIcons.java | 78 ++ .../resource/WorkspaceUploaderResources.java | 93 ++ .../client/resource/cancel.png | Bin 0 -> 779 bytes .../client/resource/cancel_red.png | Bin 0 -> 639 bytes .../client/resource/closewindow.jpg | Bin 0 -> 741 bytes .../client/resource/completed.gif | Bin 0 -> 541 bytes .../client/resource/failed.png | Bin 0 -> 655 bytes .../client/resource/loader2.gif | Bin 0 -> 1849 bytes .../client/resource/upload.gif | Bin 0 -> 3905 bytes .../client/resource/wait.png | Bin 0 -> 400 bytes .../client/uploader/DialogUpload.java | 347 +++++++ .../client/uploader/DialogUploadStream.java | 386 +++++++ .../client/uploader/GenerateUUID.java | 72 ++ .../client/uploader/MonitorPanel.java | 248 +++++ .../uploader/MultipleDilaogUploadStream.java | 327 ++++++ .../client/uploader/UploaderMonitor.java | 221 ++++ .../portlet/WorkspaceUploaderPortlet.java | 54 + .../public/workspaceuploader.css | 110 ++ .../workspaceuploader/server/StreamUtils.java | 130 +++ .../server/WorkspaceUploadServlet.java | 556 ++++++++++ .../server/WorkspaceUploadServletStream.java | 974 ++++++++++++++++++ .../server/WorkspaceUploaderServiceImpl.java | 102 ++ .../NotificationsWorkspaceUploader.java | 187 ++++ ...otificationsWorkspaceUploaderProducer.java | 158 +++ .../AbstractUploadProgressListener.java | 259 +++++ .../server/upload/MemoryUploadListener.java | 109 ++ .../upload/UploadCanceledException.java | 29 + .../upload/UploadProgressInputStream.java | 96 ++ .../server/upload/UploadProgressListener.java | 262 +++++ .../upload/WorkspaceUploaderManager.java | 292 ++++++ .../server/upload/WorkspaceUploaderMng.java | 268 +++++ .../server/util/UserUtil.java | 144 +++ .../workspaceuploader/server/util/WsUtil.java | 283 +++++ .../shared/ContactModel.java | 159 +++ .../shared/FieldVerifier.java | 42 + .../shared/HandlerResultMessage.java | 154 +++ .../shared/UploadProgress.java | 87 ++ .../shared/WorkspaceUploadFile.java | 96 ++ .../shared/WorkspaceUploaderItem.java | 229 ++++ .../shared/event/UploadEvent.java | 40 + .../event/UploadProgressChangeEvent.java | 71 ++ .../WorkspaceUploader.gwt.xml | 27 + .../WEB-INF/jsp/WorkspaceUploader_view.jsp | 18 + src/main/webapp/WEB-INF/liferay-display.xml | 5 + .../WEB-INF/liferay-plugin-package.properties | 9 + src/main/webapp/WEB-INF/liferay-portlet.xml | 11 + src/main/webapp/WEB-INF/portlet.xml | 18 + src/main/webapp/WEB-INF/web.xml | 47 + src/main/webapp/workspaceuploader.css | 34 + src/main/webapp/workspaceuploader.html | 49 + 88 files changed, 8213 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/.jsdtscope create mode 100644 .settings/com.google.appengine.eclipse.core.prefs create mode 100644 .settings/com.google.gdt.eclipse.core.prefs create mode 100644 .settings/com.google.gwt.eclipse.core.prefs create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.jst.jsp.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 .settings/org.eclipse.wst.common.component create mode 100644 .settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 .settings/org.eclipse.wst.validation.prefs create mode 100644 .tern-project create mode 100644 distro/INSTALL create mode 100644 distro/LICENSE create mode 100644 distro/MAINTAINERS create mode 100644 distro/README create mode 100644 distro/changelog.xml create mode 100644 distro/descriptor.xml create mode 100644 distro/profile.xml create mode 100644 distro/svnpath.txt create mode 100644 pom.xml create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/WorkspaceUploader.gwt.xml create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/BaloonPanelUpload.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ClosableDialog.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ConstantsWorkspaceUploader.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/DialogResult.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/StringUtil.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploaderService.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploaderServiceAsync.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/CancelUploadEvent.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/CancelUploadEventHandler.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/OpenMyUploadsEvent.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/OpenMyUploadsEventHandler.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderIcons.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderResources.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/cancel.png create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/cancel_red.png create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/closewindow.jpg create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/completed.gif create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/failed.png create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/loader2.gif create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/upload.gif create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/wait.png create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/DialogUpload.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/DialogUploadStream.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/GenerateUUID.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/MonitorPanel.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/MultipleDilaogUploadStream.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/uploader/UploaderMonitor.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/portlet/WorkspaceUploaderPortlet.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/public/workspaceuploader.css create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/StreamUtils.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServlet.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploadServletStream.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/WorkspaceUploaderServiceImpl.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploader.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/notification/NotificationsWorkspaceUploaderProducer.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/AbstractUploadProgressListener.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/MemoryUploadListener.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/UploadCanceledException.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/UploadProgressInputStream.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/UploadProgressListener.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/WorkspaceUploaderManager.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/upload/WorkspaceUploaderMng.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/util/UserUtil.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/server/util/WsUtil.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/ContactModel.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/FieldVerifier.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/HandlerResultMessage.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/UploadProgress.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/WorkspaceUploadFile.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/WorkspaceUploaderItem.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/event/UploadEvent.java create mode 100644 src/main/java/org/gcube/portlets/widgets/workspaceuploader/shared/event/UploadProgressChangeEvent.java create mode 100644 src/main/resources/org/gcube/portlets/widgets/workspaceuploader/WorkspaceUploader.gwt.xml create mode 100644 src/main/webapp/WEB-INF/jsp/WorkspaceUploader_view.jsp create mode 100644 src/main/webapp/WEB-INF/liferay-display.xml create mode 100644 src/main/webapp/WEB-INF/liferay-plugin-package.properties create mode 100644 src/main/webapp/WEB-INF/liferay-portlet.xml create mode 100644 src/main/webapp/WEB-INF/portlet.xml create mode 100644 src/main/webapp/WEB-INF/web.xml create mode 100644 src/main/webapp/workspaceuploader.css create mode 100644 src/main/webapp/workspaceuploader.html diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..c78cf73 --- /dev/null +++ b/.classpath @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..0c10be9 --- /dev/null +++ b/.project @@ -0,0 +1,53 @@ + + + workspace-uploader-TRUNK + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + com.google.gdt.eclipse.core.webAppProjectValidator + + + + + com.google.gwt.eclipse.core.gwtProjectValidator + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature + com.google.gwt.eclipse.core.gwtNature + + diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope new file mode 100644 index 0000000..b72a6a4 --- /dev/null +++ b/.settings/.jsdtscope @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.settings/com.google.appengine.eclipse.core.prefs b/.settings/com.google.appengine.eclipse.core.prefs new file mode 100644 index 0000000..82c36af --- /dev/null +++ b/.settings/com.google.appengine.eclipse.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +filesCopiedToWebInfLib= diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs new file mode 100644 index 0000000..bdc2a07 --- /dev/null +++ b/.settings/com.google.gdt.eclipse.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +jarsExcludedFromWebInfLib= +lastWarOutDir=/home/francesco-mangiacrapa/wseclipseluna/workspace-uploader-TRUNK/target/workspace-uploader-1.0.0-SNAPSHOT +warSrcDir=src/main/webapp +warSrcDirIsOutput=false diff --git a/.settings/com.google.gwt.eclipse.core.prefs b/.settings/com.google.gwt.eclipse.core.prefs new file mode 100644 index 0000000..f23a752 --- /dev/null +++ b/.settings/com.google.gwt.eclipse.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +entryPointModules= diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..29abf99 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..443e085 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.jst.jsp.core.prefs b/.settings/org.eclipse.jst.jsp.core.prefs new file mode 100644 index 0000000..3a5c98d --- /dev/null +++ b/.settings/org.eclipse.jst.jsp.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +validateFragments=false +validation.use-project-settings=true diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..cd2a508 --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..bc0de8f --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/.tern-project b/.tern-project new file mode 100644 index 0000000..a185ba0 --- /dev/null +++ b/.tern-project @@ -0,0 +1 @@ +{"ide":{"scriptPaths":[]},"plugins":{"aui":{},"liferay":{},"yui":{}},"libs":["ecma5","browser"]} \ No newline at end of file diff --git a/distro/INSTALL b/distro/INSTALL new file mode 100644 index 0000000..e69de29 diff --git a/distro/LICENSE b/distro/LICENSE new file mode 100644 index 0000000..cdb5851 --- /dev/null +++ b/distro/LICENSE @@ -0,0 +1,7 @@ +gCube System - License +------------------------------------------------------------ + +The gCube/gCore software is licensed as Free Open Source software conveying to the EUPL (http://ec.europa.eu/idabc/eupl). +The software and documentation is provided by its authors/distributors "as is" and no expressed or +implied warranty is given for its use, quality or fitness for a particular case. + diff --git a/distro/MAINTAINERS b/distro/MAINTAINERS new file mode 100644 index 0000000..d43c386 --- /dev/null +++ b/distro/MAINTAINERS @@ -0,0 +1,4 @@ +Mantainers +------- + +* Francesco Mangiacrapa (francesco.mangiacrapa@isti.cnr.it), CNR Pisa, Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" diff --git a/distro/README b/distro/README new file mode 100644 index 0000000..e0bc42d --- /dev/null +++ b/distro/README @@ -0,0 +1,44 @@ +The gCube System - WorkspacePortlet +------------------------------------------------------------ + +This work has been partially supported by the following European projects: DILIGENT (FP6-2003-IST-2), +D4Science (FP7-INFRA-2007-1.2.2), D4Science-II (FP7-INFRA-2008-1.2.2), iMarine (FP7-INFRASTRUCTURES-2011-2), +and EUBrazilOpenBio (FP7-ICT-2011-EU-Brazil), Parthenos (H2020-INFRADEV-1-2014-1), BlueBridge (H2020-EINFRA-2015-1) + + +Authors +------- + +* Francesco Mangiacrapa (francesco.mangiacrapa@isti.cnr.it), CNR Pisa, + Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo". + + +Version and Release Date +------------------------ + +v. 6.8.0 July 2015 + + +Description +----------- + +The Workspace Uploader + +Download information +-------------------- + +Source code is available from SVN: + +Binaries can be downloaded from: +n/a + + +Documentation +------------- +Documentation is available on-line from the Projects Documentation Wiki: + + +Licensing +--------- + +This software is licensed under the terms you may find in the file named "LICENSE" in this directory. \ No newline at end of file diff --git a/distro/changelog.xml b/distro/changelog.xml new file mode 100644 index 0000000..e8055db --- /dev/null +++ b/distro/changelog.xml @@ -0,0 +1,6 @@ + + + first release + + diff --git a/distro/descriptor.xml b/distro/descriptor.xml new file mode 100644 index 0000000..4efc827 --- /dev/null +++ b/distro/descriptor.xml @@ -0,0 +1,48 @@ + + servicearchive + + tar.gz + + / + + + ${distroDirectory} + / + true + + README + LICENSE + INSTALL + MAINTAINERS + changelog.xml + + 755 + true + + + target/apidocs + /${artifactId}/doc/api + true + 755 + + + + + ${distroDirectory}/profile.xml + ./ + true + + + target/${build.finalName}.war + /${artifactId} + + + ${distroDirectory}/svnpath.txt + /${artifactId} + true + + + \ No newline at end of file diff --git a/distro/profile.xml b/distro/profile.xml new file mode 100644 index 0000000..51c3b6b --- /dev/null +++ b/distro/profile.xml @@ -0,0 +1,25 @@ + + + + Service + + ${description} + PortletUser + ${artifactId} + ${version} + + + ${artifactId} + ${version} + + ${groupId} + ${artifactId} + ${version} + + + target/${build.finalName}.war + + + + + diff --git a/distro/svnpath.txt b/distro/svnpath.txt new file mode 100644 index 0000000..edacb04 --- /dev/null +++ b/distro/svnpath.txt @@ -0,0 +1 @@ +${scm.url} \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..2d6373f --- /dev/null +++ b/pom.xml @@ -0,0 +1,305 @@ + + + + maven-parent + org.gcube.tools + 1.0.0 + + + + 4.0.0 + org.gcube.portlets.widgets + workspace-uploader + war + 1.0.0-SNAPSHOT + Workspace Uploader Widget + + scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/${project.artifactId} + scm:https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/${project.artifactId} + http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/${project.artifactId} + + + + 2.7.0 + distro + + 1.7 + 1.7 + ${project.build.directory}/${project.build.finalName} + UTF-8 + UTF-8 + + + + + + org.gcube.distribution + maven-portal-bom + LATEST + pom + import + + + + + + + localRun + + + xerces + xerces + 2.4.0 + + + + + + + + + + + + + + + + + com.google.gwt + gwt-user + ${gwtVersion} + compile + + + + + com.google.gwt + gwt-servlet + ${gwtVersion} + provided + + + + org.gcube.portlets.user + gcube-widgets + provided + + + + org.gcube.resources.discovery + ic-client + provided + + + org.gcube.core + common-scope-maps + compile + + + + + org.gcube.dvos + usermanagement-core + provided + + + + org.gcube.portal + custom-portal-handler + provided + + + + org.gcube.applicationsupportlayer + aslcore + provided + + + + org.gcube.applicationsupportlayer + accesslogger + provided + + + + + org.gcube.common + home-library-model + provided + + + org.gcube.common + home-library-jcr + provided + + + org.gcube.common + home-library + provided + + + asm-all + asm + + + + + + commons-httpclient + commons-httpclient + 3.1 + + + + commons-fileupload + commons-fileupload + provided + + + + + log4j + log4j + compile + + + org.slf4j + slf4j-log4j12 + compile + + + org.slf4j + slf4j-api + compile + + + + org.gcube.portal + social-networking-library + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + provided + + + org.gcube.applicationsupportlayer + aslsocial + provided + + + + + com.liferay.portal + portal-service + 6.0.6 + provided + + + javax.portlet + portlet-api + provided + + + + + + ${webappDirectory}/WEB-INF/classes + + + + + + org.codehaus.mojo + gwt-maven-plugin + ${gwtVersion} + + + + compile + + + + + + + WorkspacePortlet.html + ${webappDirectory} + + + + + + org.apache.maven.plugins + maven-war-plugin + 2.1.1 + + + compile + + exploded + + + + + ${webappDirectory} + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.2 + + + ${distroDirectory}/descriptor.xml + + + + + servicearchive + install + + single + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.5 + + + copy-profile + install + + copy-resources + + + target + + + ${distroDirectory} + true + + profile.xml + + + + + + + + + + diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/WorkspaceUploader.gwt.xml b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/WorkspaceUploader.gwt.xml new file mode 100644 index 0000000..02ae691 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/WorkspaceUploader.gwt.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/BaloonPanelUpload.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/BaloonPanelUpload.java new file mode 100644 index 0000000..dad83d2 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/BaloonPanelUpload.java @@ -0,0 +1,57 @@ +/** + * + */ +package org.gcube.portlets.widgets.workspaceuploader.client; + +import com.google.gwt.user.client.ui.PopupPanel; +import com.google.gwt.user.client.ui.ScrollPanel; + + +/** + * The Class BaloonPanel. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Feb 25, 2015 + */ +public class BaloonPanelUpload extends PopupPanel{ + + private boolean shouldHide = false; + /** + * @return the shouldHide + */ + public boolean isShouldHide() { + return shouldHide; + } + + /** + * Instantiates a new baloon panel go top. + * + * @param baloonText the baloon text + * @param shouldHide true if the popup should be automatically hidden when the user clicks outside of it or the history token changes. + */ + public BaloonPanelUpload(ScrollPanel panel, boolean shouldHide) { + super(shouldHide); + this.shouldHide = shouldHide; + setAutoHideEnabled(shouldHide); + setStyleName("baloonGoTop"); + // some sample widget will be content of the balloon +// HTML text = new HTML(baloonText); + setWidget(panel); + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.PopupPanel#show() + */ + @Override + public void show() { + super.show(); + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.PopupPanel#hide() + */ + @Override + public void hide() { + super.hide(); + } +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ClosableDialog.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ClosableDialog.java new file mode 100644 index 0000000..e145865 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ClosableDialog.java @@ -0,0 +1,151 @@ +/** + * + */ +package org.gcube.portlets.widgets.workspaceuploader.client; + + +import org.gcube.portlets.user.gcubewidgets.client.popup.GCubeDialog; +import org.gcube.portlets.widgets.workspaceuploader.client.resource.WorkspaceUploaderResources; + +import com.google.gwt.dom.client.NativeEvent; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Element; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.Event.NativePreviewEvent; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.ScrollPanel; + + +/** + * The Class MyDialogBox. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Sep 9, 2015 + */ +@SuppressWarnings("deprecation") +public class ClosableDialog extends GCubeDialog { + + private Image close = WorkspaceUploaderResources.getImageCloseWin(); + private HorizontalPanel captionPanel = new HorizontalPanel(); + private HTML title = new HTML(""); + /** + * Instantiates a new my dialog box. + * + * @param panel the panel + * @param autoHide the auto hide + * @param modal the modal + */ + public ClosableDialog(ScrollPanel panel, boolean autoHide, boolean modal, String captionTitle) { + super(autoHide, modal); + init(captionTitle); +// super.setGlassEnabled(true); +// super.setAnimationEnabled(true); + setWidget(panel); + } + + /** + * Instantiates a new my dialog box. + * + * @param panel the panel + * @param autoHide the auto hide + * @param modal the modal + */ + public ClosableDialog(boolean autoHide, boolean modal, String captionTitle) { + super(autoHide, modal); + init(captionTitle); + } + + private void init(String captionTitle){ + Element td = getCellElement(0, 1); + DOM.removeChild(td, (Element) td.getFirstChildElement()); + DOM.appendChild(td, captionPanel.getElement()); + captionPanel.setStyleName("ClosableDialogCaption"); + title.setHTML(captionTitle); + captionPanel.add(title); + close.setStyleName("CloseButton"); + captionPanel.add(close); + addStyleName("ClosableDialog"); + } + + /** + * Instantiates a new my dialog box. + * + * @param panel the panel + * @param autoHide the auto hide + */ + public ClosableDialog(ScrollPanel panel, boolean autoHide, String captionTitle) { + this(panel, autoHide, false, captionTitle); + } + + /** + * Instantiates a new my dialog box. + * + * @param panel the panel + */ + public ClosableDialog(ScrollPanel panel) { + this(panel, false, ""); + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.DialogBox#getHTML() + */ + @Override + public String getHTML() { + return this.title.getHTML(); + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.DialogBox#getText() + */ + @Override + public String getText() { + return this.title.getText(); + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.DialogBox#setHTML(java.lang.String) + */ + @Override + public void setHTML(String html) { + this.title.setHTML(html); + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.DialogBox#setText(java.lang.String) + */ + @Override + public void setText(String text) { + this.title.setText(text); + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.DialogBox#onPreviewNativeEvent(com.google.gwt.user.client.Event.NativePreviewEvent) + */ + @Override + protected void onPreviewNativeEvent(NativePreviewEvent event) { + NativeEvent nativeEvent = event.getNativeEvent(); + + if (!event.isCanceled() && (event.getTypeInt() == Event.ONCLICK) + && isCloseEvent(nativeEvent)) { + this.hide(); + } + super.onPreviewNativeEvent(event); + } + + /** + * Checks if is close event. + * + * @param event the event + * @return true, if is close event + */ + private boolean isCloseEvent(NativeEvent event) { + return event.getEventTarget().equals(close.getElement());// compares + // equality + // of the + // underlying + // DOM + // elements + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ConstantsWorkspaceUploader.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ConstantsWorkspaceUploader.java new file mode 100644 index 0000000..11e75b3 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/ConstantsWorkspaceUploader.java @@ -0,0 +1,32 @@ +package org.gcube.portlets.widgets.workspaceuploader.client; + +import com.google.gwt.core.client.GWT; + + +/** + * The Class ConstantsWorkspaceUploader. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Aug 3, 2015 + */ +public class ConstantsWorkspaceUploader { + + public static final String WORKSPACE_UPLOADER_SERVLET = GWT.getModuleBaseURL() + "workspaceUploadServlet"; + + public static final String WORKSPACE_UPLOADER_SERVLET_STREAM = GWT.getModuleBaseURL() + "workspaceUploadServletStream"; + + public static final String SERVER_ERROR = "Sorry, an error has occurred on the server when"; + public static final String TRY_AGAIN = "Try again"; + + // UPLOAD SERVLET PARAMETERS + public static final String IS_OVERWRITE = "isOverwrite"; + public static final String UPLOAD_TYPE = "uploadType"; + public static final String ID_FOLDER = "idFolder"; + public static final String UPLOAD_FORM_ELEMENT = "uploadFormElement"; + + public static final String CLIENT_UPLOAD_KEYS = "client_upload_keys"; + public static final String CANCEL_UPLOAD = "cancel_upload"; + public static final String JSON_CLIENT_KEYS = "ClientKeys"; + + public static final String MY_UPLOADS = "My Uploads"; +} diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/DialogResult.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/DialogResult.java new file mode 100644 index 0000000..1eaebf4 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/DialogResult.java @@ -0,0 +1,70 @@ +/** + * + */ +package org.gcube.portlets.widgets.workspaceuploader.client; + +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.DialogBox; +import com.google.gwt.user.client.ui.DockPanel; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.HasVerticalAlignment; +import com.google.gwt.user.client.ui.Image; + +/** + * The Class DialogResult. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * @Apr 4, 2014 + */ +public class DialogResult extends DialogBox implements ClickHandler { + + /** + * Instantiates a new dialog result. + * + * @param img + * the img + * @param title + * the title + * @param msgTxt + * the msg txt + */ + public DialogResult(Image img, String title, String msgTxt) { + setText(title); + Button closeButton = new Button("Ok", this); + HTML msg = new HTML("
" + msgTxt + "
", true); + msg.getElement().getStyle().setPadding(10, Unit.PX); + + DockPanel dock = new DockPanel(); + dock.setSpacing(4); + dock.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); + dock.getElement().getStyle().setBackgroundColor("#FFF"); + + dock.add(closeButton, DockPanel.SOUTH); + if (img != null) + dock.add(img, DockPanel.WEST); + + dock.add(msg, DockPanel.CENTER); + + dock.setCellHorizontalAlignment(closeButton, DockPanel.ALIGN_CENTER); + dock.setWidth("100%"); + dock.setHeight("100%"); + // setWidget(dock); + add(dock); + // setWidth("100%"); + } + + /* + * (non-Javadoc) + * + * @see + * com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event + * .dom.client.ClickEvent) + */ + @Override + public void onClick(ClickEvent event) { + hide(); + } +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/StringUtil.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/StringUtil.java new file mode 100644 index 0000000..f25b4f3 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/StringUtil.java @@ -0,0 +1,41 @@ +/** + * + */ +package org.gcube.portlets.widgets.workspaceuploader.client; + +import com.google.gwt.core.shared.GWT; + +/** + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Sep 9, 2015 + */ +public class StringUtil { + + /** + * Puts ellipses in input strings that are longer than than maxCharacters. Shorter strings or + * null is returned unchanged. + * @param input the input string that may be subjected to shortening + * @param maxCharacters the maximum characters that are acceptable for the unshortended string. Must be at least 3, otherwise a string with ellipses is too long already. + * @param the number of characters that should appear after the ellipsis (0 or larger) + */ + public static String ellipsize(String input, int maxCharacters, int charactersAfterEllipsis) { + + try{ + if(maxCharacters < 3) { + throw new IllegalArgumentException("maxCharacters must be at least 3 because the ellipsis already take up 3 characters"); + } + if(maxCharacters - 3 < charactersAfterEllipsis) { + throw new IllegalArgumentException("charactersAfterEllipsis must be less than maxCharacters-3"); + } + if (input == null || input.length() < maxCharacters) { + return input; + } + return input.substring(0, maxCharacters - 3 - charactersAfterEllipsis) + "..." + input.substring(input.length() - charactersAfterEllipsis); + }catch(Exception e){ + GWT.log(e.getMessage()); + return input; + } + } + +} diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java new file mode 100644 index 0000000..a52d7e7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploader.java @@ -0,0 +1,106 @@ +package org.gcube.portlets.widgets.workspaceuploader.client; + +import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload; +import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE; +import org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUploadStream; + +import com.google.gwt.core.client.EntryPoint; +import com.google.gwt.core.client.ScriptInjector; +import com.google.gwt.core.shared.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.RootPanel; + +/** + * Entry point classes define onModuleLoad(). + */ +public class WorkspaceUploader implements EntryPoint { + + String headerTitle = "Upload in your Workspace"; + String parentId; + private Button buttonUploader; + private Button buttonDirect; + + public void onModuleLoad() { + + boolean jQueryLoaded = isjQueryLoaded(); + GWT.log("jQueryLoaded: "+jQueryLoaded); + + GWT.log("Injected : http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"); + + if (!jQueryLoaded) { + ScriptInjector.fromUrl("http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js") + .setWindow(ScriptInjector.TOP_WINDOW) + .inject(); + } + +// ScriptInjector.fromUrl("http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js") +// .setWindow(ScriptInjector.TOP_WINDOW) +// .inject(); + + buttonUploader = new Button("Upload in your Workspace"); + buttonDirect = new Button("Upload (Stream) in your Workspace"); + enableUpload(false); + + WorkspaceUploaderServiceAsync.Util.getInstance().getWorkspaceId( + new AsyncCallback() { + + @Override + public void onSuccess(String result) { + + if (result != null) { + parentId = result; + enableUpload(true); + } else { + Window.alert("An error occurred on recovering workspace, try again later"); + enableUpload(false); + } + } + + @Override + public void onFailure(Throwable caught) { + Window.alert("An error occurred on recovering workspace, try again later"); + enableUpload(false); + } + }); + + + buttonUploader.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + DialogUpload uploader = new DialogUpload(headerTitle, parentId, UPLOAD_TYPE.File); + uploader.center(); + } + }); + + buttonDirect.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + MultipleDilaogUploadStream uploadStream = new MultipleDilaogUploadStream(headerTitle, parentId, org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUploadStream.UPLOAD_TYPE.File); + uploadStream.center(); + } + }); + +// RootPanel.get("workspace-uploader").add(buttonUploader); + RootPanel.get("workspace-uploader").add(buttonDirect); + } + + private void enableUpload(boolean bool){ + buttonUploader.setEnabled(bool); + buttonDirect.setEnabled(bool); + } + + /** + * Checks if is j query loaded. + * + * @return true, if is j query loaded + */ + private native boolean isjQueryLoaded() /*-{ + return (typeof $wnd['jQuery'] !== 'undefined'); + }-*/; +} diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploaderService.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploaderService.java new file mode 100644 index 0000000..deaad87 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploaderService.java @@ -0,0 +1,33 @@ +package org.gcube.portlets.widgets.workspaceuploader.client; + +import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem; + +import com.google.gwt.user.client.rpc.RemoteService; +import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; + +/** + * The client side stub for the RPC service. + */ +@RemoteServiceRelativePath("workspaceUploaderService") +public interface WorkspaceUploaderService extends RemoteService { + /** + * @param identifier + * @return + * @throws Exception + */ + WorkspaceUploaderItem getUploadStatus(String identifier) throws Exception; + + /** + * @param parentId + * @param itemName + * @return + * @throws Exception + */ + String itemExistsInWorkpaceFolder(String parentId, String itemName) throws Exception; + + /** + * @return + * @throws Exception + */ + String getWorkspaceId() throws Exception; +} diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploaderServiceAsync.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploaderServiceAsync.java new file mode 100644 index 0000000..69742c3 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/WorkspaceUploaderServiceAsync.java @@ -0,0 +1,74 @@ +package org.gcube.portlets.widgets.workspaceuploader.client; + +import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.rpc.AsyncCallback; + + +/** + * The Interface WorkspaceUploaderServiceAsync. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Aug 4, 2015 + */ +public interface WorkspaceUploaderServiceAsync +{ + + + /** + * Gets the upload status. + * + * @param uploaderId the uploader id + * @param callback the callback + * @return the upload status + */ + void getUploadStatus(String uploaderId, AsyncCallback callback ); + + + /** + * Item exists in workpace folder. + * + * @param parentId the parent id + * @param itemName the item name + * @param callback the callback + */ + void itemExistsInWorkpaceFolder(String parentId, String itemName, AsyncCallback callback ); + + + /** + * Utility class to get the RPC Async interface from client-side code. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Aug 4, 2015 + */ + public static final class Util + { + private static WorkspaceUploaderServiceAsync instance; + + /** + * Gets the single instance of Util. + * + * @return single instance of Util + */ + public static final WorkspaceUploaderServiceAsync getInstance() + { + if ( instance == null ) + { + instance = (WorkspaceUploaderServiceAsync) GWT.create( WorkspaceUploaderService.class ); + } + return instance; + } + + /** + * Instantiates a new util. + */ + private Util() + { + // Utility class should not be instantiated + } + } + + + void getWorkspaceId(AsyncCallback callback); +} diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/CancelUploadEvent.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/CancelUploadEvent.java new file mode 100644 index 0000000..d4db633 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/CancelUploadEvent.java @@ -0,0 +1,67 @@ +package org.gcube.portlets.widgets.workspaceuploader.client.events; + +import org.gcube.portlets.widgets.workspaceuploader.shared.WorkspaceUploaderItem; + +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.user.client.ui.HorizontalPanel; + + +/** + * The Class CancelUploadEvent. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Sep 7, 2015 + */ +public class CancelUploadEvent extends GwtEvent { + public static Type TYPE = new Type(); + private HorizontalPanel hp; + private String fileName; + private WorkspaceUploaderItem uploader; + + + /** + * @return the hp + */ + public HorizontalPanel getHp() { + return hp; + } + + /** + * Instantiates a new cancel upload event. + */ + public CancelUploadEvent(WorkspaceUploaderItem uploader, HorizontalPanel hp, String fileName) { + this.uploader = uploader; + this.hp = hp; + this.fileName = fileName; + } + + /** + * @return the uploader + */ + public WorkspaceUploaderItem getUploader() { + return uploader; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ + @Override + public Type getAssociatedType() { + return TYPE; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + */ + @Override + protected void dispatch(CancelUploadEventHandler handler) { + handler.onCancelUpload(this); + } + + /** + * @return + */ + public String getFileName() { + return fileName; + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/CancelUploadEventHandler.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/CancelUploadEventHandler.java new file mode 100644 index 0000000..597df94 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/CancelUploadEventHandler.java @@ -0,0 +1,21 @@ +package org.gcube.portlets.widgets.workspaceuploader.client.events; + +import com.google.gwt.event.shared.EventHandler; + + +/** + * The Interface CancelUploadEventHandler. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Sep 7, 2015 + */ +public interface CancelUploadEventHandler extends EventHandler { + + + /** + * On cancel upload. + * + * @param deleteTimerEvent the delete timer event + */ + void onCancelUpload(CancelUploadEvent deleteTimerEvent); +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/OpenMyUploadsEvent.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/OpenMyUploadsEvent.java new file mode 100644 index 0000000..b5e716b --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/OpenMyUploadsEvent.java @@ -0,0 +1,37 @@ +package org.gcube.portlets.widgets.workspaceuploader.client.events; + +import com.google.gwt.event.shared.GwtEvent; + + + +/** + * The Class OpenMyUploadsEvent. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Sep 30, 2015 + */ +public class OpenMyUploadsEvent extends GwtEvent { + public static Type TYPE = new Type(); + + /** + * Instantiates a new open my uploads event. + */ + public OpenMyUploadsEvent() { + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ + @Override + public Type getAssociatedType() { + return TYPE; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + */ + @Override + protected void dispatch(OpenMyUploadsEventHandler handler) { + handler.onOpenMyUploads(this); + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/OpenMyUploadsEventHandler.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/OpenMyUploadsEventHandler.java new file mode 100644 index 0000000..c34ff06 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/events/OpenMyUploadsEventHandler.java @@ -0,0 +1,19 @@ +package org.gcube.portlets.widgets.workspaceuploader.client.events; + +import com.google.gwt.event.shared.EventHandler; + +/** + * The Interface OpenMyUploadsEventHandler. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Sep 30, 2015 + */ +public interface OpenMyUploadsEventHandler extends EventHandler { + + /** + * On open my uploads. + * + * @param openMyUploadsEvent + * the open my uploads event + */ + void onOpenMyUploads(OpenMyUploadsEvent openMyUploadsEvent); +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderIcons.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderIcons.java new file mode 100644 index 0000000..3022e30 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderIcons.java @@ -0,0 +1,78 @@ +/** + * + */ +package org.gcube.portlets.widgets.workspaceuploader.client.resource; + +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.ImageResource; + +/** + * The Interface WorkspaceUploaderIcons. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Sep 24, 2015 + */ +public interface WorkspaceUploaderIcons extends ClientBundle { + + /** + * Loading. + * + * @return the image resource + */ + @Source("loader2.gif") + ImageResource loading(); + + /** + * Failed. + * + * @return the image resource + */ + @Source("failed.png") + ImageResource failed(); + + /** + * Completed. + * + * @return the image resource + */ + @Source("completed.gif") + ImageResource completed(); + + /** + * Cancel. + * + * @return the image resource + */ + @Source("cancel.png") + ImageResource cancel(); + + /** + * Cancel red. + * + * @return the image resource + */ + @Source("cancel_red.png") + ImageResource cancelRed(); + + /** + * Close win. + * + * @return the image resource + */ + @Source("closewindow.jpg") + ImageResource closeWin(); + + /** + * Wait icon. + * + * @return the image resource + */ + @Source("wait.png") + ImageResource waitIcon(); + + /** + * @return + */ + @Source("upload.gif") + ImageResource uploadIcon(); +} diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderResources.java b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderResources.java new file mode 100644 index 0000000..be0644b --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/WorkspaceUploaderResources.java @@ -0,0 +1,93 @@ +/** + * + */ +package org.gcube.portlets.widgets.workspaceuploader.client.resource; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.Image; + + +/** + * The Class WorkspaceUploaderResources. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Sep 24, 2015 + */ +public class WorkspaceUploaderResources { + + public static final WorkspaceUploaderIcons ICONS = GWT.create(WorkspaceUploaderIcons.class); + + + /** + * Gets the image loading. + * + * @return the image loading + */ + public static Image getImageLoading(){ + return new Image(ICONS.loading()); + } + + /** + * Gets the image failed. + * + * @return the image failed + */ + public static Image getImageFailed(){ + return new Image(ICONS.failed()); + } + + /** + * Gets the image completed. + * + * @return the image completed + */ + public static Image getImageCompleted(){ + return new Image(ICONS.completed()); + } + + /** + * Gets the image cancel. + * + * @return the image cancel + */ + public static Image getImageCancel(){ + return new Image(ICONS.cancel()); + } + + /** + * Gets the image cancel red. + * + * @return the image cancel red + */ + public static Image getImageCancelRed(){ + return new Image(ICONS.cancelRed()); + } + + /** + * Gets the image close win. + * + * @return the image close win + */ + public static Image getImageCloseWin(){ + return new Image(ICONS.closeWin()); + } + + /** + * Gets the image wait. + * + * @return the image wait + */ + public static Image getImageWait(){ + return new Image(ICONS.waitIcon()); + } + + + /** + * Gets the image upload. + * + * @return the image upload + */ + public static Image getImageUpload(){ + return new Image(ICONS.uploadIcon()); + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/cancel.png b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..74b9af91927d834d01fd0d7d54ce2c9a3a42d76b GIT binary patch literal 779 zcmV+m1N8ifP)91j^EtPTT1|U8QuVY?eYHqKSSK zP3o7x#7F%IgmygBVw*mDl7H^Z{OA78x#wJf^N>g+(A}*)`QG z5RTB`_EMce+Rq7v1K^?@u()CXf6xoz7!8!yDW$`H4viiQVXJBa++G(roc6hNHhJa` zc)tgNK1C=T#LYg4#zR25R*jil>eLtT{GdaAuGwmA2T&d-c>V5!!d9NyEp9Qmxe|`j ziex$g4vI7tOS{$FMw-cFlc$u|)oH@xv;lB4TdF3p9zS6L`{g|*5)D-xF1xRMSgLOC z7MSARP8Hv+kyxnx2--m{*z6VvMS>8Zy#!`G*)JEFkDm^i! z57&EQSe~y>rx{P4Jq8WqI_>n@dK|C^u()ifPp27dDGN*U z^*)3m0U({Lwv9rzno6%R=}dwtY~>hiY=vzs3$T+mn9{vzjZvdfBXyxZ39Q1lxt*_O za!Cf)+FBy^2Uli$r+^So1&^UvC9Uv!asn@3M*|?0O5yp7r!a4LH=D=I>FhdY&DZp^ zI_lx02LqV>=f-B1VTE_&n|?;e8M}28xLj@nAnp)D|3JTRN;i4Tjw+i=)$ZND8$(OU zO0JNPx!jIl*?fw5pNO9Is(T6ipVtD2MW9ltL~^<8_V~oBFC(MFPBbrJi4vhmDCP_J z3YkoHXME!2*U=lJE*_6}vFCCRm&4&S04zz3eYkpUkW2Ite1g#M`uYfvc1r7BSCpMy$Yx?I literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/cancel_red.png b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/cancel_red.png new file mode 100644 index 0000000000000000000000000000000000000000..253482309d9ec26559fc2bf435e9afdea6158bec GIT binary patch literal 639 zcmV-_0)YLAP){BnHmDk(0kuHQs`8@i3_pM8`1|e)!w+FzumbkCpBb2ic^J;~a{svd;AK!F zHZN3gvU_SuimY?|_?d&@?I(s`qCyOHJRCn67#aUJ0S#n({f>b_M1WyGKmU)n|Cxh| z?%mstVnCy+%##dmerc`?R~deZi7?dh@%*@R=Rxpapqz$^;@ZYfpE=lGylHSD>(vz>F_new?~}FL(|eK_vbH4U}dnfdU~3f&bfI0LO|WOZaYL+002ovPDHLkV1m;pEs+2K literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/closewindow.jpg b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/closewindow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..613d7862b86b8195ad2d52c051a649b83911be74 GIT binary patch literal 741 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%)&rZMU_b4?usLlYAdd38%$3nLpnV-q8g zA&i`yoIKn-61=<;Mv5|uMkIs(2N(o77z7vum>HEAm;@P_1sVSzVUP#6M4GWKmj7kOu zR(eKeR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F z9X@jO*zpr5PhGlvWX5a=%^78Yg}c96dqnaY8fS&)TQ(U48ZF_1m6P*};Rkwe63;=+vwIhBorK8Pk2 zUE~r|F?p!^5#%+n&xrF_6Inikdko>PTMRtRjKIia7G$tz__|{8q<7&zkI(FBI6iGr v#FH&k?Fv+mc?6%jD6&3N`%m+kV~mO4eT7baFIs-W=1js=`HBnd|8D{Seslc8 literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/completed.gif b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/completed.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3189f4c5ae084117de3bb3d4d9baca289ea2a48 GIT binary patch literal 541 zcmZ?wbhEHb6krfwcoxWzxjugWsac)p>VEwGk+3ZM=kFi$PRyKla%TJ4ny6)gH{M=t zKU3XyrsmH3o4H$(qZS3Vovh5+l=Sn@k6(X&HlM6$Jz3RwvaIn`*|j&9ZJW(|&o{0- zz0|hRe8Q!c{)1$&aoSf5ju0DA~rH?B`o8GM{O`ZMH=QcaSQi&K%d_=Fm3_0NWvy}6hJ={K!MR(L zD-Yz>ohT{WoBi|m&;S4bGYlG__>+Z^fgzAV2jn79oG`FgH3T*_x3spkcXTi+cD69; zGf4LavJ1+&vp99Kc}eNnSp_t4S+-a+m@~0>EDGec_qA$i|C7`RMVP?uB zuPL)OP}ss>R@8t`#K>Fwc#{yP4->bz7{9}nW@a}N7e5s>)=p*{WmV4?y^fNG_dA@w KOzvo8um%8_+_km< literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/failed.png b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/failed.png new file mode 100644 index 0000000000000000000000000000000000000000..ad93568546fd879a0972255d26dd0c027c98e704 GIT binary patch literal 655 zcmV;A0&x9_P)Z1U5Qd-X>6u;IYX>_C;t&Y|f(u8&l^g#84n73I9|{*Fgv2l49&tnh4qW(<9EC&# z*0HslEZ*_XOn2AIVOHxab?WX?KV4Pt+Xirb`f0~rHKB-IR0bHBjr;7tHg5rKQh)Hx zw^M6RKT-AZyU-Vq1BMxBu|~rH0;_9uvX4n4!-Sfe^yqPp-b7;CqjiV25BPP;opm*+}Iug^LPbtq|;#VDn05M|wGs^lE`Fem5DE}^De}?xN+6`PT z;IC&S-6nKrXOJ9KHL{3`6GDW=1>UaF`U)18R8~O(RD(5yL3C$lMAbDm2vPwbWsY?u zY&QIK|3m6H;cnky97CUBD}pM+>zY`Squxgu1;LDNx#Y!L@AKvt4=|j69)88i`BSRd zAueHJY^{h`T+lmYfeS2^Vn-{#(D4*+=b=zH>azfetQP_|_TNZGeW>Kzpa2_cM% z?&Wfn7r0t3fr$EoTsMEMIQH{vx6=o=4r9`mEHHOgs}<(kGYcFY9igo|%^@26*tXdK pemFet8tle7|07!W{-gHQ^gsB@VC2#Nm>2*6002ovPDHLkV1h17CKdny literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/loader2.gif b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/loader2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3b518e433e8a6ec36b2c14b1e1f99ec1a877f95 GIT binary patch literal 1849 zcmb8wdr(tX9tZI2z31lM+(&YVNJFGHgrG@COn8MT*4_k=XDLtx%VSBzu!cenRD^92 z$x8@tl-1(;+@&pww1CR=1!7=E+m5?3YwcQX2N`xpTel0l?Nn#lZWI3KU)ewQ_ve{& z=6vS+JHI*UncEDTED(XncL=huumC-`Kf5>Yn7DiW_I&24JNw4&`d4-i-q9TX{M5`> zBcFWrOvmls$$KKtXItL*oAvw`$p2H3|D|)&w!fHS%u9>gsKZwI&qn?%NvX41_E~pJ z8*KabNG(;C#_GM6-5YJMRPIG0p8!7P-=z-R5j> z-FHEB@v3DMdn?uHga6>9znKU%KHT}ZH*b(zeowZ;<-C|5#sBktlcO~G^bL9@_PmG@ z<9q+IIZiIwk8yyKH>u-+kfvDRERRA-9>VShEs1~^e@sTdnn=^u$Y7TJ0gH{ZZt6}o zk{=sk=Xm?<^0XjCI~;Dd?~#kUQY_J&6z{zD(4KLQBu~Q8#>s7{!&m>JHx#;7HAZ=G z769MID_^<~y%bv69RhODav6qGb}HWFDslh_=(e(^93ES$Km2;rYsU>IlS-0;QW^u4 zJB*(KQpq$K*)!hmc1_3CsfV9BQ=2y%+KRRyq2j7bKJ$_R@`!IlJ`R$GU11p_wNy2? zpc8A}VwY;R6^XxH+%%b!H<%V5gHll8L`^c5M^|>e-lj4Ym215RQI;#0d!5bMb&e!s zU2x1wE_V|A7j6(U!@oU+`!Tsf;i89X!%bXZLru zml>P&`ZM~Vxm2&TNF2yTMqXQ9=clx;rJ2bo1k>C$=rVxFIo9%QZt_{?<|iTB-D!_* z!pX3A)_hyL21*_b{&UQFiuroS-t4&YqT+vl*;(kl6kGM%B4FkA)n{n64d&-O-pb~v z!``F%{v%OA0nGux`)WVHDI;CWl35jXD4DSrT#QEDqft8E;BoU=>9l0SOvQj=FbwO@ z;<$))SDw0hSrjVK#$L5y39!v)o-7=ZcmZZwm?{K9w*G)yRzVQBCD*29h%$mvD!ViU ziR4(T5Aq4R#&!S!1Y2V*i3v*jU4WDc{Uo1^eEvWBS(R@{mXvnmsN2D%D-=2FZ`o_B zxMI)S-X|Y~NE!FPqPYPt1$)D)9Sc2(oK@J-`A^FhY>`<`U)Q86J|oF zR4Nz(BVIjNp4AK5ww9L)hz)}Dnk2GQ9$d3B&?_2LrS6a_W>r&)A5DoRqFC{&ap{}I zk zmpvmP6yk+^7|q%+0uu@;dr5(;iH~-oq@XW~8bJ9%J#H&*sAy3A?>?<))Y<*2Clj-1 z$B^zcZ8@I&dB@GsRWBJFyUYm>Um09S`-V)r5a+HB8zZK0_1M*0A>mVfXU0Aao4T=j zaZbS(5!WY2pOyleMbPcRq8GNLE?b1f3 zc4~-Hr=#>cSrDmHyc?0#YhcLMl%+*gNPFuc(oUOb80@*di482vHHi2X2YoE`((~lzO8A^c~y4*1jyKxPT@( I@DZ)lFW~DLq5uE@ literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/upload.gif b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/upload.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc0a3d09715c869d66498f96c6cedce074803674 GIT binary patch literal 3905 zcmd6qdsLJ68OPHCA@}=@gh1{g+{rybEsS-#I>9q^b4WVcy3Tnh+Z3S*wNuP%>aenk z3WA|kq^Mk{+>whEusFG?AVi`fDmaGg@p4W%$I5>3mDe<4_0Q%1oRfT>@ALUSzvaLD zh2HQU1w}zUQlq#WwonilED>o{N>wmNJ$REF`e5dey;<1sH)iWDT-~8K|iNAb1S9qxK=+Tm|%gQP%Dypha zgHKD#8K~=S_SlpBvB$Zy^R@TpdwP2M`};5TogW?^9&?P1U%h(m+O-=uZrr|oduC?l z-o1O%Kg{31fB*60$Mf^^sMq)i=e)5#C^bqrkB@(QO=4W^>bI5QkzQ|ruZFt5?)sZ3 zbYVMaIQZDETxBR>g;W@g#Z` zokAyLtrk@SiP6kpH$V`X#q4Caw=+2$kwnk~2^$(j{TA_%N^&_t9O;Z4gJMyxe}F^j zp8s5E(V2Km!+jJPU$r39NI87=Po?KSJ=p`s0?*`&7Z(eLHw|xUeb>pF={Bd; zn+_!T(EpV(keIa1QPoyERf!(ijKP^QRTiDn#P=nUaKBfEKq@5;M5*H~K|Czu z$Ppq&69D0{1O}~wNuy${7Hu7Y-N+W!K@gqO!4bB$a>Qa;xTp&f*VRccSR@15p^G|S z7WXQpbpdwtOJI`~AHWOXk$y#1rN;tn%_#&s0KmgL08`&meHo$tBJ%CM5BK%o2WxQb z&XYx{kB*LBbvWRaxP12^U=J2!a&i*jzkByC*bTt`Met~Q2mjncwlT9A6)xB(i$(cb zR*AVOvT$l_tS4#u;OAMVm#&TCI7&C4?W`T&QZ`wi9N>#j(dx6Jb;*GkDiyER?zZXm zd@P;Lpb)f%_^gmX5}Q-XVdIPf8llTtnk;945SH@3_ortygM z*DbvOF_6ux5s!~MolYR0b2D?jPv!w@02<^Ru)cNc7J~a_Dnb{<6n8HWAN}s*XEr&! zUt7P=++w=$;Har`^~N=QspU&oo=^q*{I+t_sqwsqJbNP77yDtRE^CSQLq7}%xJI+v zrqlZ2$OU^ffVa$#K%UNBN}T1aJKH>+K7?jX&lM``ta>!0ZTY*z6$BaF~HVVAz24o`2YZ z);$z*0ydjj)K9;=OQACqnxte1dc;tQ3zng{u_N2yAW;bN5cQ z*-s+;fxi*>fcclblOXJM-wwY%aHMEoCUW$l4*Q)L376pNO5l@9mrtsSMOS8+IYS$r zoIQ8U8TF=o$J!akrh&Cdt&X;~#;I`Mk!%Xyl&P~sYfS3%m z8{v^JC3q8@PQ>1E&$GSDy(&SxJ!pGvI0^$tqyo+t*ejpreTCGfyS-t-z_AD9VU4?E zhtm#g#v|n43_0M-259{1)63@i_3KE~fnMB;6t>I5`T1AYsq2jSfBpEDZI27^wOY|= zuQ%U(10{)zi}c!;w|`$)t~5$nq_!6;^}<|1ky0IXJj!TaV$2P*pQtI)tKZ6vi>)gZ zV+nSpVQFLB61$islQE6@p01@!!W6n?%d|n!Z|!Xij|g2Bb2DaHaIC0{@2?1%4gRmf z|C`32JtFhC-^(9$b>W$)kPXvU5@L6vDUr#76@;@kG9ze3%4g*r)*QNM^(Q~?*s(nK z2k_J2Gs|OBJ-mqAy&yP1kRG+~5gb=7Jw3MIeFeb*XE1yNyC1+nkT2^b_q>2Mf(!p; zFXE?rekqr7je*%{k{_4DE9WvvJ2LZ( zL`FS>lb4;1BeoIQEiG6ahRC9JX8Y3UG+OWZc&~v0%Ee0rhofbof;>{V#3{vi=aN-VMmTE z&TK}FON#Zy#|lzcmJDxlhELB;Tzr3;Q;<=^GP>uJZm8zl;OD-fAoZK_ae+3j<>rS;S&I1 z4g*IH0Z>OU@SNSBAqj_{6G$C_oWqR-zbgQF_^szo8-)CosA1EA7CJn&&_aUSo2y;G zPZdkoh05~!+MJ_=hmTWRYSep1Du;?g)0^v<18D>PX|hYrYZRZnuQeMqCK)dzgsWEB zAgxBsk_QF(Gc~$+bC{6I;rJb8QS>4RL!dCLs;E?))vT|_k(x;CdI-Ye&*B+vZCD(Z dNbBl0`_Km&w7&j9KAn6y!JF)Kw#A~N{|BWjx+DMq literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/wait.png b/src/main/java/org/gcube/portlets/widgets/workspaceuploader/client/resource/wait.png new file mode 100644 index 0000000000000000000000000000000000000000..62650e862d357f7c07f97f3de50079401ad7c71c GIT binary patch literal 400 zcmV;B0dM|^P)16m&SLMn~{)rgj)Rbd{ z`%sMSLQEI&8ej0OXV)cM#@)IqzaEQ*n6^Sp8+|#4m^MO8TWxNpquIsPK7$LV-K%z9t(NCmt({K9bu4nxrXHyzl<9>Hkf#XPAi|*+<6<@IK&mLRxa}51|@mDbIlb0000