git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/workspace-explorer-app@128209 82a268e6-3cf1-43bd-a215-b396298e98cf
|
@ -0,0 +1,37 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" output="target/workspace-explorer-app-0.0.1-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry excluding="**" kind="src" output="target/workspace-explorer-app-0.0.1-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="output" path="target/workspace-explorer-app-0.0.1-SNAPSHOT/WEB-INF/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>workspace-explorer-app-TRUNK</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.wst.common.project.facet.core.builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.wst.validation.validationbuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.google.gdt.eclipse.core.webAppProjectValidator</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
|
||||||
|
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
|
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||||
|
<nature>com.google.gwt.eclipse.core.gwtNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" path=""/>
|
||||||
|
<classpathentry kind="output" path=""/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
filesCopiedToWebInfLib=
|
|
@ -0,0 +1,6 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
jarsExcludedFromWebInfLib=
|
||||||
|
lastWarOutDir=/home/francesco-mangiacrapa/wseclipseluna/workspace-explorer-app/target/workspace-explorer-app-0.0.1-SNAPSHOT
|
||||||
|
launchConfigExternalUrlPrefix=
|
||||||
|
warSrcDir=src/main/webapp
|
||||||
|
warSrcDirIsOutput=false
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
entryPointModules=
|
|
@ -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/<project>=UTF-8
|
|
@ -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
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
||||||
|
<wb-module deploy-name="workspace-explorer-app">
|
||||||
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
||||||
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
|
||||||
|
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
|
||||||
|
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
||||||
|
<property name="context-root" value="workspace-explorer-app"/>
|
||||||
|
<property name="java-output-path" value="/workspace-explorer-app/target/workspace-explorer-app-0.0.1-SNAPSHOT/WEB-INF/classes"/>
|
||||||
|
</wb-module>
|
||||||
|
</project-modules>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<faceted-project>
|
||||||
|
<installed facet="java" version="1.7"/>
|
||||||
|
<installed facet="jst.web" version="2.5"/>
|
||||||
|
</faceted-project>
|
|
@ -0,0 +1,2 @@
|
||||||
|
disabled=06target
|
||||||
|
eclipse.preferences.version=1
|
|
@ -0,0 +1 @@
|
||||||
|
${gcube.license}
|
|
@ -0,0 +1,60 @@
|
||||||
|
The gCube System - ${name}
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
${description}
|
||||||
|
|
||||||
|
|
||||||
|
${gcube.description}
|
||||||
|
|
||||||
|
${gcube.funding}
|
||||||
|
|
||||||
|
|
||||||
|
Version
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
${version} (${buildDate})
|
||||||
|
|
||||||
|
Please see the file named "changelog.xml" in this directory for the release notes.
|
||||||
|
|
||||||
|
|
||||||
|
Authors
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
* Francesco Mangiacrapa (francesco.mangiacrapa-AT-isti.cnr.it), Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" - CNR, Pisa (Italy).
|
||||||
|
|
||||||
|
Maintainers
|
||||||
|
-----------
|
||||||
|
|
||||||
|
* Francesco Mangiacrapa (francesco.mangiacrapa-AT-isti.cnr.it), Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" - CNR, Pisa (Italy).
|
||||||
|
|
||||||
|
Download information
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
Source code is available from SVN:
|
||||||
|
${scm.url}
|
||||||
|
|
||||||
|
Binaries can be downloaded from the gCube website:
|
||||||
|
${gcube.website}
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
Documentation is available on-line in the gCube Wiki:
|
||||||
|
${gcube.wikiRoot}/Workspace
|
||||||
|
|
||||||
|
Support
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
Bugs and support requests can be reported in the gCube issue tracking tool:
|
||||||
|
${gcube.issueTracking}
|
||||||
|
|
||||||
|
|
||||||
|
Licensing
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
This software is licensed under the terms you may find in the file named "LICENSE" in this directory.
|
|
@ -0,0 +1,6 @@
|
||||||
|
<ReleaseNotes>
|
||||||
|
<Changeset component="org.gcube.portlets-user.workspace-explorer-app.1-0-0"
|
||||||
|
date="2016-21-04">
|
||||||
|
<Change>first release</Change>
|
||||||
|
</Changeset>
|
||||||
|
</ReleaseNotes>
|
|
@ -0,0 +1,32 @@
|
||||||
|
<assembly
|
||||||
|
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
|
||||||
|
<id>servicearchive</id>
|
||||||
|
<formats>
|
||||||
|
<format>tar.gz</format>
|
||||||
|
</formats>
|
||||||
|
<baseDirectory>/</baseDirectory>
|
||||||
|
<fileSets>
|
||||||
|
<fileSet>
|
||||||
|
<directory>${distroDirectory}</directory>
|
||||||
|
<outputDirectory>/</outputDirectory>
|
||||||
|
<useDefaultExcludes>true</useDefaultExcludes>
|
||||||
|
<includes>
|
||||||
|
<include>README</include>
|
||||||
|
<include>LICENSE</include>
|
||||||
|
<include>changelog.xml</include>
|
||||||
|
<include>profile.xml</include>
|
||||||
|
</includes>
|
||||||
|
<fileMode>755</fileMode>
|
||||||
|
<filtered>true</filtered>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
<files>
|
||||||
|
<file>
|
||||||
|
<source>target/${build.finalName}.${project.packaging}</source>
|
||||||
|
<outputDirectory>/${artifactId}</outputDirectory>
|
||||||
|
</file>
|
||||||
|
|
||||||
|
</files>
|
||||||
|
</assembly>
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<ID></ID>
|
||||||
|
<Type>Service</Type>
|
||||||
|
<Profile>
|
||||||
|
<Description>${description}</Description>
|
||||||
|
<Class>PortletUser</Class>
|
||||||
|
<Name>${artifactId}</Name>
|
||||||
|
<Version>${version}</Version>
|
||||||
|
<Packages>
|
||||||
|
<Software>
|
||||||
|
<Name>${artifactId}</Name>
|
||||||
|
<Version>${version}</Version>
|
||||||
|
<MavenCoordinates>
|
||||||
|
<groupId>${groupId}</groupId>
|
||||||
|
<artifactId>${artifactId}</artifactId>
|
||||||
|
<version>${version}</version>
|
||||||
|
</MavenCoordinates>
|
||||||
|
<Files>
|
||||||
|
<File>target/${build.finalName}.war</File>
|
||||||
|
</Files>
|
||||||
|
</Software>
|
||||||
|
</Packages>
|
||||||
|
</Profile>
|
||||||
|
</Resource>
|
|
@ -0,0 +1,319 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<artifactId>maven-parent</artifactId>
|
||||||
|
<groupId>org.gcube.tools</groupId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<relativePath />
|
||||||
|
</parent>
|
||||||
|
<groupId>org.gcube.portlets.user</groupId>
|
||||||
|
<artifactId>workspace-explorer-app</artifactId>
|
||||||
|
<version>0.1.0-SNAPSHOT</version>
|
||||||
|
<packaging>war</packaging>
|
||||||
|
|
||||||
|
<description>
|
||||||
|
gCube Workspace Explorer Application is an application to navigate the Workspace in read-only mode
|
||||||
|
</description>
|
||||||
|
<scm>
|
||||||
|
<connection>scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId}</connection>
|
||||||
|
<developerConnection>scm:https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId}</developerConnection>
|
||||||
|
<url>http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId}</url>
|
||||||
|
</scm>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<!-- Convenience property to set the GWT version -->
|
||||||
|
<gwtVersion>2.7.0</gwtVersion>
|
||||||
|
<distroDirectory>distro</distroDirectory>
|
||||||
|
<!-- GWT needs at least java 1.6 -->
|
||||||
|
<maven.compiler.source>1.7</maven.compiler.source>
|
||||||
|
<maven.compiler.target>1.7</maven.compiler.target>
|
||||||
|
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
|
||||||
|
<gwt-material.version>1.4.1</gwt-material.version>
|
||||||
|
<maven-war-plugin.version>2.1.1</maven-war-plugin.version>
|
||||||
|
<!-- <gwtp.version>1.4.1</gwtp.version> -->
|
||||||
|
<!-- <gin.version>2.1.2</gin.version> -->
|
||||||
|
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.distribution</groupId>
|
||||||
|
<artifactId>maven-portal-bom</artifactId>
|
||||||
|
<version>LATEST</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>gwt-user</artifactId>
|
||||||
|
<groupId>com.google.gwt</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>com.google.gwt</groupId>
|
||||||
|
<artifactId>gwt-servlet</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.gwt</groupId>
|
||||||
|
<artifactId>gwt-user</artifactId>
|
||||||
|
<version>${gwtVersion}</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- <dependency> -->
|
||||||
|
<!-- <groupId>com.google.gwt</groupId> -->
|
||||||
|
<!-- <artifactId>gwt-servlet</artifactId> -->
|
||||||
|
<!-- <version>${gwtVersion}</version> -->
|
||||||
|
<!-- <scope>provided</scope> -->
|
||||||
|
<!-- </dependency> -->
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.gwtbootstrap</groupId>
|
||||||
|
<artifactId>gwt-bootstrap</artifactId>
|
||||||
|
<version>2.3.2.0</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- GwtMaterial -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.gwtmaterialdesign</groupId>
|
||||||
|
<artifactId>gwt-material</artifactId>
|
||||||
|
<version>${gwt-material.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.gwtmaterialdesign</groupId>
|
||||||
|
<artifactId>gwt-material-themes</artifactId>
|
||||||
|
<version>1.4</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- <dependency> -->
|
||||||
|
<!-- <groupId>com.github.gwtmaterialdesign</groupId> -->
|
||||||
|
<!-- <artifactId>gwt-material-addins</artifactId> -->
|
||||||
|
<!-- <version>1.5.0-SNAPSHOT</version> -->
|
||||||
|
<!-- </dependency> -->
|
||||||
|
|
||||||
|
<!-- <dependency> -->
|
||||||
|
<!-- <groupId>com.github.gwtmaterialdesign</groupId> -->
|
||||||
|
<!-- <artifactId>gwt-material-addins</artifactId> -->
|
||||||
|
<!-- <version>${gwt-material.version}</version> -->
|
||||||
|
<!-- </dependency> -->
|
||||||
|
|
||||||
|
<!-- FWS -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.resources.discovery</groupId>
|
||||||
|
<artifactId>ic-client</artifactId>
|
||||||
|
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.core</groupId>
|
||||||
|
<artifactId>common-scope-maps</artifactId>
|
||||||
|
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- END FWS -->
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.applicationsupportlayer</groupId>
|
||||||
|
<artifactId>aslcore</artifactId>
|
||||||
|
<version>[4.0.0-SNAPSHOT, 5.0.0-SNAPSHOT)</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- HOME LIBRARY -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.common</groupId>
|
||||||
|
<artifactId>home-library-model</artifactId>
|
||||||
|
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.common</groupId>
|
||||||
|
<artifactId>home-library-jcr</artifactId>
|
||||||
|
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>asm-debug-all</artifactId>
|
||||||
|
<groupId>org.ow2.asm</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.common</groupId>
|
||||||
|
<artifactId>home-library</artifactId>
|
||||||
|
<!-- <version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version> -->
|
||||||
|
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>asm-all</artifactId>
|
||||||
|
<groupId>asm</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- <dependency> -->
|
||||||
|
<!-- <groupId>org.gcube.portlets.widgets</groupId> -->
|
||||||
|
<!-- <artifactId>workspace-explorer</artifactId> -->
|
||||||
|
<!-- <version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version> -->
|
||||||
|
<!-- </dependency> -->
|
||||||
|
|
||||||
|
<!-- LOGGER -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-api</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-log4j12</artifactId>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- LOGGER -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>log4j</groupId>
|
||||||
|
<artifactId>log4j</artifactId>
|
||||||
|
<!-- <version>1.2.16</version> -->
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>4.7</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.validation</groupId>
|
||||||
|
<artifactId>validation-api</artifactId>
|
||||||
|
<version>1.0.0.GA</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.validation</groupId>
|
||||||
|
<artifactId>validation-api</artifactId>
|
||||||
|
<version>1.0.0.GA</version>
|
||||||
|
<classifier>sources</classifier>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<!-- Generate compiled stuff in the folder used for developing mode -->
|
||||||
|
<outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>
|
||||||
|
|
||||||
|
<plugins>
|
||||||
|
|
||||||
|
<!-- GWT Maven Plugin -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>gwt-maven-plugin</artifactId>
|
||||||
|
<version>${gwtVersion}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
<!-- <goal>test</goal> -->
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<!-- Plugin configuration. There are many available options, see gwt-maven-plugin
|
||||||
|
documentation at codehaus.org -->
|
||||||
|
<configuration>
|
||||||
|
<runTarget>WorkspaceExplorerApp.html</runTarget>
|
||||||
|
<hostedWebapp>${webappDirectory}</hostedWebapp>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<!-- Copy static web files before executing gwt:run -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-war-plugin</artifactId>
|
||||||
|
<version>${maven-war-plugin.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>exploded</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<webappDirectory>${webappDirectory}</webappDirectory>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>2.3.2</version>
|
||||||
|
<configuration>
|
||||||
|
<source>${maven.compiler.source}</source>
|
||||||
|
<target>${maven.compiler.target}</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<!-- SA Plugin -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
|
<version>2.2</version>
|
||||||
|
<configuration>
|
||||||
|
<descriptors>
|
||||||
|
<descriptor>${distroDirectory}/descriptor.xml</descriptor>
|
||||||
|
</descriptors>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>servicearchive</id>
|
||||||
|
<phase>install</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>single</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<version>2.5</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>copy-profile</id>
|
||||||
|
<phase>install</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>copy-resources</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>target</outputDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>${distroDirectory}</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<includes>
|
||||||
|
<include>profile.xml</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module rename-to='workspaceexplorerapp'>
|
||||||
|
<inherits name='com.google.gwt.user.User' />
|
||||||
|
<inherits name='gwt.material.design.GwtMaterialWithJQuery' />
|
||||||
|
<!-- <inherits name="gwt.material.design.GwtMaterialDesignBasic" /> -->
|
||||||
|
<!-- <inherits name="gwt.material.design.themes.GwtMaterialThemeBlue" /> -->
|
||||||
|
|
||||||
|
<inherits name="com.github.gwtbootstrap.Bootstrap" />
|
||||||
|
<entry-point
|
||||||
|
class='org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerApp' />
|
||||||
|
<source path='client' />
|
||||||
|
<source path='shared' />
|
||||||
|
|
||||||
|
<!-- <set-configuration-property name="gin.ginjector.modules" value="pl.korbeldaniel.cms.client.gin.ClientModule"/> -->
|
||||||
|
<!-- <set-configuration-property name="gin.ginjector.extensions" value="pl.korbeldaniel.cms.client.gin.GinjectorExtension"/> -->
|
||||||
|
<!-- <set-configuration-property name="CssResource.enableGss" value="true"/> -->
|
||||||
|
|
||||||
|
<!--Override Bootstrap Css -->
|
||||||
|
<source path='resources' />
|
||||||
|
<replace-with
|
||||||
|
class="org.gcube.portlets.user.workspaceexplorerapp.resources.CustomBootstrapConfigurator">
|
||||||
|
<when-type-is class="com.github.gwtbootstrap.client.ui.config.Configurator" />
|
||||||
|
</replace-with>
|
||||||
|
<public path="resources">
|
||||||
|
<exclude name="** /*.java" />
|
||||||
|
<exclude name="** /*.class" />
|
||||||
|
</public>
|
||||||
|
|
||||||
|
</module>
|
|
@ -0,0 +1,89 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.DisplayField;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class ItemComparator.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Mar 21, 2016
|
||||||
|
* @param <T> the generic type
|
||||||
|
*/
|
||||||
|
public class ItemComparatorUtility {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new item comparator utility.
|
||||||
|
*
|
||||||
|
* @param field the field
|
||||||
|
* @param ascending the ascending
|
||||||
|
* @param list the list
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static ArrayList<Item> sortItems(DisplayField field, boolean ascending, List<Item> list) {
|
||||||
|
|
||||||
|
if(DisplayField.NAME.equals(field)){
|
||||||
|
Collections.sort(list, new NameCompare());
|
||||||
|
if(ascending)
|
||||||
|
Collections.reverse(list);
|
||||||
|
}else if(DisplayField.OWNER.equals(field)){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ArrayList<Item>(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class NameCompare.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Mar 21, 2016
|
||||||
|
*/
|
||||||
|
public static class NameCompare implements Comparator<Item> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int compare(Item item1, Item item2) {
|
||||||
|
|
||||||
|
//if one of the item is folder and the other one not, we move up the folder
|
||||||
|
boolean isItem1Folder = item1.isFolder();
|
||||||
|
boolean isItem2Folder = item2.isFolder();
|
||||||
|
|
||||||
|
boolean isSpecialFolder1 = isSpecialFolder(item1);
|
||||||
|
boolean isSpecialFolder2 = isSpecialFolder(item2);
|
||||||
|
|
||||||
|
//XOR
|
||||||
|
if (isSpecialFolder1 ^ isSpecialFolder2) return isSpecialFolder1 ? -1 : 1;
|
||||||
|
|
||||||
|
//XOR
|
||||||
|
if (isItem1Folder ^ isItem2Folder) return isItem1Folder ? -1 : 1;
|
||||||
|
|
||||||
|
//otherwise we compare the names
|
||||||
|
return String.CASE_INSENSITIVE_ORDER.compare(item1.getName(), item2.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is special folder.
|
||||||
|
*
|
||||||
|
* @param item the item
|
||||||
|
* @return true, if is special folder
|
||||||
|
*/
|
||||||
|
private boolean isSpecialFolder(Item item) {
|
||||||
|
// return item.getName().equals(WorkspaceExplorerConstants.VRE_FOLDERS_LABEL) && item.getParent()!=null && item.getParent().isRoot();
|
||||||
|
return item.getName().equals(WorkspaceExplorerAppConstants.VRE_FOLDERS_LABEL) && item.isSpecialFolder();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.JavaScriptObject;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class NewBrowserWindow.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Feb 23, 2016
|
||||||
|
*/
|
||||||
|
public final class NewBrowserWindow extends JavaScriptObject {
|
||||||
|
// All types that extend JavaScriptObject must have a protected,
|
||||||
|
// no-args constructor.
|
||||||
|
/**
|
||||||
|
* Instantiates a new new browser window.
|
||||||
|
*/
|
||||||
|
protected NewBrowserWindow() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open.
|
||||||
|
*
|
||||||
|
* @param url the url
|
||||||
|
* @param target the target
|
||||||
|
* @param options the options
|
||||||
|
* @return the new browser window
|
||||||
|
*/
|
||||||
|
public static native NewBrowserWindow open(String url, String target,
|
||||||
|
String options) /*-{
|
||||||
|
return $wnd.open(url, target, options);
|
||||||
|
}-*/;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close.
|
||||||
|
*/
|
||||||
|
public native void close() /*-{
|
||||||
|
this.close();
|
||||||
|
}-*/;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the url.
|
||||||
|
*
|
||||||
|
* @param url the new url
|
||||||
|
*/
|
||||||
|
public native void setUrl(String url) /*-{
|
||||||
|
if (this.location) {
|
||||||
|
this.location = url;
|
||||||
|
}
|
||||||
|
}-*/;
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import gwt.material.design.client.ui.MaterialColumn;
|
||||||
|
import gwt.material.design.client.ui.MaterialLink;
|
||||||
|
import gwt.material.design.client.ui.MaterialRow;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.OrderDataByEvent;
|
||||||
|
|
||||||
|
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.event.shared.HandlerManager;
|
||||||
|
import com.google.gwt.user.client.ui.PopupPanel;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Mar 21, 2016
|
||||||
|
*/
|
||||||
|
public class SortByContextMenu extends PopupPanel{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param handlerManager
|
||||||
|
* @param links
|
||||||
|
*/
|
||||||
|
public SortByContextMenu(final HandlerManager handlerManager, List<MaterialLink> links) {
|
||||||
|
setAutoHideEnabled(true);
|
||||||
|
getElement().addClassName("popup-order");
|
||||||
|
MaterialRow mr = new MaterialRow();
|
||||||
|
MaterialColumn mc = new MaterialColumn();
|
||||||
|
mr.add(mc);
|
||||||
|
for (int i= 0; i<links.size(); i++) {
|
||||||
|
final MaterialLink materialLink = links.get(i);
|
||||||
|
MaterialRow mrs = new MaterialRow();
|
||||||
|
materialLink.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
SortByContextMenu.this.hide();
|
||||||
|
GWT.log("clicked : "+event.getSource().toString());
|
||||||
|
handlerManager.fireEvent(new OrderDataByEvent(materialLink.getText()));
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// mr.setWidget(i, 0, materialLink);
|
||||||
|
mrs.add(materialLink);
|
||||||
|
mc.add(mrs);
|
||||||
|
}
|
||||||
|
add(mr);
|
||||||
|
getElement().getStyle().setZIndex(5000);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,144 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.resources.WorkspaceExplorerResources;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.resources.WorkspaceLightTreeResources;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemType;
|
||||||
|
|
||||||
|
import com.google.gwt.core.shared.GWT;
|
||||||
|
import com.google.gwt.dom.client.Element;
|
||||||
|
import com.google.gwt.resources.client.ImageResource;
|
||||||
|
import com.google.gwt.user.client.ui.SimplePanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class Util.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jun 18, 2015
|
||||||
|
*/
|
||||||
|
public class Util {
|
||||||
|
|
||||||
|
// public static final NumberFormat numberFormatterKB = NumberFormat.getFormat("#,##0 KB;(#,##0 KB)");
|
||||||
|
|
||||||
|
public static final ItemType[] FOLDERS = new ItemType[] {ItemType.FOLDER};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is folder.
|
||||||
|
*
|
||||||
|
* @param type
|
||||||
|
* the type
|
||||||
|
* @return true, if is folder
|
||||||
|
*/
|
||||||
|
public static boolean isFolder(ItemType type) {
|
||||||
|
for (ItemType folder : FOLDERS)
|
||||||
|
if (type == folder)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ellipsis.
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* the value
|
||||||
|
* @param lenght
|
||||||
|
* the lenght
|
||||||
|
* @param left
|
||||||
|
* the left
|
||||||
|
* @return the string
|
||||||
|
*/
|
||||||
|
public static String ellipsis(String value, int lenght, boolean left) {
|
||||||
|
if (lenght < 3)
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"The lenght have to be more than 3");
|
||||||
|
if (value.length() > lenght) {
|
||||||
|
if (left)
|
||||||
|
return "..." + value.substring(value.length() - lenght + 3);
|
||||||
|
else
|
||||||
|
return value.substring(0, lenght - 3) + "...";
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the image resource.
|
||||||
|
*
|
||||||
|
* @param item the item
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
public static ImageResource getImageResource(Item item)
|
||||||
|
{
|
||||||
|
if(item==null || item.getType()==null)
|
||||||
|
return WorkspaceLightTreeResources.INSTANCE.unknownType();
|
||||||
|
|
||||||
|
switch (item.getType()) {
|
||||||
|
// case ROOT: return WorkspaceLightTreeResources.INSTANCE.root();
|
||||||
|
case FOLDER: {
|
||||||
|
if (item.isSharedFolder()) return WorkspaceExplorerResources.INSTANCE.shared_folder();
|
||||||
|
else return WorkspaceExplorerResources.INSTANCE.folder();
|
||||||
|
}
|
||||||
|
case EXTERNAL_IMAGE: return WorkspaceLightTreeResources.INSTANCE.external_image();
|
||||||
|
case EXTERNAL_FILE: return WorkspaceLightTreeResources.INSTANCE.external_file();
|
||||||
|
case EXTERNAL_PDF_FILE: return WorkspaceLightTreeResources.INSTANCE.external_pdf();
|
||||||
|
case EXTERNAL_URL: return WorkspaceLightTreeResources.INSTANCE.external_url();
|
||||||
|
case REPORT_TEMPLATE: return WorkspaceLightTreeResources.INSTANCE.report_template();
|
||||||
|
case REPORT: return WorkspaceLightTreeResources.INSTANCE.report();
|
||||||
|
case QUERY: return WorkspaceLightTreeResources.INSTANCE.query();
|
||||||
|
case DOCUMENT: return WorkspaceLightTreeResources.INSTANCE.document();
|
||||||
|
case METADATA: return WorkspaceLightTreeResources.INSTANCE.metadata();
|
||||||
|
case PDF_DOCUMENT: return WorkspaceLightTreeResources.INSTANCE.pdf_document();
|
||||||
|
case IMAGE_DOCUMENT: return WorkspaceLightTreeResources.INSTANCE.image_document();
|
||||||
|
case URL_DOCUMENT: return WorkspaceLightTreeResources.INSTANCE.url_document();
|
||||||
|
case GCUBE_ITEM: return WorkspaceLightTreeResources.INSTANCE.gucbeItem();
|
||||||
|
case UNKNOWN_TYPE: return WorkspaceLightTreeResources.INSTANCE.unknown();
|
||||||
|
default: {
|
||||||
|
System.err.println("Unknown item type "+item.getType());
|
||||||
|
return WorkspaceLightTreeResources.INSTANCE.unknownType();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the formatted size.
|
||||||
|
*
|
||||||
|
* @param value the value
|
||||||
|
* @return the formatted size
|
||||||
|
*/
|
||||||
|
public static String getFormattedSize(long value){
|
||||||
|
|
||||||
|
if(value>0){
|
||||||
|
double kb = value/1024;
|
||||||
|
if(kb<1)
|
||||||
|
kb=1;
|
||||||
|
// return numberFormatterKB.format(kb);
|
||||||
|
return kb+"KB";
|
||||||
|
}else if(value==0){
|
||||||
|
return "EMPTY";
|
||||||
|
}else
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adjust size.
|
||||||
|
*
|
||||||
|
* @param el the el
|
||||||
|
* @param panel the panel
|
||||||
|
* @param offset the offset
|
||||||
|
*/
|
||||||
|
public static void adjustSize(Element el, SimplePanel panel, int offset){
|
||||||
|
if(el!=null){
|
||||||
|
int heigth = el.getClientHeight();
|
||||||
|
GWT.log("getClientHeight adjustSize el: "+heigth);
|
||||||
|
heigth = heigth-offset>100?heigth-offset:0;
|
||||||
|
if(heigth>0){
|
||||||
|
GWT.log("set new Explorer size: "+heigth);
|
||||||
|
panel.setHeight(heigth+"px");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,98 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.EntryPoint;
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.dom.client.Element;
|
||||||
|
import com.google.gwt.dom.client.Style.Unit;
|
||||||
|
import com.google.gwt.event.logical.shared.ResizeEvent;
|
||||||
|
import com.google.gwt.event.logical.shared.ResizeHandler;
|
||||||
|
import com.google.gwt.user.client.DOM;
|
||||||
|
import com.google.gwt.user.client.Window;
|
||||||
|
import com.google.gwt.user.client.ui.RootPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Feb 19, 2016
|
||||||
|
*/
|
||||||
|
public class WorkspaceExplorerApp implements EntryPoint {
|
||||||
|
|
||||||
|
|
||||||
|
private WorkspaceExplorerAppController appController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the entry point method.
|
||||||
|
*/
|
||||||
|
public void onModuleLoad() {
|
||||||
|
|
||||||
|
|
||||||
|
boolean jQueryLoaded = isjQueryLoaded();
|
||||||
|
// GWT.log("Injected : "+Resources.RESOURCES.jquery().getText());
|
||||||
|
GWT.log("jQueryLoaded: "+jQueryLoaded);
|
||||||
|
|
||||||
|
/*if (!jQueryLoaded) {
|
||||||
|
ScriptInjector.fromString(Resources.RESOURCES.jquery().getText())
|
||||||
|
.setWindow(ScriptInjector.TOP_WINDOW)
|
||||||
|
.inject();
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*ScriptInjector.fromString(Resources.RESOURCES.jquery().getText())
|
||||||
|
.setWindow(ScriptInjector.TOP_WINDOW)
|
||||||
|
.inject();*/
|
||||||
|
|
||||||
|
appController = new WorkspaceExplorerAppController();
|
||||||
|
appController.go(RootPanel.get(WorkspaceExplorerAppConstants.APPLICATION_DIV));
|
||||||
|
Window.addResizeHandler(new ResizeHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResize(ResizeEvent event) {
|
||||||
|
updateSize();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
WorkspaceExplorerAppMainPanel mainPanel = new WorkspaceExplorerAppMainPanel(appController.getMainPanel(), appController.getEventBus(), appController.getDisplayFields());
|
||||||
|
RootPanel.get(WorkspaceExplorerAppConstants.APPLICATION_DIV).add(mainPanel);
|
||||||
|
|
||||||
|
// WorkspaceExplorerFoooterPanel footerPanel = new WorkspaceExplorerFoooterPanel();
|
||||||
|
// RootPanel.get("footer_we").add(footerPanel);
|
||||||
|
|
||||||
|
updateSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is j query loaded.
|
||||||
|
*
|
||||||
|
* @return true, if is j query loaded
|
||||||
|
*/
|
||||||
|
private native boolean isjQueryLoaded() /*-{
|
||||||
|
return (typeof $wnd['jQuery'] !== 'undefined');
|
||||||
|
}-*/;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update window size
|
||||||
|
*/
|
||||||
|
public static void updateSize() {
|
||||||
|
|
||||||
|
int headerH = DOM.getElementById("we_nav_bar").getClientHeight();
|
||||||
|
GWT.log("headerH " + headerH);
|
||||||
|
int footerH = DOM.getElementById("footer_we").getClientHeight();
|
||||||
|
GWT.log("footerH " + footerH);
|
||||||
|
int breadcrumbsH = DOM.getElementById("breadcrumbs_we").getClientHeight();
|
||||||
|
GWT.log("breadcrumbs_we " + breadcrumbsH);
|
||||||
|
int windowHeight = Window.getClientHeight();
|
||||||
|
GWT.log("rootHeight " + windowHeight);
|
||||||
|
int diff = windowHeight - (headerH+footerH+breadcrumbsH)-10;
|
||||||
|
int containerH = diff>0?diff:50;
|
||||||
|
DOM.getElementById(WorkspaceExplorerAppConstants.APPLICATION_DIV).getElementsByTagName("main").getItem(0).getStyle().setHeight(containerH, Unit.PX);
|
||||||
|
// DOM.getElementById(WorkspaceExplorerAppConstants.APPLICATION_DIV).getStyle().setHeight(containerH, Unit.PX);
|
||||||
|
GWT.log("containerH " + containerH);
|
||||||
|
|
||||||
|
Element table = DOM.getElementById("data_grid_explorer");
|
||||||
|
if(table!=null){
|
||||||
|
int headerTableH = 0;
|
||||||
|
table.getStyle().setHeight(containerH-headerTableH, Unit.PX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.rpc.WorkspaceExplorerAppService;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.rpc.WorkspaceExplorerAppServiceAsync;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class WorkspaceExplorerAppConstants.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Feb 23, 2016
|
||||||
|
*/
|
||||||
|
public class WorkspaceExplorerAppConstants {
|
||||||
|
public static final String SPECIAL_FOLDERS_NAME = "MySpecialFolders";
|
||||||
|
|
||||||
|
public static final String VRE_FOLDERS_LABEL = "My VRE Folders";
|
||||||
|
|
||||||
|
public static final String WORKSPACE_EXPLORER_CAPTION = "Workspace Explorer";
|
||||||
|
|
||||||
|
public static final String WORKSPACE_EXPLORER_SAVE_AS_CAPTION = "Workspace Explorer Save As...";
|
||||||
|
|
||||||
|
public static final String HOME_LABEL = "Home";
|
||||||
|
|
||||||
|
public static final String WORKSPACE_MY_SPECIAL_FOLDERS_PATH = "/Workspace/MySpecialFolders";
|
||||||
|
|
||||||
|
// DIALOGS
|
||||||
|
public static final String SAVE = "Save";
|
||||||
|
public static final String AUTO = "auto";
|
||||||
|
public static final String SELECT = "Select";
|
||||||
|
public static final WorkspaceExplorerAppServiceAsync workspaceNavigatorService = GWT.create(WorkspaceExplorerAppService.class);
|
||||||
|
|
||||||
|
public static final String APPLICATION_DIV = "workspaceEplorerApplicationDiv";
|
||||||
|
public static final String VALIDATEITEM = "validateitem";
|
||||||
|
public static final String IDS = "ids";
|
||||||
|
public static final String IDS_SEPARATOR = ";";
|
||||||
|
public static final String DOWNLOAD_WORKSPACE_SERVICE = GWT.getModuleBaseURL() + "DownloadServlet";
|
||||||
|
public static final String REDIRECTONERROR = "redirectonerror";
|
||||||
|
}
|
|
@ -0,0 +1,140 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.DisplayField;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.dom.client.Style.Unit;
|
||||||
|
import com.google.gwt.event.dom.client.ContextMenuEvent;
|
||||||
|
import com.google.gwt.event.dom.client.ContextMenuHandler;
|
||||||
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
|
import com.google.gwt.user.client.Window;
|
||||||
|
import com.google.gwt.user.client.ui.RootPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class WorkspaceExplorerAppController.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* @Oct 8, 2014
|
||||||
|
*/
|
||||||
|
public class WorkspaceExplorerAppController {
|
||||||
|
|
||||||
|
// private VerticalPanel mainPanel = new VerticalPanel();
|
||||||
|
|
||||||
|
private WorkspaceExplorerAppPanel mainPanel;
|
||||||
|
private WorkspaceResourcesExplorerPanel wsResourcesExplorerPanel;
|
||||||
|
private final HandlerManager eventBus = new HandlerManager(null);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new workspace explorer app controller.
|
||||||
|
*/
|
||||||
|
public WorkspaceExplorerAppController() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Go.
|
||||||
|
*
|
||||||
|
* @param rootPanel the root panel
|
||||||
|
*/
|
||||||
|
public void go(final RootPanel rootPanel) {
|
||||||
|
RootPanel.getBodyElement().getStyle().setPadding(0, Unit.PX);
|
||||||
|
// mainPanel.setWidth("100%");
|
||||||
|
|
||||||
|
try {
|
||||||
|
String folderId = Window.Location.getParameter("folderId");
|
||||||
|
|
||||||
|
//TODO CHECK FOLDER ID
|
||||||
|
if(folderId==null)
|
||||||
|
Window.alert("Folder Id not found, it is not possible to retrieve a folder without a valid id");
|
||||||
|
|
||||||
|
RootPanel.get().addDomHandler(new ContextMenuHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onContextMenu(ContextMenuEvent event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
|
}, ContextMenuEvent.getType());
|
||||||
|
|
||||||
|
wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel(eventBus, folderId, false);
|
||||||
|
WorskpaceExplorerSelectNotificationListener listener = new WorskpaceExplorerSelectNotificationListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelectedItem(Item item) {
|
||||||
|
|
||||||
|
GWT.log("Listener Selected Item " + item);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailed(Throwable throwable) {
|
||||||
|
|
||||||
|
GWT.log("There are networks problem, please check your connection.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAborted() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNotValidSelection() {
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
wsResourcesExplorerPanel.addWorkspaceExplorerSelectNotificationListener(listener);
|
||||||
|
|
||||||
|
/*new com.google.gwt.user.client.Timer() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
|
||||||
|
//TODO //IS A TEST REMOVE
|
||||||
|
ArrayList<Item> tests = new ArrayList<Item>();
|
||||||
|
for (int i = 0; i < 50; i++) {
|
||||||
|
tests.add(new Item(i+""+Random.nextInt(), "name"+i, false));
|
||||||
|
}
|
||||||
|
wsResourcesExplorerPanel.getWsExplorer().updateExplorer(tests);
|
||||||
|
}
|
||||||
|
}.schedule(1000);*/
|
||||||
|
|
||||||
|
mainPanel = new WorkspaceExplorerAppPanel(wsResourcesExplorerPanel);
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the main panel.
|
||||||
|
*
|
||||||
|
* @return the mainPanel
|
||||||
|
*/
|
||||||
|
public WorkspaceExplorerAppPanel getMainPanel() {
|
||||||
|
return mainPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the event bus.
|
||||||
|
*
|
||||||
|
* @return the event bus
|
||||||
|
*/
|
||||||
|
public HandlerManager getEventBus(){
|
||||||
|
return eventBus;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the display fields.
|
||||||
|
*
|
||||||
|
* @return the display fields
|
||||||
|
*/
|
||||||
|
public DisplayField[] getDisplayFields(){
|
||||||
|
return wsResourcesExplorerPanel.getDisplayFields();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,157 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import gwt.material.design.client.constants.IconPosition;
|
||||||
|
import gwt.material.design.client.constants.IconType;
|
||||||
|
import gwt.material.design.client.ui.MaterialLink;
|
||||||
|
import gwt.material.design.client.ui.MaterialNavBar;
|
||||||
|
import gwt.material.design.client.ui.MaterialNavSection;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.download.DownloadType;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.DownloadItemEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.DisplayField;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
|
import com.google.gwt.event.dom.client.ClickHandler;
|
||||||
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
|
import com.google.gwt.user.client.Window;
|
||||||
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
|
import com.google.gwt.user.client.ui.HTMLPanel;
|
||||||
|
import com.google.gwt.user.client.ui.Image;
|
||||||
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class WorkspaceExplorerAppMainPanel.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Mar 2, 2016
|
||||||
|
*/
|
||||||
|
public class WorkspaceExplorerAppMainPanel extends Composite {
|
||||||
|
|
||||||
|
private static WorkspaceExplorerAppMainPanelUiBinder uiBinder =
|
||||||
|
GWT.create(WorkspaceExplorerAppMainPanelUiBinder.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface WorkspaceExplorerAppMainPanelUiBinder.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Mar 8, 2016
|
||||||
|
*/
|
||||||
|
interface WorkspaceExplorerAppMainPanelUiBinder
|
||||||
|
extends UiBinder<Widget, WorkspaceExplorerAppMainPanel> {
|
||||||
|
}
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
HTMLPanel explorer_main_container;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
HTMLPanel we_html_base_panel;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
MaterialNavBar we_nav_bar;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
MaterialNavSection we_nav_right;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
MaterialLink download_we;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
MaterialLink show_we;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
Image d4science_workspace_logo_180;
|
||||||
|
|
||||||
|
private HandlerManager handlerManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Because this class has a default constructor, it can
|
||||||
|
* be used as a binder template. In other words, it can be used in other
|
||||||
|
* *.ui.xml files as follows:
|
||||||
|
* <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||||
|
* xmlns:g="urn:import:**user's package**">
|
||||||
|
* <g:**UserClassName**>Hello!</g:**UserClassName>
|
||||||
|
* </ui:UiBinder>
|
||||||
|
* Note that depending on the widget that is used, it may be necessary to
|
||||||
|
* implement HasHTML instead of HasText.
|
||||||
|
*
|
||||||
|
* @param workspaceExplorerAppPanel the workspace explorer app panel
|
||||||
|
* @param handlerManager the handler manager
|
||||||
|
*/
|
||||||
|
public WorkspaceExplorerAppMainPanel(WorkspaceExplorerAppPanel workspaceExplorerAppPanel, HandlerManager handlerManager, DisplayField[] displayFields) {
|
||||||
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
|
this.handlerManager = handlerManager;
|
||||||
|
explorer_main_container.add(workspaceExplorerAppPanel);
|
||||||
|
we_nav_bar.getElement().setId("we_nav_bar");
|
||||||
|
we_nav_bar.getElement().setAttribute("id", "we_nav_bar");
|
||||||
|
|
||||||
|
final MaterialLink order = new MaterialLink("Order by");
|
||||||
|
order.setTitle("Order data for item selected");
|
||||||
|
order.setActivates("order_list");
|
||||||
|
order.setTextColor("white");
|
||||||
|
order.setIconType(IconType.ARROW_DROP_DOWN);
|
||||||
|
order.setIconPosition(IconPosition.RIGHT);
|
||||||
|
|
||||||
|
final List<MaterialLink> links = new ArrayList<MaterialLink>(displayFields.length);
|
||||||
|
for (final DisplayField field : displayFields) {
|
||||||
|
if(field.isSortable()){
|
||||||
|
MaterialLink link = new MaterialLink(field.getLabel());
|
||||||
|
link.addStyleName("under-line-onhover");
|
||||||
|
links.add(link);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final SortByContextMenu scm = new SortByContextMenu(this.handlerManager, links);
|
||||||
|
|
||||||
|
order.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
GWT.log("clicked : "+event.getSource().toString());
|
||||||
|
scm.showRelativeTo(order);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
we_nav_right.add(order);
|
||||||
|
download_we.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
WorkspaceExplorerAppMainPanel.this.handlerManager.fireEvent(new DownloadItemEvent(null, DownloadType.DOWNLOAD));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
show_we.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
WorkspaceExplorerAppMainPanel.this.handlerManager.fireEvent(new DownloadItemEvent(null, DownloadType.OPEN));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
d4science_workspace_logo_180.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
|
Window.open("https://www.d4science.org", "_blank", null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||||
|
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||||
|
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:m="urn:import:gwt.material.design.client.ui">
|
||||||
|
<ui:style>
|
||||||
|
.adminMainContent {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*.label {
|
||||||
|
margin-left: 210px;
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 16px;
|
||||||
|
text-align: left;
|
||||||
|
font-weight: bold;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
.nav-right {
|
||||||
|
/*padding-left: 200px;*/
|
||||||
|
/* font-size: 16px;*/
|
||||||
|
/*text-align: right;*/
|
||||||
|
/*width: 200px;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.title-left {
|
||||||
|
/*font-family: sans-serif;*/
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: left;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navigation_explorer {
|
||||||
|
padding-bottom: 50px;
|
||||||
|
padding-left: 5px;
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navigation_explorer :HOVER {
|
||||||
|
cursor: pointer !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navigation_bar {
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
header, main, footer {
|
||||||
|
padding-left: 200px;
|
||||||
|
}
|
||||||
|
</ui:style>
|
||||||
|
|
||||||
|
<g:HTMLPanel styleName="navigation_link">
|
||||||
|
<m:MaterialNavBar backgroundColor="blue" activates="mysidebar"
|
||||||
|
ui:field="we_nav_bar">
|
||||||
|
<m:MaterialNavBrand styleName="{style.title-left}" href="#" float="LEFT" title="D4Science Workspace Explorer">Workspace Explorer</m:MaterialNavBrand>
|
||||||
|
<m:MaterialNavSection styleName="{style.nav-right}" float="RIGHT" ui:field="we_nav_right">
|
||||||
|
</m:MaterialNavSection>
|
||||||
|
</m:MaterialNavBar>
|
||||||
|
<!-- My Dropdown -->
|
||||||
|
<g:HTMLPanel ui:field="we_html_base_panel">
|
||||||
|
</g:HTMLPanel>
|
||||||
|
<m:MaterialSideNav width="200" m:id="mysidebar"
|
||||||
|
type="OPEN" closeOnClick="false">
|
||||||
|
<g:Image styleName="{style.navigation_explorer}" url="img/d4science_workspace_logo_180.png"
|
||||||
|
ui:field="d4science_workspace_logo_180" title="D4Science Workspace Folder Explorer"
|
||||||
|
altText="D4Science Workspace Folder Explorer" />
|
||||||
|
<m:MaterialLink iconType="OPEN_IN_NEW" iconPosition="LEFT"
|
||||||
|
textColor="blue" text="Open" ui:field="show_we" />
|
||||||
|
<m:MaterialLink iconType="INBOX" iconPosition="LEFT"
|
||||||
|
textColor="blue" text="Download" ui:field="download_we" />
|
||||||
|
</m:MaterialSideNav>
|
||||||
|
<m:MaterialContainer>
|
||||||
|
<g:HTMLPanel ui:field="explorer_main_container"></g:HTMLPanel>
|
||||||
|
</m:MaterialContainer>
|
||||||
|
</g:HTMLPanel>
|
||||||
|
</ui:UiBinder>
|
|
@ -0,0 +1,33 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import com.google.gwt.user.client.ui.SimplePanel;
|
||||||
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class SplitPanel.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jun 23, 2015
|
||||||
|
*/
|
||||||
|
public class WorkspaceExplorerAppPanel extends SimplePanel{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new workspace explorer app panel.
|
||||||
|
*
|
||||||
|
* @param splitterSize the splitter size
|
||||||
|
* @param navigation the navigation
|
||||||
|
* @param wsExplorer the ws explorer
|
||||||
|
*/
|
||||||
|
public WorkspaceExplorerAppPanel(Widget wsExplorerPanel) {
|
||||||
|
ensureDebugId("WorkspaceExplorerAppPanel");
|
||||||
|
this.getElement().setId("WorkspaceExplorerAppPanel");
|
||||||
|
this.getElement().setAttribute("id","WorkspaceExplorerAppPanel");
|
||||||
|
setWidth("100%");
|
||||||
|
add(wsExplorerPanel);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import gwt.material.design.client.ui.MaterialFooter;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Mar 18, 2016
|
||||||
|
*/
|
||||||
|
public class WorkspaceExplorerFoooterPanel extends Composite {
|
||||||
|
|
||||||
|
private static WorkspaceExplorerFoooterPanelUiBinder uiBinder =
|
||||||
|
GWT.create(WorkspaceExplorerFoooterPanelUiBinder.class);
|
||||||
|
|
||||||
|
interface WorkspaceExplorerFoooterPanelUiBinder
|
||||||
|
extends UiBinder<Widget, WorkspaceExplorerFoooterPanel> {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Because this class has a default constructor, it can
|
||||||
|
* be used as a binder template. In other words, it can be used in other
|
||||||
|
* *.ui.xml files as follows:
|
||||||
|
* <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||||
|
* xmlns:g="urn:import:**user's package**">
|
||||||
|
* <g:**UserClassName**>Hello!</g:**UserClassName>
|
||||||
|
* </ui:UiBinder>
|
||||||
|
* Note that depending on the widget that is used, it may be necessary to
|
||||||
|
* implement HasHTML instead of HasText.
|
||||||
|
*/
|
||||||
|
public WorkspaceExplorerFoooterPanel() {
|
||||||
|
|
||||||
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
|
}
|
||||||
|
@UiField
|
||||||
|
MaterialFooter we_footer_bar;
|
||||||
|
|
||||||
|
public WorkspaceExplorerFoooterPanel(String firstName) {
|
||||||
|
|
||||||
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||||
|
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||||
|
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:m="urn:import:gwt.material.design.client.ui">
|
||||||
|
<ui:style>
|
||||||
|
.we_footer {
|
||||||
|
height: 50px important!
|
||||||
|
}
|
||||||
|
</ui:style>
|
||||||
|
|
||||||
|
<g:HTMLPanel>
|
||||||
|
<m:MaterialFooter styleName="{style.we_footer}" ui:field="we_footer_bar">
|
||||||
|
</m:MaterialFooter>
|
||||||
|
</g:HTMLPanel>
|
||||||
|
</ui:UiBinder>
|
|
@ -0,0 +1,94 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class WorskpaceExplorerNotification.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jun 29, 2015
|
||||||
|
*/
|
||||||
|
public class WorkspaceExplorerSelectNotification {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The listener interface for receiving worskpaceExplorerSelectNotification events.
|
||||||
|
* The class that is interested in processing a worskpaceExplorerSelectNotification
|
||||||
|
* event implements this interface, and the object created
|
||||||
|
* with that class is registered with a component using the
|
||||||
|
* component's <code>addWorskpaceExplorerSelectNotificationListener<code> method. When
|
||||||
|
* the worskpaceExplorerSelectNotification event occurs, that object's appropriate
|
||||||
|
* method is invoked.
|
||||||
|
*
|
||||||
|
* @see WorskpaceExplorerSelectNotificationEvent
|
||||||
|
*/
|
||||||
|
public interface WorskpaceExplorerSelectNotificationListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On selected item.
|
||||||
|
*
|
||||||
|
* @param item the item
|
||||||
|
*/
|
||||||
|
void onSelectedItem(Item item);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On aborted.
|
||||||
|
*/
|
||||||
|
void onAborted();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On failed.
|
||||||
|
*
|
||||||
|
* @param throwable the throwable
|
||||||
|
*/
|
||||||
|
void onFailed(Throwable throwable);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On not valid selection.
|
||||||
|
*/
|
||||||
|
void onNotValidSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The listener interface for receiving hasWorskpaceExplorerSelectNotification events.
|
||||||
|
* The class that is interested in processing a hasWorskpaceExplorerSelectNotification
|
||||||
|
* event implements this interface, and the object created
|
||||||
|
* with that class is registered with a component using the
|
||||||
|
* component's <code>addHasWorskpaceExplorerSelectNotificationListener<code> method. When
|
||||||
|
* the hasWorskpaceExplorerSelectNotification event occurs, that object's appropriate
|
||||||
|
* method is invoked.
|
||||||
|
*
|
||||||
|
* @see HasWorskpaceExplorerSelectNotificationEvent
|
||||||
|
*/
|
||||||
|
public interface HasWorskpaceExplorerSelectNotificationListener {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the workspace explorer select notification listener.
|
||||||
|
*
|
||||||
|
* @param handler the handler
|
||||||
|
*/
|
||||||
|
public void addWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the workspace explorer select notification listener.
|
||||||
|
*
|
||||||
|
* @param handler the handler
|
||||||
|
*/
|
||||||
|
public void removeWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,510 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client;
|
||||||
|
|
||||||
|
import gwt.material.design.client.ui.MaterialToast;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerSelectNotification.HasWorskpaceExplorerSelectNotificationListener;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.download.RequestBuilderWorkspaceValidateItem;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.download.WindowOpenParameter;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.BreadcrumbClickEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.BreadcrumbClickEventHandler;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.ClickItemEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.ClickItemEventHandler;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.DownloadItemEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.DownloadItemEventHandler;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.LoadFolderEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.LoadFolderEventHandler;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.OrderDataByEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.OrderDataByEventHandler;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.RightClickItemEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.RightClickItemEventHandler;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.DisplayField;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.view.Breadcrumbs;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.view.PopupContextMenu;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.view.WorkspaceExplorer;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemType;
|
||||||
|
|
||||||
|
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||||
|
import com.google.gwt.core.shared.GWT;
|
||||||
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
|
import com.google.gwt.http.client.RequestBuilder;
|
||||||
|
import com.google.gwt.user.client.Window;
|
||||||
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
import com.google.gwt.user.client.ui.DockPanel;
|
||||||
|
import com.google.gwt.user.client.ui.ScrollPanel;
|
||||||
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class WorkspaceResourcesExplorerPanel.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Dec 3, 2015
|
||||||
|
*/
|
||||||
|
public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWorskpaceExplorerSelectNotificationListener{
|
||||||
|
|
||||||
|
public HandlerManager eventBus;
|
||||||
|
private Breadcrumbs breadcrumbs;
|
||||||
|
private boolean isSelect = false;
|
||||||
|
private String captionTxt;
|
||||||
|
// private WorkspaceExplorerController controller;
|
||||||
|
private List<WorskpaceExplorerSelectNotificationListener> listeners = new ArrayList<WorskpaceExplorerSelectNotificationListener>();
|
||||||
|
private VerticalPanel mainVP = new VerticalPanel();
|
||||||
|
// private HorizontalPanel footerHP = new HorizontalPanel();
|
||||||
|
private WorkspaceExplorer wsExplorer;
|
||||||
|
private ScrollPanel centerScrollable = new ScrollPanel();
|
||||||
|
// private ScrollPanel southPanel = new ScrollPanel();
|
||||||
|
private String folderId;
|
||||||
|
private String folderName;
|
||||||
|
private DisplayField[] displayFields = new DisplayField[]{DisplayField.ICON, DisplayField.NAME, DisplayField.OWNER, DisplayField.CREATION_DATE};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new workspace folder explorer select panel.
|
||||||
|
*
|
||||||
|
* @param eventBus the event bus
|
||||||
|
* @param folderId the folder id like root folder to explore
|
||||||
|
* @param folderName the folder name
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
public WorkspaceResourcesExplorerPanel(HandlerManager eventBus, String folderId, String folderName) throws Exception {
|
||||||
|
initExplorer(eventBus, folderId, folderName, ItemType.values(), ItemType.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inits the explorer.
|
||||||
|
*
|
||||||
|
* @param eventBus the event bus
|
||||||
|
* @param folderId the folder id
|
||||||
|
* @param folderName the folder name
|
||||||
|
* @param selectableTypes the selectable types
|
||||||
|
* @param showableTypes the showable types
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
private void initExplorer(HandlerManager eventBus, String folderId, String folderName, ItemType[] selectableTypes, ItemType[] showableTypes) throws Exception{
|
||||||
|
this.folderId = folderId;
|
||||||
|
this.folderName = folderName;
|
||||||
|
this.eventBus = eventBus;
|
||||||
|
this.breadcrumbs = new Breadcrumbs(eventBus);
|
||||||
|
bindEvents();
|
||||||
|
|
||||||
|
wsExplorer = new WorkspaceExplorer(eventBus, showableTypes, selectableTypes, displayFields);
|
||||||
|
Item item = new Item(folderId, folderName, true);
|
||||||
|
if(folderId!=null && !folderId.isEmpty())
|
||||||
|
wsExplorer.loadFolder(item);
|
||||||
|
initPanel("");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the displayFields
|
||||||
|
*/
|
||||||
|
public DisplayField[] getDisplayFields() {
|
||||||
|
|
||||||
|
return displayFields;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new workspace explorer select panel.
|
||||||
|
*
|
||||||
|
* @param folderId the folder id
|
||||||
|
* @param showOnlyFolders the show only folders
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
public WorkspaceResourcesExplorerPanel(HandlerManager eventBus, String folderId, boolean showOnlyFolders) throws Exception {
|
||||||
|
|
||||||
|
if(showOnlyFolders){
|
||||||
|
ItemType[] itemsType = new ItemType[1];
|
||||||
|
itemsType[0] = ItemType.FOLDER;
|
||||||
|
initExplorer(eventBus, folderId, "", itemsType, itemsType);
|
||||||
|
}else{
|
||||||
|
initExplorer(eventBus, folderId, "", ItemType.values(), ItemType.values());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bind events.
|
||||||
|
*/
|
||||||
|
private void bindEvents(){
|
||||||
|
|
||||||
|
eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(final ClickItemEvent clickItemEvent) {
|
||||||
|
isSelect = false;
|
||||||
|
Set<Item> items = wsExplorer.getItemsSelected();
|
||||||
|
List<Item> lstItems = toList(items);
|
||||||
|
|
||||||
|
//Return if item is not selectable
|
||||||
|
if(!itemIsSelectable(lstItems.get(0))){
|
||||||
|
notifyNotValidSelection();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
notifySelectedItem(lstItems.get(0));
|
||||||
|
isSelect = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
eventBus.addHandler(LoadFolderEvent.TYPE, new LoadFolderEventHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadFolder(LoadFolderEvent loadFolderEvent) {
|
||||||
|
|
||||||
|
if(loadFolderEvent.getTargetFolder()==null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Item item = loadFolderEvent.getTargetFolder();
|
||||||
|
if(item.isFolder()){
|
||||||
|
try {
|
||||||
|
wsExplorer.loadFolder(item);
|
||||||
|
loadParentBreadcrumbByItemId(item.getId(), true);
|
||||||
|
// clearMoreInfo();
|
||||||
|
} catch (Exception e) {
|
||||||
|
GWT.log(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
eventBus.addHandler(BreadcrumbClickEvent.TYPE, new BreadcrumbClickEventHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBreadcrumbClick(BreadcrumbClickEvent breadcrumbClickEvent) {
|
||||||
|
if(breadcrumbClickEvent.getTargetItem()!=null)
|
||||||
|
eventBus.fireEvent(new LoadFolderEvent(breadcrumbClickEvent.getTargetItem()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
eventBus.addHandler(OrderDataByEvent.TYPE, new OrderDataByEventHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onOrderDataBy(OrderDataByEvent orderDataByEvent) {
|
||||||
|
|
||||||
|
wsExplorer.getItTables().sortDataBy(orderDataByEvent.getLabel());
|
||||||
|
|
||||||
|
/*ArrayList<Item> items = ItemComparatorUtility.sortItems(DisplayField.NAME, true, wsExplorer.getItTables().getDataProvider().getList());
|
||||||
|
wsExplorer.updateExplorer(items);*/
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
eventBus.addHandler(RightClickItemEvent.TYPE, new RightClickItemEventHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(RightClickItemEvent rightClickItemEvent) {
|
||||||
|
|
||||||
|
if(rightClickItemEvent.getItem()!=null && rightClickItemEvent.getItem().getId()!=null){
|
||||||
|
|
||||||
|
PopupContextMenu popupCM = new PopupContextMenu(true, eventBus, rightClickItemEvent.getItem());
|
||||||
|
popupCM.showPopup(rightClickItemEvent.getXPos(), Window.getScrollTop()+rightClickItemEvent.getYPos());
|
||||||
|
|
||||||
|
/*final PopupPanel contextMenu = new PopupPanel(true);
|
||||||
|
contextMenu.getElement().getStyle().setBackgroundColor("#F5F5F5");
|
||||||
|
Navigation nav = new Navigation(eventBus, rightClickItemEvent.getItem());
|
||||||
|
nav.addCommandOnDownloadClick(new Command() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
contextMenu.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
contextMenu.add(nav);
|
||||||
|
contextMenu.setPopupPosition(rightClickItemEvent.getXPos(), Window.getScrollTop()+rightClickItemEvent.getYPos());
|
||||||
|
contextMenu.show();*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
eventBus.addHandler(DownloadItemEvent.TYPE, new DownloadItemEventHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDownloadItem(DownloadItemEvent downloadItemEvent) {
|
||||||
|
GWT.log("Fired event DownloadItemEvent");
|
||||||
|
String itemIds = "";
|
||||||
|
if(downloadItemEvent.getItem()!=null)
|
||||||
|
itemIds = downloadItemEvent.getItem().getId()+WorkspaceExplorerAppConstants.IDS_SEPARATOR;
|
||||||
|
else{
|
||||||
|
|
||||||
|
List<Item> lstItems = toList(wsExplorer.getItemsSelected());
|
||||||
|
for (Item item : lstItems) {
|
||||||
|
itemIds +=item.getId()+WorkspaceExplorerAppConstants.IDS_SEPARATOR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
GWT.log("itemIds: "+itemIds);
|
||||||
|
if(!itemIds.isEmpty()){
|
||||||
|
// MaterialToast.fireToast("Download...");
|
||||||
|
|
||||||
|
switch (downloadItemEvent.getType()) {
|
||||||
|
case DOWNLOAD:
|
||||||
|
MaterialToast.fireToast("Download...");
|
||||||
|
try {
|
||||||
|
new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET,WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE, WorkspaceExplorerAppConstants.IDS+"="+itemIds, "_self", downloadHandlerCallback);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Window.alert("Sorry, an error occurred while contacting server, try again");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PREVIEW:
|
||||||
|
break;
|
||||||
|
case OPEN:
|
||||||
|
MaterialToast.fireToast("Showing...");
|
||||||
|
try {
|
||||||
|
new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET, WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE, WorkspaceExplorerAppConstants.IDS+"="+itemIds+"&viewContent=true", "_blank", downloadHandlerCallback);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
Window.alert("Sorry, an error occurred while contacting server, try again");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*final NewBrowserWindow newBW = NewBrowserWindow.open("", "_self", "");
|
||||||
|
WorkspaceExplorerAppConstants.workspaceNavigatorService.getPublicLinkForItemId(itemId, new AsyncCallback<String>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
Window.alert(caught.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(String url) {
|
||||||
|
|
||||||
|
if(url!=null){
|
||||||
|
newBW.setUrl(url);
|
||||||
|
}else
|
||||||
|
Window.alert("Sorry, the item selected is not available for download");
|
||||||
|
|
||||||
|
}
|
||||||
|
});*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To list.
|
||||||
|
*
|
||||||
|
* @param items the items
|
||||||
|
* @return the list
|
||||||
|
*/
|
||||||
|
private List<Item> toList(Set<Item> items){
|
||||||
|
if(items!=null && items.size()>0){
|
||||||
|
List<Item> lstItems = new ArrayList<Item> (items.size());
|
||||||
|
lstItems.addAll(items);
|
||||||
|
return lstItems;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load parent breadcrumb by item id.
|
||||||
|
*
|
||||||
|
* @param itemIdentifier the item identifier
|
||||||
|
* @param includeItemAsParent the include item as parent
|
||||||
|
*/
|
||||||
|
private void loadParentBreadcrumbByItemId(final String itemIdentifier, boolean includeItemAsParent){
|
||||||
|
|
||||||
|
GWT.log("Reload Parent Breadcrumb: [Item id: "+itemIdentifier+"]");
|
||||||
|
|
||||||
|
WorkspaceExplorerAppConstants.workspaceNavigatorService.getBreadcrumbsByItemIdentifierToParentLimit(itemIdentifier, folderId, includeItemAsParent, new AsyncCallback<List<Item>>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
GWT.log(caught.getMessage());
|
||||||
|
wsExplorer.setAlert(caught.getMessage(), AlertType.ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(List<Item> result) {
|
||||||
|
if(result!=null){
|
||||||
|
breadcrumbs.setPath(result);
|
||||||
|
// clearMoreInfo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh root folder view.
|
||||||
|
*/
|
||||||
|
public void refreshRootFolderView(){
|
||||||
|
Item item = new Item(folderId, folderName, true);
|
||||||
|
eventBus.fireEvent(new LoadFolderEvent(item));
|
||||||
|
}
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Clear more info.
|
||||||
|
// */
|
||||||
|
// private void clearMoreInfo(){
|
||||||
|
// southPanel.clear();
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inits the panel.
|
||||||
|
*
|
||||||
|
* @param captionTxt the caption txt is the tool-tip
|
||||||
|
*/
|
||||||
|
private void initPanel(String captionTxt) {
|
||||||
|
this.captionTxt = captionTxt;
|
||||||
|
this.getElement().setId("WorkspaceExplorerContainer");
|
||||||
|
this.getElement().setAttribute("id", "WorkspaceExplorerContainer");
|
||||||
|
this.getElement().addClassName("workspace-explorer-container");
|
||||||
|
|
||||||
|
if(this.captionTxt!=null && !this.captionTxt.isEmpty())
|
||||||
|
setTitle(this.captionTxt);
|
||||||
|
|
||||||
|
setWidth("100%");
|
||||||
|
add(breadcrumbs, DockPanel.NORTH);
|
||||||
|
mainVP.add(wsExplorer.getPanel());
|
||||||
|
centerScrollable.add(mainVP);
|
||||||
|
add(centerScrollable, DockPanel.CENTER);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notify selected item.
|
||||||
|
*
|
||||||
|
* @param selected the selected
|
||||||
|
*/
|
||||||
|
private void notifySelectedItem(Item selected){
|
||||||
|
|
||||||
|
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
||||||
|
worskpaceExplorerNotificationListener.onSelectedItem(selected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notify aborted.
|
||||||
|
*/
|
||||||
|
private void notifyAborted(){
|
||||||
|
|
||||||
|
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
||||||
|
worskpaceExplorerNotificationListener.onAborted();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notify not valid selection.
|
||||||
|
*/
|
||||||
|
private void notifyNotValidSelection(){
|
||||||
|
|
||||||
|
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
||||||
|
worskpaceExplorerNotificationListener.onNotValidSelection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notify failed.
|
||||||
|
*
|
||||||
|
* @param t the t
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private void notifyFailed(Throwable t){
|
||||||
|
|
||||||
|
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
||||||
|
worskpaceExplorerNotificationListener.onFailed(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the caption txt.
|
||||||
|
*
|
||||||
|
* @return the captionTxt
|
||||||
|
*/
|
||||||
|
public String getCaptionTxt() {
|
||||||
|
return captionTxt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is valid hide.
|
||||||
|
*
|
||||||
|
* @return the isValidHide
|
||||||
|
*/
|
||||||
|
public boolean isValidHide() {
|
||||||
|
return isSelect;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#addWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void addWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) {
|
||||||
|
if(handler!=null)
|
||||||
|
listeners.add(handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#removeWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void removeWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) {
|
||||||
|
if(handler!=null){
|
||||||
|
if(listeners.contains(handler))
|
||||||
|
listeners.remove(handler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Item is selectable.
|
||||||
|
*
|
||||||
|
* @param item the item
|
||||||
|
* @return true, if successful
|
||||||
|
*/
|
||||||
|
public boolean itemIsSelectable(Item item){
|
||||||
|
GWT.log("Selectable type: "+wsExplorer.getSelectableTypes());
|
||||||
|
GWT.log("item: "+item);
|
||||||
|
if (item!=null){
|
||||||
|
boolean selectable = wsExplorer.getSelectableTypes().contains(item.getType());
|
||||||
|
return selectable?true:false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the wsExplorer
|
||||||
|
*/
|
||||||
|
public WorkspaceExplorer getWsExplorer() {
|
||||||
|
return wsExplorer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the event bus.
|
||||||
|
*
|
||||||
|
* @return the eventBus
|
||||||
|
*/
|
||||||
|
public HandlerManager getEventBus() {
|
||||||
|
|
||||||
|
return eventBus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AsyncCallback<WindowOpenParameter> downloadHandlerCallback = new AsyncCallback<WindowOpenParameter>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(WindowOpenParameter windowOpenParam) {
|
||||||
|
String params = "?"+windowOpenParam.getParameters();
|
||||||
|
if(params.length()>1)
|
||||||
|
params+="&";
|
||||||
|
params+=WorkspaceExplorerAppConstants.REDIRECTONERROR+"="+windowOpenParam.isRedirectOnError();
|
||||||
|
windowOpenParam.getBrowserWindow().setUrl(WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE+params);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.download;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Enum DownloadType.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Mar 7, 2016
|
||||||
|
*/
|
||||||
|
public enum DownloadType {
|
||||||
|
|
||||||
|
PREVIEW,
|
||||||
|
OPEN,
|
||||||
|
DOWNLOAD;
|
||||||
|
}
|
|
@ -0,0 +1,121 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.download;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.NewBrowserWindow;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerAppConstants;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.http.client.Request;
|
||||||
|
import com.google.gwt.http.client.RequestBuilder;
|
||||||
|
import com.google.gwt.http.client.RequestCallback;
|
||||||
|
import com.google.gwt.http.client.RequestException;
|
||||||
|
import com.google.gwt.http.client.Response;
|
||||||
|
import com.google.gwt.user.client.Window;
|
||||||
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class RequestBuilderWorkspaceValidateItem.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* @Jun 24, 2013
|
||||||
|
*/
|
||||||
|
public class RequestBuilderWorkspaceValidateItem {
|
||||||
|
|
||||||
|
private AsyncCallback<WindowOpenParameter> callback;
|
||||||
|
private String parameters;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new request builder workspace validate item.
|
||||||
|
*
|
||||||
|
* @param method the method
|
||||||
|
* @param servletName the name of the servlet that must be called
|
||||||
|
* @param params param=value¶m1=value1&...
|
||||||
|
* @param targetWindow the target of the window (e.g. "_blank")
|
||||||
|
* @param callback the callback
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
public RequestBuilderWorkspaceValidateItem(RequestBuilder.Method method, String servletName, final String params, final String targetWindow, final AsyncCallback<WindowOpenParameter> callback) throws Exception{
|
||||||
|
|
||||||
|
this.callback = callback;
|
||||||
|
|
||||||
|
final NewBrowserWindow newBrowserWindow = NewBrowserWindow.open("", targetWindow, "");
|
||||||
|
|
||||||
|
this.parameters = params;
|
||||||
|
|
||||||
|
if(servletName==null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
servletName = servletName.isEmpty()?"/":servletName;
|
||||||
|
|
||||||
|
if(!servletName.contains("/"))
|
||||||
|
servletName+="/"+servletName;
|
||||||
|
|
||||||
|
if(parameters==null)
|
||||||
|
parameters = WorkspaceExplorerAppConstants.VALIDATEITEM+"=true";
|
||||||
|
else
|
||||||
|
parameters +="&"+WorkspaceExplorerAppConstants.VALIDATEITEM+"=true";
|
||||||
|
|
||||||
|
String urlRequest = servletName+"?"+parameters;
|
||||||
|
|
||||||
|
GWT.log("request builder for: "+urlRequest);
|
||||||
|
|
||||||
|
RequestBuilder requestBuilder = new RequestBuilder(method, urlRequest);
|
||||||
|
try {
|
||||||
|
|
||||||
|
requestBuilder.sendRequest("", new RequestCallback() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponseReceived(Request request, Response response) {
|
||||||
|
|
||||||
|
int status = response.getStatusCode();
|
||||||
|
|
||||||
|
if(!(status==200) && !(status==202)){ //NOT IS STATUS SC_ACCEPTED
|
||||||
|
|
||||||
|
// if(status==401){ // SC_UNAUTHORIZED = 401;
|
||||||
|
// GWT.log("Session expired");
|
||||||
|
// AppControllerExplorer.getEventBus().fireEvent(new SessionExpiredEvent());
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
newBrowserWindow.close();
|
||||||
|
handleError("Sorry, an error occurred on retriving the file. "+response.getText()); //ERROR STATUS
|
||||||
|
|
||||||
|
}else { //OK STATUS
|
||||||
|
|
||||||
|
if(callback!=null){
|
||||||
|
//PASSING PARAMS WITHOUT VALIDATION=TRUE
|
||||||
|
callback.onSuccess(new WindowOpenParameter(targetWindow, "", params, true, newBrowserWindow));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Request request, Throwable exception) {
|
||||||
|
newBrowserWindow.close();
|
||||||
|
|
||||||
|
// System.out.println("exception message is "+exception.getMessage());
|
||||||
|
handleError(exception.getMessage());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (RequestException e) {
|
||||||
|
newBrowserWindow.close();
|
||||||
|
throw new Exception("Sorry, an error occurred while contacting server, try again");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle error.
|
||||||
|
*
|
||||||
|
* @param message the message
|
||||||
|
*/
|
||||||
|
public void handleError(String message){
|
||||||
|
|
||||||
|
if(callback!=null)
|
||||||
|
callback.onFailure(new Exception(message));
|
||||||
|
else
|
||||||
|
Window.alert("Error: "+message);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,91 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.download;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.NewBrowserWindow;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* @Jun 25, 2013
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class WindowOpenParameter {
|
||||||
|
|
||||||
|
private String option;
|
||||||
|
private String parameters;
|
||||||
|
private String itemName;
|
||||||
|
private boolean redirectOnError;
|
||||||
|
private NewBrowserWindow browserWindow;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public WindowOpenParameter() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param target the target of the window (e.g. "_blank")
|
||||||
|
* @param itemName
|
||||||
|
* @param parameters param=value¶m1=value1&...
|
||||||
|
* @param redirectOnError if true execute a redirect on fake URL
|
||||||
|
* @param browserWindow an instance of NewBrowserWindow
|
||||||
|
*/
|
||||||
|
public WindowOpenParameter(String target, String itemName, String parameters, boolean redirectOnError, NewBrowserWindow browserWindow) {
|
||||||
|
super();
|
||||||
|
this.option = target;
|
||||||
|
this.itemName = itemName;
|
||||||
|
this.parameters = parameters;
|
||||||
|
this.redirectOnError = redirectOnError;
|
||||||
|
this.browserWindow = browserWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getParameters() {
|
||||||
|
return parameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParameters(String parameters) {
|
||||||
|
this.parameters = parameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOption() {
|
||||||
|
return option;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOption(String option) {
|
||||||
|
this.option = option;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getItemName() {
|
||||||
|
return itemName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setItemName(String itemName) {
|
||||||
|
this.itemName = itemName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isRedirectOnError() {
|
||||||
|
return redirectOnError;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setRedirectOnError(boolean redirectOnError) {
|
||||||
|
this.redirectOnError = redirectOnError;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public NewBrowserWindow getBrowserWindow() {
|
||||||
|
return browserWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setBrowserWindow(NewBrowserWindow browserWindow) {
|
||||||
|
this.browserWindow = browserWindow;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,61 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class BreadcrumbClickEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Aug 3, 2015
|
||||||
|
*/
|
||||||
|
public class BreadcrumbClickEvent extends GwtEvent<BreadcrumbClickEventHandler> {
|
||||||
|
public static Type<BreadcrumbClickEventHandler> TYPE = new Type<BreadcrumbClickEventHandler>();
|
||||||
|
private Item targetItem;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new breadcrumb click event.
|
||||||
|
*
|
||||||
|
* @param target the target
|
||||||
|
*/
|
||||||
|
public BreadcrumbClickEvent(Item target) {
|
||||||
|
this.targetItem = target;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<BreadcrumbClickEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(BreadcrumbClickEventHandler handler) {
|
||||||
|
handler.onBreadcrumbClick(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the target item.
|
||||||
|
*
|
||||||
|
* @return the targetItem
|
||||||
|
*/
|
||||||
|
public Item getTargetItem() {
|
||||||
|
return targetItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the target item.
|
||||||
|
*
|
||||||
|
* @param targetItem the targetItem to set
|
||||||
|
*/
|
||||||
|
public void setTargetItem(Item targetItem) {
|
||||||
|
this.targetItem = targetItem;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface BreadcrumbClickEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Aug 3, 2015
|
||||||
|
*/
|
||||||
|
public interface BreadcrumbClickEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On breadcrumb click.
|
||||||
|
*
|
||||||
|
* @param breadcrumbClickEvent the breadcrumb click event
|
||||||
|
*/
|
||||||
|
void onBreadcrumbClick(BreadcrumbClickEvent breadcrumbClickEvent);
|
||||||
|
}
|
|
@ -0,0 +1,61 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class BreadcrumbInitEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Feb 2, 2016
|
||||||
|
*/
|
||||||
|
public class BreadcrumbInitEvent extends GwtEvent<BreadcrumbInitEventHandler> {
|
||||||
|
public static Type<BreadcrumbInitEventHandler> TYPE = new Type<BreadcrumbInitEventHandler>();
|
||||||
|
private Item targetItem;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new breadcrumb click event.
|
||||||
|
*
|
||||||
|
* @param target the target
|
||||||
|
*/
|
||||||
|
public BreadcrumbInitEvent(Item target) {
|
||||||
|
this.targetItem = target;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<BreadcrumbInitEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(BreadcrumbInitEventHandler handler) {
|
||||||
|
handler.onBreadcrumbInit(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the target item.
|
||||||
|
*
|
||||||
|
* @return the targetItem
|
||||||
|
*/
|
||||||
|
public Item getTargetItem() {
|
||||||
|
return targetItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the target item.
|
||||||
|
*
|
||||||
|
* @param targetItem the targetItem to set
|
||||||
|
*/
|
||||||
|
public void setTargetItem(Item targetItem) {
|
||||||
|
this.targetItem = targetItem;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface BreadcrumbInitEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Feb 2, 2016
|
||||||
|
*/
|
||||||
|
public interface BreadcrumbInitEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On breadcrumb init.
|
||||||
|
*
|
||||||
|
* @param breadcrumbInitEvent the breadcrumb init event
|
||||||
|
*/
|
||||||
|
void onBreadcrumbInit(BreadcrumbInitEvent breadcrumbInitEvent);
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class ClickItemEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jul 6, 2015
|
||||||
|
*/
|
||||||
|
public class ClickItemEvent extends GwtEvent<ClickItemEventHandler> {
|
||||||
|
public static Type<ClickItemEventHandler> TYPE = new Type<ClickItemEventHandler>();
|
||||||
|
private Set<Item> items;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new click item event.
|
||||||
|
*
|
||||||
|
* @param selectedObject the item
|
||||||
|
*/
|
||||||
|
public ClickItemEvent(Set<Item> selectedObject) {
|
||||||
|
this.items = selectedObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<ClickItemEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(ClickItemEventHandler handler) {
|
||||||
|
handler.onClick(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the items.
|
||||||
|
*
|
||||||
|
* @return the items
|
||||||
|
*/
|
||||||
|
public Set<Item> getItems() {
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface ClickItemEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jul 6, 2015
|
||||||
|
*/
|
||||||
|
public interface ClickItemEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On click.
|
||||||
|
*
|
||||||
|
* @param moreInfoShowEvent the more info show event
|
||||||
|
*/
|
||||||
|
void onClick(ClickItemEvent moreInfoShowEvent);
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class CreateFolderClickEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Feb 1, 2016
|
||||||
|
*/
|
||||||
|
public class CreateFolderClickEvent extends GwtEvent<CreateFolderClickEventHandler> {
|
||||||
|
public static Type<CreateFolderClickEventHandler> TYPE = new Type<CreateFolderClickEventHandler>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new click item event.
|
||||||
|
*/
|
||||||
|
public CreateFolderClickEvent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<CreateFolderClickEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(CreateFolderClickEventHandler handler) {
|
||||||
|
handler.onClick(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface ClickItemEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jul 6, 2015
|
||||||
|
*/
|
||||||
|
public interface CreateFolderClickEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On click.
|
||||||
|
*
|
||||||
|
* @param createFolderClickEvent the more info show event
|
||||||
|
*/
|
||||||
|
void onClick(CreateFolderClickEvent createFolderClickEvent);
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.download.DownloadType;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemInterface;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class ClickItemEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jul 6, 2015
|
||||||
|
*/
|
||||||
|
public class DownloadItemEvent extends GwtEvent<DownloadItemEventHandler> {
|
||||||
|
public static Type<DownloadItemEventHandler> TYPE = new Type<DownloadItemEventHandler>();
|
||||||
|
private ItemInterface item;
|
||||||
|
private DownloadType type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new click item event.
|
||||||
|
*
|
||||||
|
* @param itemDownload the item download
|
||||||
|
* @param type the type
|
||||||
|
*/
|
||||||
|
public DownloadItemEvent(ItemInterface itemDownload, DownloadType type) {
|
||||||
|
this.item = itemDownload;
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the type
|
||||||
|
*/
|
||||||
|
public DownloadType getType() {
|
||||||
|
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<DownloadItemEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(DownloadItemEventHandler handler) {
|
||||||
|
handler.onDownloadItem(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the item.
|
||||||
|
*
|
||||||
|
* @return the item
|
||||||
|
*/
|
||||||
|
public ItemInterface getItem() {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface DownloadItemEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Feb 23, 2016
|
||||||
|
*/
|
||||||
|
public interface DownloadItemEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On download item.
|
||||||
|
*
|
||||||
|
* @param downloadItemEvent the download item event
|
||||||
|
*/
|
||||||
|
void onDownloadItem(DownloadItemEvent downloadItemEvent);
|
||||||
|
}
|
|
@ -0,0 +1,61 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class LoadFolderEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jun 25, 2015
|
||||||
|
*/
|
||||||
|
public class LoadFolderEvent extends GwtEvent<LoadFolderEventHandler> {
|
||||||
|
public static Type<LoadFolderEventHandler> TYPE = new Type<LoadFolderEventHandler>();
|
||||||
|
private Item item;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new load folder event.
|
||||||
|
*
|
||||||
|
* @param selected the selected
|
||||||
|
*/
|
||||||
|
public LoadFolderEvent(Item selected) {
|
||||||
|
this.item = selected;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<LoadFolderEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(LoadFolderEventHandler handler) {
|
||||||
|
handler.onLoadFolder(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the target folder.
|
||||||
|
*
|
||||||
|
* @return the target folder
|
||||||
|
*/
|
||||||
|
public Item getTargetFolder() {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the target folder.
|
||||||
|
*
|
||||||
|
* @param item the new target folder
|
||||||
|
*/
|
||||||
|
public void setTargetFolder(Item item) {
|
||||||
|
this.item = item;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* @May 23, 2013
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface LoadFolderEventHandler extends EventHandler {
|
||||||
|
/**
|
||||||
|
* @param accountingHistoryEvent
|
||||||
|
*/
|
||||||
|
void onLoadFolder(LoadFolderEvent loadFolderEvent);
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class LoadMySpecialFolderEvent extends GwtEvent<LoadMySpecialFolderEventHandler> {
|
||||||
|
|
||||||
|
public static Type<LoadMySpecialFolderEventHandler> TYPE = new Type<LoadMySpecialFolderEventHandler>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new double click event.
|
||||||
|
*
|
||||||
|
* @param target the target
|
||||||
|
*/
|
||||||
|
public LoadMySpecialFolderEvent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<LoadMySpecialFolderEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(LoadMySpecialFolderEventHandler handler) {
|
||||||
|
handler.onLoadMySpecialFolder(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface LoadMySpecialFolderEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jun 25, 2015
|
||||||
|
*/
|
||||||
|
public interface LoadMySpecialFolderEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On load my special folder.
|
||||||
|
*
|
||||||
|
* @param loadMySpecialFolderEvent the load my special folder event
|
||||||
|
*/
|
||||||
|
void onLoadMySpecialFolder(LoadMySpecialFolderEvent loadMySpecialFolderEvent);
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class LoadRootEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jun 25, 2015
|
||||||
|
*/
|
||||||
|
public class LoadRootEvent extends GwtEvent<LoadRootEventHandler> {
|
||||||
|
|
||||||
|
public static Type<LoadRootEventHandler> TYPE = new Type<LoadRootEventHandler>();
|
||||||
|
|
||||||
|
public LoadRootEvent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<LoadRootEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(LoadRootEventHandler handler) {
|
||||||
|
handler.onLoadRoot(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface LoadRootEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jun 25, 2015
|
||||||
|
*/
|
||||||
|
public interface LoadRootEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On load root.
|
||||||
|
*
|
||||||
|
* @param loadRootEvent the load root event
|
||||||
|
*/
|
||||||
|
void onLoadRoot(LoadRootEvent loadRootEvent);
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class LoadFolderEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jun 25, 2015
|
||||||
|
*/
|
||||||
|
public class OrderDataByEvent extends GwtEvent<OrderDataByEventHandler> {
|
||||||
|
public static Type<OrderDataByEventHandler> TYPE = new Type<OrderDataByEventHandler>();
|
||||||
|
private String label;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new order data by event.
|
||||||
|
*
|
||||||
|
* @param label the label
|
||||||
|
*/
|
||||||
|
public OrderDataByEvent(String label) {
|
||||||
|
this.label = label;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<OrderDataByEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(OrderDataByEventHandler handler) {
|
||||||
|
handler.onOrderDataBy(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the label
|
||||||
|
*/
|
||||||
|
public String getLabel() {
|
||||||
|
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class OrderDataByEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Mar 18, 2016
|
||||||
|
*/
|
||||||
|
public interface OrderDataByEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On load root.
|
||||||
|
*
|
||||||
|
* @param orderDataByEvent the label
|
||||||
|
*/
|
||||||
|
void onOrderDataBy(OrderDataByEvent orderDataByEvent);
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class RightClickItemEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Feb 23, 2016
|
||||||
|
*/
|
||||||
|
public class RightClickItemEvent extends GwtEvent<RightClickItemEventHandler> {
|
||||||
|
public static Type<RightClickItemEventHandler> TYPE = new Type<RightClickItemEventHandler>();
|
||||||
|
private Item item;
|
||||||
|
private int xPos;
|
||||||
|
private int yPos;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new click item event.
|
||||||
|
* @param yPos
|
||||||
|
* @param xPos
|
||||||
|
*
|
||||||
|
* @param item the item
|
||||||
|
*/
|
||||||
|
public RightClickItemEvent(int xPos, int yPos, Item item) {
|
||||||
|
this.xPos = xPos;
|
||||||
|
this.yPos = yPos;
|
||||||
|
this.item = item;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<RightClickItemEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Dispatch.
|
||||||
|
*
|
||||||
|
* @param handler the handler
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(RightClickItemEventHandler handler) {
|
||||||
|
handler.onClick(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the item.
|
||||||
|
*
|
||||||
|
* @return the item
|
||||||
|
*/
|
||||||
|
public Item getItem() {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the xPos
|
||||||
|
*/
|
||||||
|
public int getXPos() {
|
||||||
|
|
||||||
|
return xPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the y pos.
|
||||||
|
*
|
||||||
|
* @return the yPos
|
||||||
|
*/
|
||||||
|
public int getYPos() {
|
||||||
|
|
||||||
|
return yPos;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface RightClickItemEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Feb 23, 2016
|
||||||
|
*/
|
||||||
|
public interface RightClickItemEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On click.
|
||||||
|
*
|
||||||
|
* @param rightClickItemEvent the right click item event
|
||||||
|
*/
|
||||||
|
void onClick(RightClickItemEvent rightClickItemEvent);
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class LoadRootEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jun 25, 2015
|
||||||
|
*/
|
||||||
|
public class RootLoadedEvent extends GwtEvent<RootLoadedEventHandler> {
|
||||||
|
|
||||||
|
public static Type<RootLoadedEventHandler> TYPE = new Type<RootLoadedEventHandler>();
|
||||||
|
private Item root;
|
||||||
|
|
||||||
|
public RootLoadedEvent(Item root) {
|
||||||
|
this.root = root;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<RootLoadedEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(RootLoadedEventHandler handler) {
|
||||||
|
handler.onRootLoaded(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the root
|
||||||
|
*/
|
||||||
|
public Item getRoot() {
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface RootLoadedEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Aug 3, 2015
|
||||||
|
*/
|
||||||
|
public interface RootLoadedEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On root loaded.
|
||||||
|
*
|
||||||
|
* @param rootLoadedEvent the root loaded event
|
||||||
|
*/
|
||||||
|
void onRootLoaded(RootLoadedEvent rootLoadedEvent);
|
||||||
|
}
|
|
@ -0,0 +1,196 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.grid;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.ClickItemEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.LoadFolderEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.RightClickItemEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
|
import com.github.gwtbootstrap.client.ui.Pagination;
|
||||||
|
import com.google.gwt.core.shared.GWT;
|
||||||
|
import com.google.gwt.dom.client.NativeEvent;
|
||||||
|
import com.google.gwt.event.dom.client.ContextMenuEvent;
|
||||||
|
import com.google.gwt.event.dom.client.ContextMenuHandler;
|
||||||
|
import com.google.gwt.event.dom.client.DoubleClickEvent;
|
||||||
|
import com.google.gwt.event.dom.client.DoubleClickHandler;
|
||||||
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
|
import com.google.gwt.user.cellview.client.DataGrid;
|
||||||
|
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
|
||||||
|
import com.google.gwt.user.cellview.client.SimplePager;
|
||||||
|
import com.google.gwt.user.client.Event;
|
||||||
|
import com.google.gwt.view.client.CellPreviewEvent;
|
||||||
|
import com.google.gwt.view.client.ListDataProvider;
|
||||||
|
import com.google.gwt.view.client.MultiSelectionModel;
|
||||||
|
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||||
|
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class AbstractItemTable.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Feb 19, 2015
|
||||||
|
*/
|
||||||
|
public abstract class AbstractItemsCellTable {
|
||||||
|
|
||||||
|
protected DataGrid<Item> dataGrid;
|
||||||
|
protected ListDataProvider<Item> dataProvider = new ListDataProvider<Item>();
|
||||||
|
protected Item itemContextMenu = null;
|
||||||
|
protected boolean showMoreInfo;
|
||||||
|
protected final MultiSelectionModel<Item> msm;
|
||||||
|
protected final HandlerManager eventBus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inits the table.
|
||||||
|
*
|
||||||
|
* @param ItemTable
|
||||||
|
* the Item table
|
||||||
|
* @param pager
|
||||||
|
* the pager
|
||||||
|
* @param pagination
|
||||||
|
* the pagination
|
||||||
|
*/
|
||||||
|
public abstract void initTable(final SimplePager pager, final Pagination pagination);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new abstract items cell table.
|
||||||
|
*
|
||||||
|
* @param eventBus the event bus
|
||||||
|
* @param fireOnClick the fire on click
|
||||||
|
*/
|
||||||
|
public AbstractItemsCellTable(HandlerManager eventBus, boolean fireOnClick) {
|
||||||
|
this.eventBus = eventBus;
|
||||||
|
this.showMoreInfo = fireOnClick;
|
||||||
|
dataGrid = new DataGrid<Item>(1);
|
||||||
|
dataGrid.getElement().setId("data_grid_explorer");
|
||||||
|
dataGrid.getElement().setAttribute("id", "data_grid_explorer");
|
||||||
|
dataGrid.setWidth("100%");
|
||||||
|
dataGrid.setHeight("100%");
|
||||||
|
dataProvider.addDataDisplay(dataGrid);
|
||||||
|
dataGrid.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
|
||||||
|
|
||||||
|
msm = new MultiSelectionModel<Item>();
|
||||||
|
dataGrid.setSelectionModel(msm);
|
||||||
|
msm.addSelectionChangeHandler(new Handler() {
|
||||||
|
@Override
|
||||||
|
public void onSelectionChange(final SelectionChangeEvent event)
|
||||||
|
{
|
||||||
|
final Set<Item> selectedObject = msm.getSelectedSet();
|
||||||
|
GWT.log("Clicked: "+selectedObject);
|
||||||
|
// dataGrid.getRowContainer().removeClassName("dataGridSelectedRow");
|
||||||
|
if(selectedObject!=null && !selectedObject.isEmpty()){
|
||||||
|
// GWT.log("Current Selected Row : "+ dataGrid.getKeyboardSelectedRow());
|
||||||
|
// dataGrid.getRowElement(dataGrid.getKeyboardSelectedRow()).addClassName("dataGridSelectedRow");
|
||||||
|
// selectedItem(selectedObject);
|
||||||
|
if(showMoreInfo)
|
||||||
|
AbstractItemsCellTable.this.eventBus.fireEvent(new ClickItemEvent(selectedObject));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dataGrid.addDomHandler(new DoubleClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDoubleClick(final DoubleClickEvent event) {
|
||||||
|
Set<Item> selected = msm.getSelectedSet();
|
||||||
|
GWT.log("Double Click: "+selected);
|
||||||
|
if (selected != null && !selected.isEmpty()) {
|
||||||
|
AbstractItemsCellTable.this.eventBus.fireEvent(new LoadFolderEvent(selected.iterator().next()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
DoubleClickEvent.getType());
|
||||||
|
|
||||||
|
dataGrid.addDomHandler(new ContextMenuHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onContextMenu(ContextMenuEvent event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
|
}, ContextMenuEvent.getType());
|
||||||
|
|
||||||
|
|
||||||
|
dataGrid.addCellPreviewHandler(new CellPreviewEvent.Handler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCellPreview(CellPreviewEvent<Item> event) {
|
||||||
|
// GWT.log("CellPreview click");
|
||||||
|
if (event.getNativeEvent().getButton() == NativeEvent.BUTTON_RIGHT && event.getNativeEvent().getType().equals("contextmenu")) {
|
||||||
|
event.getNativeEvent().preventDefault();
|
||||||
|
event.getNativeEvent().stopPropagation();
|
||||||
|
// int clickedRow = event.getIndex();
|
||||||
|
Item item = event.getValue();
|
||||||
|
GWT.log("Right click on "+ item);
|
||||||
|
AbstractItemsCellTable.this.eventBus.fireEvent(new RightClickItemEvent(event.getNativeEvent().getClientX(), event.getNativeEvent().getClientY(), item));
|
||||||
|
event.setCanceled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/*MenuBar options = new MenuBar(true);
|
||||||
|
ScheduledCommand openCommand = new ScheduledCommand() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
AbstractItemsCellTable.this.eventBus.fireEvent(new LoadFolderEvent(itemContextMenu));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
MenuItem openItem = new MenuItem("Open", openCommand);
|
||||||
|
options.addItem(openItem);
|
||||||
|
final DialogBox menuWrapper = new DialogBox(true);
|
||||||
|
menuWrapper.getElement().getStyle().setBorderStyle(BorderStyle.NONE);
|
||||||
|
menuWrapper.getElement().getStyle().setZIndex(10000);
|
||||||
|
menuWrapper.add(options);*/
|
||||||
|
dataGrid.sinkEvents(Event.ONCONTEXTMENU);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update items.
|
||||||
|
*
|
||||||
|
* @param items the items
|
||||||
|
* @param removeOldItems the remove old items
|
||||||
|
*/
|
||||||
|
public void updateItems(List<Item> items, boolean removeOldItems) {
|
||||||
|
|
||||||
|
if(removeOldItems){
|
||||||
|
dataProvider.getList().clear();
|
||||||
|
msm.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
dataProvider.getList().addAll(items);
|
||||||
|
dataGrid.setPageSize(items.size()+1);
|
||||||
|
dataGrid.redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the cell tables.
|
||||||
|
*
|
||||||
|
* @return the cell tables
|
||||||
|
*/
|
||||||
|
public DataGrid<Item> getCellTable() {
|
||||||
|
return dataGrid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the data provider.
|
||||||
|
*
|
||||||
|
* @return the data provider
|
||||||
|
*/
|
||||||
|
public ListDataProvider<Item> getDataProvider() {
|
||||||
|
return dataProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the data provider.
|
||||||
|
*
|
||||||
|
* @param dataProvider
|
||||||
|
* the new data provider
|
||||||
|
*/
|
||||||
|
public void setDataProvider(ListDataProvider<Item> dataProvider) {
|
||||||
|
this.dataProvider = dataProvider;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.grid;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Enum DisplayField.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Mar 18, 2016
|
||||||
|
*/
|
||||||
|
public enum DisplayField {
|
||||||
|
|
||||||
|
ICON("Icon", true, false),
|
||||||
|
NAME("Name", true, true),
|
||||||
|
OWNER("Owner", true, true),
|
||||||
|
CREATION_DATE("Creation Date", false, true);
|
||||||
|
|
||||||
|
|
||||||
|
private String label;
|
||||||
|
private boolean isSortable;
|
||||||
|
private boolean showIntable;
|
||||||
|
/**
|
||||||
|
* Instantiates a new display field.
|
||||||
|
*
|
||||||
|
* @param id the id
|
||||||
|
* @param isSortable the is sortable
|
||||||
|
*/
|
||||||
|
private DisplayField(String label, boolean showInTable, boolean isSortable) {
|
||||||
|
this.label = label;
|
||||||
|
this.isSortable = isSortable;
|
||||||
|
this.showIntable = showInTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the label
|
||||||
|
*/
|
||||||
|
public String getLabel() {
|
||||||
|
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the isSortable
|
||||||
|
*/
|
||||||
|
public boolean isSortable() {
|
||||||
|
|
||||||
|
return isSortable;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the showIntable
|
||||||
|
*/
|
||||||
|
public boolean isShowIntable() {
|
||||||
|
|
||||||
|
return showIntable;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param label the label to set
|
||||||
|
*/
|
||||||
|
public void setLabel(String label) {
|
||||||
|
|
||||||
|
this.label = label;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param isSortable the isSortable to set
|
||||||
|
*/
|
||||||
|
public void setSortable(boolean isSortable) {
|
||||||
|
|
||||||
|
this.isSortable = isSortable;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param showIntable the showIntable to set
|
||||||
|
*/
|
||||||
|
public void setShowIntable(boolean showIntable) {
|
||||||
|
|
||||||
|
this.showIntable = showIntable;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,399 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.grid;
|
||||||
|
|
||||||
|
import gwt.material.design.client.base.MaterialImageCell;
|
||||||
|
import gwt.material.design.client.constants.IconPosition;
|
||||||
|
import gwt.material.design.client.constants.IconType;
|
||||||
|
import gwt.material.design.client.constants.ImageType;
|
||||||
|
import gwt.material.design.client.ui.MaterialIcon;
|
||||||
|
import gwt.material.design.client.ui.MaterialImage;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.Util;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.LoadFolderEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.view.PopupContextMenu;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.view.SelectionItem;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
|
import com.github.gwtbootstrap.client.ui.Pagination;
|
||||||
|
import com.google.gwt.cell.client.ButtonCell;
|
||||||
|
import com.google.gwt.cell.client.Cell.Context;
|
||||||
|
import com.google.gwt.cell.client.DateCell;
|
||||||
|
import com.google.gwt.cell.client.SafeHtmlCell;
|
||||||
|
import com.google.gwt.core.shared.GWT;
|
||||||
|
import com.google.gwt.dom.client.Element;
|
||||||
|
import com.google.gwt.dom.client.NativeEvent;
|
||||||
|
import com.google.gwt.dom.client.Style.Unit;
|
||||||
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
|
import com.google.gwt.i18n.client.DateTimeFormat;
|
||||||
|
import com.google.gwt.safehtml.shared.SafeHtml;
|
||||||
|
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||||
|
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
|
||||||
|
import com.google.gwt.user.cellview.client.Column;
|
||||||
|
import com.google.gwt.user.cellview.client.ColumnSortEvent;
|
||||||
|
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
||||||
|
import com.google.gwt.user.cellview.client.ColumnSortList.ColumnSortInfo;
|
||||||
|
import com.google.gwt.user.cellview.client.SimplePager;
|
||||||
|
import com.google.gwt.user.cellview.client.TextColumn;
|
||||||
|
import com.google.gwt.user.client.Window;
|
||||||
|
import com.google.gwt.user.client.ui.Image;
|
||||||
|
import com.google.gwt.user.client.ui.Label;
|
||||||
|
/**
|
||||||
|
* The Class PackagesTable.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Feb 19, 2015
|
||||||
|
*/
|
||||||
|
public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
|
||||||
|
|
||||||
|
private DateTimeFormat dateFormatter = DateTimeFormat.getFormat("dd MMM hh:mm aaa yyyy");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Enum DISPLAY_FIELD.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Feb 1, 2016
|
||||||
|
*/
|
||||||
|
// public static enum DISPLAY_FIELD{ICON, NAME, OWNER};
|
||||||
|
private List<DisplayField> displayFields;
|
||||||
|
|
||||||
|
private Map<String, Integer> mapFieldToColumnIndex = new HashMap<String, Integer>();
|
||||||
|
|
||||||
|
private Column<Item, Date> dateColumn;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new items table.
|
||||||
|
*
|
||||||
|
* @param eventBus the event bus
|
||||||
|
* @param showMoreInfo the show more info
|
||||||
|
* @param fields the fields
|
||||||
|
*/
|
||||||
|
public ItemsTable(HandlerManager eventBus, boolean showMoreInfo, DisplayField[] fields) {
|
||||||
|
super(eventBus, showMoreInfo);
|
||||||
|
setDisplayFields(fields);
|
||||||
|
initTable(null, null);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.portlets.widgets.wsexplorer.client.view.grid.AbstractItemsCellTable#updateItems(java.util.List, boolean)
|
||||||
|
*/
|
||||||
|
public void updateItems(List<Item> items, boolean removeOldItems) {
|
||||||
|
super.updateItems(items, removeOldItems);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the items.
|
||||||
|
*
|
||||||
|
* @param items the items
|
||||||
|
*/
|
||||||
|
public void addItems(List<Item> items) {
|
||||||
|
if(items!=null)
|
||||||
|
dataProvider.getList().addAll(items);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.portlets.admin.gcubereleases.client.view.AbstractPackageTable#initTable(com.google.gwt.user.cellview.client.AbstractCellTable, com.google.gwt.user.cellview.client.SimplePager, com.github.gwtbootstrap.client.ui.Pagination)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void initTable(final SimplePager pager, final Pagination pagination) {
|
||||||
|
dataGrid.setEmptyTableWidget(new Label("No data."));
|
||||||
|
|
||||||
|
if(this.displayFields.contains(DisplayField.ICON)){
|
||||||
|
|
||||||
|
MaterialImageCell myIcon = new MaterialImageCell(){
|
||||||
|
public Set<String> getConsumedEvents() {
|
||||||
|
HashSet<String> events = new HashSet<String>();
|
||||||
|
events.add("click");
|
||||||
|
return events;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// IMAGE
|
||||||
|
Column<Item, MaterialImage> icon = new Column<Item, MaterialImage>(myIcon) {
|
||||||
|
@Override
|
||||||
|
public MaterialImage getValue(final Item object) {
|
||||||
|
MaterialImage img = new MaterialImage();
|
||||||
|
img.setUrl(Util.getImageResource(object).getSafeUri().asString());
|
||||||
|
img.setWidth("32px");
|
||||||
|
img.setHeight("32px");
|
||||||
|
img.setType(ImageType.DEFAULT);
|
||||||
|
|
||||||
|
if(object.isFolder()){
|
||||||
|
img.addStyleName("navigation-cursor");
|
||||||
|
}
|
||||||
|
|
||||||
|
return img;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onBrowserEvent(com.google.gwt.cell.client.Cell.Context context, Element elem, Item object, NativeEvent event) {
|
||||||
|
super.onBrowserEvent(context, elem, object, event);
|
||||||
|
GWT.log("onBrowserEvent ON IMG "+event.getType());
|
||||||
|
// Handle the click event.
|
||||||
|
if ("click".equals(event.getType())) {
|
||||||
|
if(object.isFolder()){
|
||||||
|
GWT.log("clicked folder onBrowserEvent "+object);
|
||||||
|
eventBus.fireEvent(new LoadFolderEvent(object));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
icon.setSortable(false);
|
||||||
|
// packageTable.addColumn(icon, "");
|
||||||
|
dataGrid.addColumn(icon);
|
||||||
|
dataGrid.setColumnWidth(icon, "45px");
|
||||||
|
}
|
||||||
|
|
||||||
|
Column<Item, SafeHtml> nameColumn;
|
||||||
|
if(this.displayFields.contains(DisplayField.NAME)){
|
||||||
|
|
||||||
|
final SafeHtmlCell progressCell = new SafeHtmlCell();
|
||||||
|
|
||||||
|
nameColumn = new Column<Item, SafeHtml>(progressCell) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SafeHtml getValue(Item object) {
|
||||||
|
SafeHtmlBuilder sb = new SafeHtmlBuilder();
|
||||||
|
sb.appendHtmlConstant("<div style=''>");
|
||||||
|
sb.appendHtmlConstant(object.getName());
|
||||||
|
String formatDate = dateFormatter.format(object.getCreationDate());
|
||||||
|
String tooltipDate = "Created: "+formatDate;
|
||||||
|
sb.appendHtmlConstant("<div title='"+tooltipDate+"' style='display: block; text-align: left; font-size: 11px; font-family: Arial, Courier; opacity: 0.8;'>");
|
||||||
|
sb.appendHtmlConstant(formatDate);
|
||||||
|
sb.appendHtmlConstant("</div></div>");
|
||||||
|
return sb.toSafeHtml();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
nameColumn.setSortable(true);
|
||||||
|
ListHandler<Item> nameColumnHandler = new ListHandler<Item>(dataProvider.getList());
|
||||||
|
nameColumnHandler.setComparator(nameColumn, new Comparator<Item>() {
|
||||||
|
@Override
|
||||||
|
public int compare(Item o1, Item o2) {
|
||||||
|
|
||||||
|
if(o1==null)
|
||||||
|
return 1;
|
||||||
|
else if(o2==null)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
//XOR
|
||||||
|
if (o1.isSpecialFolder() ^ o2.isSpecialFolder()) return o1.isSpecialFolder() ? -1 : 1;
|
||||||
|
if (o1.isFolder() ^ o2.isFolder()) return o1.isFolder() ? -1 : 1;
|
||||||
|
|
||||||
|
return String.CASE_INSENSITIVE_ORDER.compare(o1.getName(), o2.getName());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dataGrid.addColumnSortHandler(nameColumnHandler);
|
||||||
|
dataGrid.addColumn(nameColumn);
|
||||||
|
mapFieldToColumnIndex.put(DisplayField.NAME.getLabel(), dataGrid.getColumnIndex(nameColumn));
|
||||||
|
dataGrid.getColumnSortList().push(nameColumn);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.displayFields.contains(DisplayField.OWNER)){
|
||||||
|
|
||||||
|
TextColumn<Item> owner = new TextColumn<Item>() {
|
||||||
|
@Override
|
||||||
|
public String getValue(Item object) {
|
||||||
|
return object.getOwner() != null ? object.getOwner() : "";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
owner.setSortable(true);
|
||||||
|
ListHandler<Item> ownerColumnHandler = new ListHandler<Item>(dataProvider.getList());
|
||||||
|
ownerColumnHandler.setComparator(owner, new Comparator<Item>() {
|
||||||
|
@Override
|
||||||
|
public int compare(Item o1, Item o2) {
|
||||||
|
|
||||||
|
if(o1==null)
|
||||||
|
return 1;
|
||||||
|
else if (o2==null)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return o1.getOwner().compareTo(o2.getOwner());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dataGrid.addColumnSortHandler(ownerColumnHandler);
|
||||||
|
dataGrid.addColumn(owner);
|
||||||
|
mapFieldToColumnIndex.put(DisplayField.OWNER.getLabel(), dataGrid.getColumnIndex(owner));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(this.displayFields.contains(DisplayField.CREATION_DATE)){
|
||||||
|
|
||||||
|
DateCell dateCell = new DateCell();
|
||||||
|
dateColumn = new Column<Item, Date>(dateCell) {
|
||||||
|
@Override
|
||||||
|
public Date getValue(Item object) {
|
||||||
|
return object.getCreationDate();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
dateColumn.setSortable(true);
|
||||||
|
ListHandler<Item> dateColumnHandler = new ListHandler<Item>(dataProvider.getList());
|
||||||
|
dateColumnHandler.setComparator(dateColumn, new Comparator<Item>() {
|
||||||
|
@Override
|
||||||
|
public int compare(Item o1, Item o2) {
|
||||||
|
return o1.getCreationDate().compareTo(o2.getCreationDate());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dataGrid.addColumnSortHandler(dateColumnHandler);
|
||||||
|
// dataGrid.addColumn(dateColumn);
|
||||||
|
// mapFieldToColumnIndex.put(DisplayField.CREATION_DATE.getLabel(), dataGrid.getColumnIndex(dateColumn));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Column<Item, MaterialIcon> moreColumn = new Column<Item, MaterialIcon>(new MaterialIconCell()){
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MaterialIcon getValue(final Item object) {
|
||||||
|
MaterialIcon button = new MaterialIcon();
|
||||||
|
button.setIconColor("black");
|
||||||
|
button.setWidth("15px");
|
||||||
|
// button.setWaves(WavesType.DEFAULT);
|
||||||
|
button.setIconPosition(IconPosition.RIGHT);
|
||||||
|
button.getElement().getStyle().setMarginRight(17.0,Unit.PX);
|
||||||
|
button.setIconType(IconType.MORE_VERT);
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.user.cellview.client.Column#onBrowserEvent(com.google.gwt.cell.client.Cell.Context, com.google.gwt.dom.client.Element, java.lang.Object, com.google.gwt.dom.client.NativeEvent)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onBrowserEvent(Context context, Element elem, Item object, NativeEvent event) {
|
||||||
|
|
||||||
|
|
||||||
|
// Handle the click event.
|
||||||
|
if ("click".equals(event.getType())) {
|
||||||
|
//skip right click
|
||||||
|
if (event.getButton() == NativeEvent.BUTTON_RIGHT) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
PopupContextMenu popupCM = new PopupContextMenu(true, eventBus, object);
|
||||||
|
popupCM.showPopup(event.getClientX()-100, Window.getScrollTop()+event.getClientY());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
moreColumn.setSortable(false);
|
||||||
|
// packageTable.addColumn(moreColumn, "");
|
||||||
|
dataGrid.addColumn(moreColumn);
|
||||||
|
dataGrid.setColumnWidth(moreColumn, "50px");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the display fields.
|
||||||
|
*
|
||||||
|
* @param fields the new display fields
|
||||||
|
*/
|
||||||
|
public void setDisplayFields(DisplayField[] fields) {
|
||||||
|
this.displayFields = fields!=null && fields.length>0?Arrays.asList(fields):Arrays.asList(DisplayField.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the display fields.
|
||||||
|
*
|
||||||
|
* @return the displayFields
|
||||||
|
*/
|
||||||
|
public List<DisplayField> getDisplayFields() {
|
||||||
|
return displayFields;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class ButtonImageCell.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Feb 1, 2016
|
||||||
|
*/
|
||||||
|
public class ButtonImageCell extends ButtonCell{
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.cell.client.AbstractSafeHtmlCell#render(com.google.gwt.cell.client.Cell.Context, java.lang.Object, com.google.gwt.safehtml.shared.SafeHtmlBuilder)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void render(com.google.gwt.cell.client.Cell.Context context,
|
||||||
|
String value, SafeHtmlBuilder sb) {
|
||||||
|
SafeHtml html = SafeHtmlUtils.fromTrustedString(new Image(value).toString());
|
||||||
|
sb.append(html);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.SelectionItemHandler#getSelectionItem()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Set<Item> getSelectedItems() {
|
||||||
|
Set<Item> items = msm.getSelectedSet();
|
||||||
|
|
||||||
|
if(items==null || items.isEmpty())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param label
|
||||||
|
*/
|
||||||
|
public void sortDataBy(String label) {
|
||||||
|
GWT.log("sort by "+label);
|
||||||
|
boolean isAscending = true;
|
||||||
|
if(this.dataGrid.getColumnSortList().size()>0)
|
||||||
|
isAscending = this.dataGrid.getColumnSortList().get(0).isAscending();
|
||||||
|
|
||||||
|
boolean removeDateColumn = false;
|
||||||
|
if(label.compareTo(DisplayField.CREATION_DATE.getLabel())==0){
|
||||||
|
dataGrid.addColumn(dateColumn);
|
||||||
|
mapFieldToColumnIndex.put(DisplayField.CREATION_DATE.getLabel(), dataGrid.getColumnIndex(dateColumn));
|
||||||
|
removeDateColumn = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int colIndex = mapFieldToColumnIndex.get(label);
|
||||||
|
|
||||||
|
GWT.log("colIndex " + colIndex);
|
||||||
|
GWT.log("isAscending " + isAscending);
|
||||||
|
if(colIndex>-1){
|
||||||
|
Column<Item, ?> column = this.dataGrid.getColumn(colIndex);
|
||||||
|
if (column != null && column.isSortable()) {
|
||||||
|
this.dataGrid.getColumnSortList().clear();
|
||||||
|
setSortedColumn(column, !isAscending);
|
||||||
|
ColumnSortEvent.fire(dataGrid, dataGrid.getColumnSortList());
|
||||||
|
|
||||||
|
if(removeDateColumn)
|
||||||
|
dataGrid.removeColumn(colIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays the appropriate sorted icon in the header of the column for the given index.
|
||||||
|
*
|
||||||
|
* @param columnIndex
|
||||||
|
* of the column to mark as sorted
|
||||||
|
* @param ascending
|
||||||
|
* <code>true</code> for ascending icon, <code>false</code> for descending icon
|
||||||
|
*/
|
||||||
|
public void setSortedColumn(Column<Item, ?> column, boolean ascending) {
|
||||||
|
|
||||||
|
if (column != null && column.isSortable()) {
|
||||||
|
ColumnSortInfo info = this.dataGrid.getColumnSortList().push(column);
|
||||||
|
GWT.log("ColumnSortInfo is anscending "+info.isAscending());
|
||||||
|
if (info.isAscending() != ascending) {
|
||||||
|
this.dataGrid.getColumnSortList().push(column);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,61 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.grid;
|
||||||
|
|
||||||
|
import gwt.material.design.client.ui.MaterialIcon;
|
||||||
|
|
||||||
|
import com.google.gwt.cell.client.AbstractCell;
|
||||||
|
import com.google.gwt.cell.client.ValueUpdater;
|
||||||
|
import com.google.gwt.dom.client.Element;
|
||||||
|
import com.google.gwt.dom.client.NativeEvent;
|
||||||
|
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Mar 8, 2016
|
||||||
|
*/
|
||||||
|
public class MaterialIconCell extends AbstractCell<MaterialIcon> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public MaterialIconCell() {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sink the click and keydown events. We handle click events in this
|
||||||
|
* class. AbstractCell will handle the keydown event and call
|
||||||
|
* onEnterKeyDown() if the user presses the enter key while the cell is
|
||||||
|
* selected.
|
||||||
|
*/
|
||||||
|
super("click", "keydown");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(
|
||||||
|
com.google.gwt.cell.client.Cell.Context context, MaterialIcon value,
|
||||||
|
SafeHtmlBuilder sb) {
|
||||||
|
|
||||||
|
if(value==null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
sb.appendHtmlConstant(value.getElement().getString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when an event occurs in a rendered instance of this Cell. The
|
||||||
|
* parent element refers to the element that contains the rendered cell, NOT
|
||||||
|
* to the outermost element that the Cell rendered.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.cell.client.AbstractCell#onBrowserEvent(com.google.gwt.cell.client.Cell.Context, com.google.gwt.dom.client.Element, java.lang.Object, com.google.gwt.dom.client.NativeEvent, com.google.gwt.cell.client.ValueUpdater)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onBrowserEvent(
|
||||||
|
com.google.gwt.cell.client.Cell.Context context, Element parent,
|
||||||
|
MaterialIcon value, NativeEvent event,
|
||||||
|
ValueUpdater<MaterialIcon> valueUpdater) {
|
||||||
|
super.onBrowserEvent(context, parent, value, event, valueUpdater);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.grid;
|
||||||
|
|
||||||
|
import gwt.material.design.client.ui.MaterialLink;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.download.DownloadType;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.DownloadItemEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemInterface;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
|
import com.google.gwt.event.dom.client.ClickHandler;
|
||||||
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
|
import com.google.gwt.user.client.Command;
|
||||||
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Mar 8, 2016
|
||||||
|
*/
|
||||||
|
public class MenuMoreOptionsOnItem extends Composite {
|
||||||
|
|
||||||
|
private static MenuMoreOptionsOnItemUiBinder uiBinder =
|
||||||
|
GWT.create(MenuMoreOptionsOnItemUiBinder.class);
|
||||||
|
|
||||||
|
interface MenuMoreOptionsOnItemUiBinder
|
||||||
|
extends UiBinder<Widget, MenuMoreOptionsOnItem> {
|
||||||
|
}
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
MaterialLink open;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
MaterialLink download;
|
||||||
|
|
||||||
|
private HandlerManager eventBus;
|
||||||
|
|
||||||
|
private ItemInterface itemToDownload;
|
||||||
|
|
||||||
|
private Command commandOnClick;
|
||||||
|
|
||||||
|
public MenuMoreOptionsOnItem(HandlerManager eventBus) {
|
||||||
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
|
|
||||||
|
this.eventBus = eventBus;
|
||||||
|
download.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
|
MenuMoreOptionsOnItem.this.eventBus.fireEvent(new DownloadItemEvent(itemToDownload, DownloadType.DOWNLOAD));
|
||||||
|
GWT.log("commandOnClick " + commandOnClick);
|
||||||
|
if(commandOnClick!=null)
|
||||||
|
commandOnClick.execute();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
open.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
|
MenuMoreOptionsOnItem.this.eventBus.fireEvent(new DownloadItemEvent(itemToDownload, DownloadType.OPEN));
|
||||||
|
GWT.log("commandOnClick " + commandOnClick);
|
||||||
|
if(commandOnClick!=null)
|
||||||
|
commandOnClick.execute();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inits the on item.
|
||||||
|
*
|
||||||
|
* @param itemToDownload the item to download
|
||||||
|
* @param commandOnClick the command on click
|
||||||
|
*/
|
||||||
|
public void initOnItem(ItemInterface itemToDownload, Command commandOnClick){
|
||||||
|
this.itemToDownload = itemToDownload;
|
||||||
|
this.commandOnClick = commandOnClick;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||||
|
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||||
|
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:m="urn:import:gwt.material.design.client.ui">
|
||||||
|
<ui:style>
|
||||||
|
.onHoverUnderline :HOVER{
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
</ui:style>
|
||||||
|
<m:MaterialRow>
|
||||||
|
<m:MaterialColumn>
|
||||||
|
<m:MaterialRow>
|
||||||
|
<m:MaterialLink text="Open" ui:field="open" styleName="{style.onHoverUnderline}"/>
|
||||||
|
</m:MaterialRow>
|
||||||
|
<m:MaterialRow>
|
||||||
|
<m:MaterialLink text="Download" ui:field="download" styleName="{style.onHoverUnderline}"/>
|
||||||
|
</m:MaterialRow>
|
||||||
|
</m:MaterialColumn>
|
||||||
|
</m:MaterialRow>
|
||||||
|
</ui:UiBinder>
|
|
@ -0,0 +1,7 @@
|
||||||
|
/* @url <constant name> <DataResource method name> */
|
||||||
|
@url invalidNameUrl invalidName;
|
||||||
|
|
||||||
|
.nameError{
|
||||||
|
background:#fff invalidNameUrl repeat-x bottom;
|
||||||
|
border: 1px solid #dd7870;
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.resources;
|
||||||
|
|
||||||
|
import com.google.gwt.resources.client.CssResource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface WorkspaceLightTreeCss.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jul 8, 2015
|
||||||
|
*/
|
||||||
|
public interface WorkspaceExplorerAppCss extends CssResource {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name error.
|
||||||
|
*
|
||||||
|
* @return the string
|
||||||
|
*/
|
||||||
|
public String nameError();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.resources;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.resources.client.ClientBundle;
|
||||||
|
import com.google.gwt.resources.client.ImageResource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface WorkspaceLightTreeResources.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jul 8, 2015
|
||||||
|
*/
|
||||||
|
public interface WorkspaceExplorerResources extends ClientBundle {
|
||||||
|
|
||||||
|
public static final WorkspaceExplorerResources INSTANCE = GWT.create(WorkspaceExplorerResources.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Root.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("_32/folder.png")
|
||||||
|
ImageResource folder();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Folder.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("_32/groups_folder.png")
|
||||||
|
ImageResource shared_folder();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,245 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.resources;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.resources.client.ClientBundle;
|
||||||
|
import com.google.gwt.resources.client.DataResource;
|
||||||
|
import com.google.gwt.resources.client.ImageResource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface WorkspaceLightTreeResources.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jul 8, 2015
|
||||||
|
*/
|
||||||
|
public interface WorkspaceLightTreeResources extends ClientBundle {
|
||||||
|
|
||||||
|
public static final WorkspaceLightTreeResources INSTANCE = GWT.create(WorkspaceLightTreeResources.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Root.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("root.png")
|
||||||
|
ImageResource root();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Folder.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("folder.png")
|
||||||
|
ImageResource folder();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shared folder.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("shared_folder.png")
|
||||||
|
ImageResource sharedFolder();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* External_image.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("external_image.gif")
|
||||||
|
ImageResource external_image();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* External_pdf.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("external_pdf.gif")
|
||||||
|
ImageResource external_pdf();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* External_file.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("external_file.png")
|
||||||
|
ImageResource external_file();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* External_resource_link.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("external_resource_link.png")
|
||||||
|
ImageResource external_resource_link();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* External_url.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("external_url.png")
|
||||||
|
ImageResource external_url();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Report_template.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("report_template.png")
|
||||||
|
ImageResource report_template();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Report.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("report.png")
|
||||||
|
ImageResource report();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("query.png")
|
||||||
|
ImageResource query();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Document.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("document.png")
|
||||||
|
ImageResource document();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metadata.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("metadata.png")
|
||||||
|
ImageResource metadata();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pdf_document.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("pdf_document.png")
|
||||||
|
ImageResource pdf_document();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Image_document.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("image_document.png")
|
||||||
|
ImageResource image_document();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Url_document.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("url_document.png")
|
||||||
|
ImageResource url_document();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Timeseries.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("timeseries.png")
|
||||||
|
ImageResource timeseries();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Aquamaps.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("aquamaps.png")
|
||||||
|
ImageResource aquamaps();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Workflow_report.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("workflow_report.png")
|
||||||
|
ImageResource workflow_report();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Workflow_template.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("workflow_template.png")
|
||||||
|
ImageResource workflow_template();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unknown type.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("noimage.png")
|
||||||
|
ImageResource unknownType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loading.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("ajax-loader.gif")
|
||||||
|
ImageResource loading();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gucbe item.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("gcubeItem.jpeg")
|
||||||
|
ImageResource gucbeItem();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unknown.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("icon-unknown.gif")
|
||||||
|
ImageResource unknown();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invalid name.
|
||||||
|
*
|
||||||
|
* @return the data resource
|
||||||
|
*/
|
||||||
|
@Source("invalid_name.gif")
|
||||||
|
DataResource invalidName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Css.
|
||||||
|
*
|
||||||
|
* @return the workspace light tree css
|
||||||
|
*/
|
||||||
|
@Source("WorkspaceExplorerAppCss.css")
|
||||||
|
WorkspaceExplorerAppCss css();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("error.png")
|
||||||
|
ImageResource error();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh.
|
||||||
|
*
|
||||||
|
* @return the image resource
|
||||||
|
*/
|
||||||
|
@Source("refresh.png")
|
||||||
|
ImageResource refresh();
|
||||||
|
}
|
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 980 B |
After Width: | Height: | Size: 294 B |
After Width: | Height: | Size: 666 B |
After Width: | Height: | Size: 464 B |
After Width: | Height: | Size: 997 B |
After Width: | Height: | Size: 980 B |
After Width: | Height: | Size: 855 B |
After Width: | Height: | Size: 343 B |
After Width: | Height: | Size: 537 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 376 B |
After Width: | Height: | Size: 650 B |
After Width: | Height: | Size: 815 B |
After Width: | Height: | Size: 603 B |
|
@ -0,0 +1,52 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.resources.newres;
|
||||||
|
|
||||||
|
import com.github.gwtbootstrap.client.ui.constants.BaseIconType;
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.user.client.ui.AbstractImagePrototype;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class WorkspaceExplorerAppResources {
|
||||||
|
|
||||||
|
public static final WorkspaceExplorerIcons ICONS = GWT.create(WorkspaceExplorerIcons.class);
|
||||||
|
/** Inject the icon's css once at first usage */
|
||||||
|
static {
|
||||||
|
WorkspaceExplorerIcons icons = GWT.create(WorkspaceExplorerIcons.class);
|
||||||
|
icons.css().ensureInjected();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AbstractImagePrototype getIconCancel() {
|
||||||
|
|
||||||
|
return AbstractImagePrototype.create(ICONS.cancel());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AbstractImagePrototype getIconLoading() {
|
||||||
|
|
||||||
|
return AbstractImagePrototype.create(ICONS.loading());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AbstractImagePrototype getIconInfo() {
|
||||||
|
|
||||||
|
return AbstractImagePrototype.create(ICONS.info());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** My custom base icon collection */
|
||||||
|
public enum CustomIconType implements BaseIconType {
|
||||||
|
|
||||||
|
home, // Our runtime access
|
||||||
|
vre_folder,
|
||||||
|
new_folder;
|
||||||
|
|
||||||
|
private static final String PREFIX = "myBaseIcon_";
|
||||||
|
private String className;
|
||||||
|
|
||||||
|
private CustomIconType() {
|
||||||
|
this.className = this.name().toLowerCase();
|
||||||
|
}
|
||||||
|
@Override public String get() {
|
||||||
|
return PREFIX + className;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp.client.resources.newres;
|
||||||
|
|
||||||
|
import com.google.gwt.resources.client.ClientBundle;
|
||||||
|
import com.google.gwt.resources.client.CssResource;
|
||||||
|
import com.google.gwt.resources.client.ImageResource;
|
||||||
|
|
||||||
|
public interface WorkspaceExplorerIcons extends ClientBundle {
|
||||||
|
|
||||||
|
/** Get access to the css resource during gwt compilation */
|
||||||
|
@Source("baseIcons.css")
|
||||||
|
CssResource css();
|
||||||
|
|
||||||
|
@Source("cancel.png")
|
||||||
|
ImageResource cancel();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Source("loading.gif")
|
||||||
|
ImageResource loading();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Our sample image icon. Makes the image resource for the gwt-compiler's
|
||||||
|
* css composer accessible
|
||||||
|
*/
|
||||||
|
@Source("loading.gif")
|
||||||
|
ImageResource logo();
|
||||||
|
|
||||||
|
@Source("vre_folder.png")
|
||||||
|
ImageResource vre_folder();
|
||||||
|
|
||||||
|
@Source("new_folder.png")
|
||||||
|
ImageResource new_folder();
|
||||||
|
|
||||||
|
@Source("home.png")
|
||||||
|
ImageResource home();
|
||||||
|
|
||||||
|
@Source("info-icon.png")
|
||||||
|
ImageResource info();
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
/* Prevent our icons from css obfuscation */
|
||||||
|
@external .myBaseIcon_*; /* Do some css stuff */
|
||||||
|
.myBaseIcon_home:hover {
|
||||||
|
/* opacity: 0.5; */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Our sample icon */
|
||||||
|
@sprite .myBaseIcon_home {
|
||||||
|
gwt-image: "home";
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
margin-right: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Our sample icon */
|
||||||
|
@sprite .myBaseIcon_vre_folder {
|
||||||
|
gwt-image: "vre_folder";
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
margin-right: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@sprite .myBaseIcon_new_folder {
|
||||||
|
gwt-image: "new_folder";
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
margin-right: 2px;
|
||||||
|
}
|
After Width: | Height: | Size: 908 B |
After Width: | Height: | Size: 380 B |
After Width: | Height: | Size: 403 B |
After Width: | Height: | Size: 245 B |
After Width: | Height: | Size: 260 B |
After Width: | Height: | Size: 7.9 KiB |
After Width: | Height: | Size: 581 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 128 B |
After Width: | Height: | Size: 591 B |
After Width: | Height: | Size: 775 B |
After Width: | Height: | Size: 835 B |
After Width: | Height: | Size: 649 B |