Compare commits
10 Commits
Author | SHA1 | Date |
---|---|---|
Francesco Mangiacrapa | e3e4651e78 | |
Francesco Mangiacrapa | fc719424f5 | |
Francesco Mangiacrapa | c7fb36aeb7 | |
Francesco Mangiacrapa | 888f7adf40 | |
Francesco Mangiacrapa | eea656ff8f | |
Francesco Mangiacrapa | c5cf953461 | |
Francesco Mangiacrapa | d21c2266a3 | |
Francesco Mangiacrapa | ccb9edf22d | |
Francesco Mangiacrapa | b2840cdc3d | |
Francesco Mangiacrapa | 150d626f88 |
|
@ -1,12 +1,12 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" output="target/workspace-explorer-app-1.3.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
<classpathentry kind="src" output="target/workspace-explorer-app-1.4.1-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry excluding="**" kind="src" output="target/workspace-explorer-app-1.3.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
|
<classpathentry excluding="**" kind="src" output="target/workspace-explorer-app-1.4.1-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
|
@ -35,5 +35,5 @@
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="output" path="target/workspace-explorer-app-1.3.0-SNAPSHOT/WEB-INF/classes"/>
|
<classpathentry kind="output" path="target/workspace-explorer-app-1.4.1-SNAPSHOT/WEB-INF/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
jarsExcludedFromWebInfLib=
|
jarsExcludedFromWebInfLib=
|
||||||
lastWarOutDir=/home/francesco/git/workspace-explorer-app/target/workspace-explorer-app-1.3.0-SNAPSHOT
|
lastWarOutDir=/home/francescomangiacrapa/git/workspace-explorer-app/target/workspace-explorer-app-1.4.1-SNAPSHOT
|
||||||
launchConfigExternalUrlPrefix=
|
launchConfigExternalUrlPrefix=
|
||||||
warSrcDir=src/main/webapp
|
warSrcDir=src/main/webapp
|
||||||
warSrcDirIsOutput=false
|
warSrcDirIsOutput=false
|
||||||
|
|
|
@ -1,10 +1,67 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
||||||
<wb-module deploy-name="workspace-explorer-app-1.3.0-SNAPSHOT">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<wb-module deploy-name="workspace-explorer-app-1.4.1-SNAPSHOT">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
<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="/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="/target/m2e-wtp/web-resources"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
||||||
|
<dependent-module archiveName="storagehub-client-wrapper-1.1.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/storagehub-client-wrapper/storagehub-client-wrapper">
|
||||||
|
<dependency-type>uses</dependency-type>
|
||||||
|
</dependent-module>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<property name="context-root" value="workspace-explorer-app"/>
|
<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"/>
|
<property name="java-output-path" value="/workspace-explorer-app/target/workspace-explorer-app-0.0.1-SNAPSHOT/WEB-INF/classes"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</wb-module>
|
</wb-module>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</project-modules>
|
</project-modules>
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [v1.4.1-SNAPSHOT] - 2022-03-08
|
||||||
|
|
||||||
|
- [#22783] Moved to SHUB 2.x through the storagehub-client-wrapper 1.1.1
|
||||||
|
|
||||||
|
#### Enhancements
|
||||||
|
|
||||||
|
[#22782] Moved to SHUB(1.x, 3.x)
|
||||||
|
|
||||||
|
## [v1.4.0] - 2021-12-03
|
||||||
|
|
||||||
|
- [#19786] Integrated items of type "URL"
|
||||||
|
|
||||||
|
## [v1.3.1] - 2020-09-25
|
||||||
|
|
||||||
|
- [#19317] Just to include the storagehub-client-wrapper at 1.0.0 version
|
||||||
|
|
||||||
|
#### Fixes
|
||||||
|
|
||||||
|
[#19671#note-10] Resolve public link on private folder with at least one shared folder as descendant
|
||||||
|
|
||||||
|
|
||||||
|
## [v1.3.0] - 2020-04-14
|
||||||
|
|
||||||
|
[Task #18920] Migrated to SHUB
|
||||||
|
|
||||||
|
|
||||||
|
## [v1.2.0] - 2018-03-07
|
||||||
|
|
||||||
|
[Feature #11374] Download items with double click
|
||||||
|
|
||||||
|
|
||||||
|
## [v1.1.0] - 2017-10-11
|
||||||
|
|
||||||
|
[Feature #9926] read the scope from environment variable
|
||||||
|
|
||||||
|
|
||||||
|
## [v1.0.2] - 2017-10-10
|
||||||
|
|
||||||
|
Removed markAsRead method. It is performed by HL
|
||||||
|
|
||||||
|
|
||||||
|
## [v1.0.1] - 2017-07-03
|
||||||
|
|
||||||
|
[Task #9104] removed log4j.properties file
|
||||||
|
|
||||||
|
|
||||||
|
## [v.0.0.1] - 2016-11-10
|
||||||
|
|
||||||
|
Incident #5722: fixed
|
||||||
|
|
||||||
|
|
||||||
|
## [v1.0.0] - 2016-09-13
|
||||||
|
|
||||||
|
first release
|
|
@ -15,7 +15,7 @@
|
||||||
<include>README.md</include>
|
<include>README.md</include>
|
||||||
<include>LICENSE.md</include>
|
<include>LICENSE.md</include>
|
||||||
<include>profile.xml</include>
|
<include>profile.xml</include>
|
||||||
<include>changelog.xml</include>
|
<include>CHANGELOG.md</include>
|
||||||
</includes>
|
</includes>
|
||||||
<fileMode>755</fileMode>
|
<fileMode>755</fileMode>
|
||||||
<filtered>true</filtered>
|
<filtered>true</filtered>
|
||||||
|
|
45
pom.xml
45
pom.xml
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
<groupId>org.gcube.portlets.user</groupId>
|
<groupId>org.gcube.portlets.user</groupId>
|
||||||
<artifactId>workspace-explorer-app</artifactId>
|
<artifactId>workspace-explorer-app</artifactId>
|
||||||
<version>1.3.0</version>
|
<version>1.4.1-SNAPSHOT</version>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
|
|
||||||
<description>
|
<description>
|
||||||
|
@ -42,6 +42,19 @@
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.distribution</groupId>
|
||||||
|
<artifactId>gcube-smartgears-bom</artifactId>
|
||||||
|
<version>2.1.0</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<!-- TO RUN BY ECLIPSE SET THE FOLLOWING SCOPE AT COMPILE -->
|
<!-- TO RUN BY ECLIPSE SET THE FOLLOWING SCOPE AT COMPILE -->
|
||||||
|
@ -92,29 +105,15 @@
|
||||||
<version>1.4</version>
|
<version>1.4</version>
|
||||||
</dependency>
|
</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 -->
|
<!-- FWS -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.resources.discovery</groupId>
|
<groupId>org.gcube.resources.discovery</groupId>
|
||||||
<artifactId>ic-client</artifactId>
|
<artifactId>ic-client</artifactId>
|
||||||
<version>[1.0.0,2.0.0-SNAPSHOT)</version>
|
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.core</groupId>
|
<groupId>org.gcube.core</groupId>
|
||||||
<artifactId>common-scope-maps</artifactId>
|
<artifactId>common-scope-maps</artifactId>
|
||||||
<version>[1.0.2, 2.0.0-SNAPSHOT)</version>
|
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
@ -130,14 +129,13 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.common</groupId>
|
<groupId>org.gcube.common</groupId>
|
||||||
<artifactId>storagehub-client-wrapper</artifactId>
|
<artifactId>storagehub-client-wrapper</artifactId>
|
||||||
<version>[0.0.1, 1.0.0-SNAPSHOT)</version>
|
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.core</groupId>
|
<groupId>org.gcube.core</groupId>
|
||||||
<artifactId>common-encryption</artifactId>
|
<artifactId>common-encryption</artifactId>
|
||||||
<version>[1.0.0, 2.0.0-SNAPSHOT)</version>
|
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
@ -154,27 +152,16 @@
|
||||||
<version>1.8</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- LOGGER -->
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.slf4j</groupId>
|
<groupId>org.slf4j</groupId>
|
||||||
<artifactId>slf4j-api</artifactId>
|
<artifactId>slf4j-api</artifactId>
|
||||||
<version>1.6.4</version>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.slf4j</groupId>
|
<groupId>org.slf4j</groupId>
|
||||||
<artifactId>slf4j-log4j12</artifactId>
|
<artifactId>slf4j-log4j12</artifactId>
|
||||||
<version>1.6.4</version>
|
<version>1.6.4</version>
|
||||||
<scope>compile</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- LOGGER -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>log4j</groupId>
|
|
||||||
<artifactId>log4j</artifactId>
|
|
||||||
<version>1.2.16</version>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -8,6 +8,7 @@ import java.util.List;
|
||||||
|
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.download.DownloadType;
|
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.event.DownloadItemEvent;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.LoadFolderEvent;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.DisplayField;
|
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.DisplayField;
|
||||||
|
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
|
@ -64,6 +65,9 @@ public class WorkspaceExplorerAppMainPanel extends Composite {
|
||||||
@UiField
|
@UiField
|
||||||
MaterialNavSection we_nav_right;
|
MaterialNavSection we_nav_right;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
MaterialLink home_we;
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
MaterialLink download_we;
|
MaterialLink download_we;
|
||||||
|
|
||||||
|
@ -116,6 +120,18 @@ public class WorkspaceExplorerAppMainPanel extends Composite {
|
||||||
});
|
});
|
||||||
|
|
||||||
we_nav_right.add(order);
|
we_nav_right.add(order);
|
||||||
|
|
||||||
|
home_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 LoadFolderEvent(null));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
download_we.addClickHandler(new ClickHandler() {
|
download_we.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
|
|
@ -63,6 +63,8 @@
|
||||||
<g:Image styleName="{style.navigation_explorer}" url="img/d4science_workspace_logo_180.png"
|
<g:Image styleName="{style.navigation_explorer}" url="img/d4science_workspace_logo_180.png"
|
||||||
ui:field="d4science_workspace_logo_180" title="D4Science Workspace Folder Explorer"
|
ui:field="d4science_workspace_logo_180" title="D4Science Workspace Folder Explorer"
|
||||||
altText="D4Science Workspace Folder Explorer" />
|
altText="D4Science Workspace Folder Explorer" />
|
||||||
|
<m:MaterialLink iconType="HOME" iconPosition="LEFT"
|
||||||
|
textColor="blue" text="Home" ui:field="home_we" />
|
||||||
<m:MaterialLink iconType="OPEN_IN_NEW" iconPosition="LEFT"
|
<m:MaterialLink iconType="OPEN_IN_NEW" iconPosition="LEFT"
|
||||||
textColor="blue" text="Open" ui:field="show_we" />
|
textColor="blue" text="Open" ui:field="show_we" />
|
||||||
<m:MaterialLink iconType="INBOX" iconPosition="LEFT"
|
<m:MaterialLink iconType="INBOX" iconPosition="LEFT"
|
||||||
|
|
|
@ -30,7 +30,6 @@ import org.gcube.portlets.user.workspaceexplorerapp.client.view.WorkspaceExplore
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemType;
|
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.core.shared.GWT;
|
||||||
import com.google.gwt.event.shared.HandlerManager;
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
import com.google.gwt.http.client.RequestBuilder;
|
import com.google.gwt.http.client.RequestBuilder;
|
||||||
|
@ -46,50 +45,51 @@ import gwt.material.design.client.ui.MaterialToast;
|
||||||
/**
|
/**
|
||||||
* The Class WorkspaceResourcesExplorerPanel.
|
* The Class WorkspaceResourcesExplorerPanel.
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
* Dec 3, 2015
|
*
|
||||||
|
* Dec 3, 2021
|
||||||
*/
|
*/
|
||||||
public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWorskpaceExplorerSelectNotificationListener{
|
public class WorkspaceResourcesExplorerPanel extends DockPanel
|
||||||
|
implements HasWorskpaceExplorerSelectNotificationListener {
|
||||||
|
|
||||||
public HandlerManager eventBus;
|
public HandlerManager eventBus;
|
||||||
private Breadcrumbs breadcrumbs;
|
private Breadcrumbs breadcrumbs;
|
||||||
private boolean isSelect = false;
|
private boolean isSelect = false;
|
||||||
private String captionTxt;
|
private String captionTxt;
|
||||||
// private WorkspaceExplorerController controller;
|
|
||||||
private List<WorskpaceExplorerSelectNotificationListener> listeners = new ArrayList<WorskpaceExplorerSelectNotificationListener>();
|
private List<WorskpaceExplorerSelectNotificationListener> listeners = new ArrayList<WorskpaceExplorerSelectNotificationListener>();
|
||||||
private VerticalPanel mainVP = new VerticalPanel();
|
private VerticalPanel mainVP = new VerticalPanel();
|
||||||
// private HorizontalPanel footerHP = new HorizontalPanel();
|
|
||||||
private WorkspaceExplorer wsExplorer;
|
private WorkspaceExplorer wsExplorer;
|
||||||
private ScrollPanel centerScrollable = new ScrollPanel();
|
private ScrollPanel centerScrollable = new ScrollPanel();
|
||||||
// private ScrollPanel southPanel = new ScrollPanel();
|
|
||||||
private String folderId;
|
|
||||||
private String folderName;
|
private String folderName;
|
||||||
public static final DisplayField[] displayFields = new DisplayField[]{DisplayField.ICON, DisplayField.NAME, DisplayField.OWNER, DisplayField.CREATION_DATE};
|
private Item baseFolder;
|
||||||
|
public static final DisplayField[] displayFields = new DisplayField[] { DisplayField.ICON, DisplayField.NAME,
|
||||||
|
DisplayField.OWNER, DisplayField.CREATION_DATE };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new workspace folder explorer select panel.
|
* Instantiates a new workspace folder explorer select panel.
|
||||||
*
|
*
|
||||||
* @param eventBus the event bus
|
* @param eventBus the event bus
|
||||||
* @param folderId the folder id like root folder to explore
|
* @param folderId the folder id like root folder to explore
|
||||||
* @param folderName the folder name
|
* @param folderName the folder name
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
public WorkspaceResourcesExplorerPanel(HandlerManager eventBus, String folderId, String folderName) throws Exception {
|
public WorkspaceResourcesExplorerPanel(HandlerManager eventBus, String folderId, String folderName)
|
||||||
|
throws Exception {
|
||||||
initExplorer(eventBus, folderId, folderName, ItemType.values(), ItemType.values());
|
initExplorer(eventBus, folderId, folderName, ItemType.values(), ItemType.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inits the explorer.
|
* Inits the explorer.
|
||||||
*
|
*
|
||||||
* @param eventBus the event bus
|
* @param eventBus the event bus
|
||||||
* @param folderId the folder id
|
* @param folderId the folder id
|
||||||
* @param folderName the folder name
|
* @param folderName the folder name
|
||||||
* @param selectableTypes the selectable types
|
* @param selectableTypes the selectable types
|
||||||
* @param showableTypes the showable types
|
* @param showableTypes the showable types
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
private void initExplorer(HandlerManager eventBus, String folderId, String folderName, ItemType[] selectableTypes, ItemType[] showableTypes) throws Exception{
|
private void initExplorer(HandlerManager eventBus, String folderId, String folderName, ItemType[] selectableTypes,
|
||||||
this.folderId = folderId;
|
ItemType[] showableTypes) throws Exception {
|
||||||
this.folderName = folderName;
|
this.folderName = folderName;
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
this.breadcrumbs = new Breadcrumbs(eventBus);
|
this.breadcrumbs = new Breadcrumbs(eventBus);
|
||||||
|
@ -97,7 +97,9 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
|
|
||||||
wsExplorer = new WorkspaceExplorer(eventBus, showableTypes, selectableTypes, displayFields);
|
wsExplorer = new WorkspaceExplorer(eventBus, showableTypes, selectableTypes, displayFields);
|
||||||
Item item = new Item(folderId, folderName, true);
|
Item item = new Item(folderId, folderName, true);
|
||||||
if(folderId!=null && !folderId.isEmpty())
|
this.baseFolder = item;
|
||||||
|
wsExplorer.setBaseFolder(item);
|
||||||
|
if (folderId != null && !folderId.isEmpty())
|
||||||
wsExplorer.loadFolder(item);
|
wsExplorer.loadFolder(item);
|
||||||
initPanel("");
|
initPanel("");
|
||||||
}
|
}
|
||||||
|
@ -105,26 +107,27 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
/**
|
/**
|
||||||
* Instantiates a new workspace explorer select panel.
|
* Instantiates a new workspace explorer select panel.
|
||||||
*
|
*
|
||||||
* @param folderId the folder id
|
* @param eventBus the event bus
|
||||||
|
* @param folderId the folder id
|
||||||
* @param showOnlyFolders the show only folders
|
* @param showOnlyFolders the show only folders
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
public WorkspaceResourcesExplorerPanel(HandlerManager eventBus, String folderId, boolean showOnlyFolders) throws Exception {
|
public WorkspaceResourcesExplorerPanel(HandlerManager eventBus, String folderId, boolean showOnlyFolders)
|
||||||
|
throws Exception {
|
||||||
|
|
||||||
if(showOnlyFolders){
|
if (showOnlyFolders) {
|
||||||
ItemType[] itemsType = new ItemType[1];
|
ItemType[] itemsType = new ItemType[1];
|
||||||
itemsType[0] = ItemType.FOLDER;
|
itemsType[0] = ItemType.FOLDER;
|
||||||
initExplorer(eventBus, folderId, "", itemsType, itemsType);
|
initExplorer(eventBus, folderId, "", itemsType, itemsType);
|
||||||
}else{
|
} else {
|
||||||
initExplorer(eventBus, folderId, "", ItemType.values(), ItemType.values());
|
initExplorer(eventBus, folderId, "", ItemType.values(), ItemType.values());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bind events.
|
* Bind events.
|
||||||
*/
|
*/
|
||||||
private void bindEvents(){
|
private void bindEvents() {
|
||||||
|
|
||||||
eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() {
|
eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() {
|
||||||
|
|
||||||
|
@ -149,14 +152,12 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFolder(LoadFolderEvent loadFolderEvent) {
|
public void onLoadFolder(LoadFolderEvent loadFolderEvent) {
|
||||||
|
|
||||||
GWT.log("LoadFolderEvent fired");
|
GWT.log("LoadFolderEvent fired");
|
||||||
|
|
||||||
if(loadFolderEvent.getTargetFolder()==null)
|
Item item = loadFolderEvent.getTargetFolder() == null ? baseFolder : loadFolderEvent.getTargetFolder();
|
||||||
return;
|
|
||||||
|
|
||||||
Item item = loadFolderEvent.getTargetFolder();
|
if (item.isFolder()) {
|
||||||
if(item.isFolder()){
|
|
||||||
try {
|
try {
|
||||||
wsExplorer.loadFolder(item);
|
wsExplorer.loadFolder(item);
|
||||||
loadParentBreadcrumbByItemId(item.getId(), true);
|
loadParentBreadcrumbByItemId(item.getId(), true);
|
||||||
|
@ -172,7 +173,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBreadcrumbClick(BreadcrumbClickEvent breadcrumbClickEvent) {
|
public void onBreadcrumbClick(BreadcrumbClickEvent breadcrumbClickEvent) {
|
||||||
if(breadcrumbClickEvent.getTargetItem()!=null)
|
if (breadcrumbClickEvent.getTargetItem() != null)
|
||||||
eventBus.fireEvent(new LoadFolderEvent(breadcrumbClickEvent.getTargetItem()));
|
eventBus.fireEvent(new LoadFolderEvent(breadcrumbClickEvent.getTargetItem()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -183,36 +184,19 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
public void onOrderDataBy(OrderDataByEvent orderDataByEvent) {
|
public void onOrderDataBy(OrderDataByEvent orderDataByEvent) {
|
||||||
|
|
||||||
wsExplorer.getItTables().sortDataBy(orderDataByEvent.getLabel());
|
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() {
|
eventBus.addHandler(RightClickItemEvent.TYPE, new RightClickItemEventHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(RightClickItemEvent rightClickItemEvent) {
|
public void onClick(RightClickItemEvent rightClickItemEvent) {
|
||||||
|
|
||||||
if(rightClickItemEvent.getItem()!=null && rightClickItemEvent.getItem().getId()!=null){
|
if (rightClickItemEvent.getItem() != null && rightClickItemEvent.getItem().getId() != null) {
|
||||||
|
|
||||||
PopupContextMenu popupCM = new PopupContextMenu(true, eventBus, rightClickItemEvent.getItem());
|
PopupContextMenu popupCM = new PopupContextMenu(true, eventBus, rightClickItemEvent.getItem());
|
||||||
popupCM.showPopup(rightClickItemEvent.getXPos(), Window.getScrollTop()+rightClickItemEvent.getYPos());
|
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();*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -223,24 +207,27 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
public void onDownloadItem(DownloadItemEvent downloadItemEvent) {
|
public void onDownloadItem(DownloadItemEvent downloadItemEvent) {
|
||||||
GWT.log("Fired event DownloadItemEvent");
|
GWT.log("Fired event DownloadItemEvent");
|
||||||
String itemIds = "";
|
String itemIds = "";
|
||||||
if(downloadItemEvent.getItem()!=null)
|
if (downloadItemEvent.getItem() != null)
|
||||||
itemIds = downloadItemEvent.getItem().getId()+WorkspaceExplorerAppConstants.IDS_SEPARATOR;
|
itemIds = downloadItemEvent.getItem().getId() + WorkspaceExplorerAppConstants.IDS_SEPARATOR;
|
||||||
else{
|
else {
|
||||||
|
|
||||||
List<Item> lstItems = toList(wsExplorer.getItemsSelected());
|
List<Item> lstItems = toList(wsExplorer.getItemsSelected());
|
||||||
for (Item item : lstItems) {
|
for (Item item : lstItems) {
|
||||||
itemIds +=item.getId()+WorkspaceExplorerAppConstants.IDS_SEPARATOR;
|
itemIds += item.getId() + WorkspaceExplorerAppConstants.IDS_SEPARATOR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GWT.log("itemIds: "+itemIds);
|
GWT.log("itemIds: " + itemIds);
|
||||||
if(!itemIds.isEmpty()){
|
if (!itemIds.isEmpty()) {
|
||||||
// MaterialToast.fireToast("Download...");
|
// MaterialToast.fireToast("Download...");
|
||||||
|
|
||||||
switch (downloadItemEvent.getType()) {
|
switch (downloadItemEvent.getType()) {
|
||||||
case DOWNLOAD:
|
case DOWNLOAD:
|
||||||
MaterialToast.fireToast("Download...");
|
MaterialToast.fireToast("Download...");
|
||||||
try {
|
try {
|
||||||
new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET,WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE, WorkspaceExplorerAppConstants.IDS+"="+itemIds, "_self", downloadHandlerCallback);
|
new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET,
|
||||||
|
WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE,
|
||||||
|
WorkspaceExplorerAppConstants.IDS + "=" + itemIds, "_self",
|
||||||
|
downloadHandlerCallback);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Window.alert("Sorry, an error occurred while contacting server, try again");
|
Window.alert("Sorry, an error occurred while contacting server, try again");
|
||||||
}
|
}
|
||||||
|
@ -249,8 +236,45 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
// break;
|
// break;
|
||||||
case OPEN:
|
case OPEN:
|
||||||
MaterialToast.fireToast("Showing...");
|
MaterialToast.fireToast("Showing...");
|
||||||
|
|
||||||
|
if (downloadItemEvent.getItem().getType().equals(ItemType.URL_DOCUMENT)) {
|
||||||
|
|
||||||
|
final NewBrowserWindow newBrowserWindow = NewBrowserWindow.open("", "_blank", "");
|
||||||
|
|
||||||
|
final String theItemIds = itemIds;
|
||||||
|
|
||||||
|
WorkspaceExplorerAppConstants.workspaceNavigatorService
|
||||||
|
.getUrlById(downloadItemEvent.getItem().getId(), new AsyncCallback<String>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(String result) {
|
||||||
|
newBrowserWindow.setUrl(result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
try {
|
||||||
|
new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET,
|
||||||
|
WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE,
|
||||||
|
WorkspaceExplorerAppConstants.IDS + "=" + theItemIds
|
||||||
|
+ "&viewContent=true",
|
||||||
|
"_blank", downloadHandlerCallback);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Window.alert(
|
||||||
|
"Sorry, an error occurred while contacting server, try again");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET, WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE, WorkspaceExplorerAppConstants.IDS+"="+itemIds+"&viewContent=true", "_blank", downloadHandlerCallback);
|
new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET,
|
||||||
|
WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE,
|
||||||
|
WorkspaceExplorerAppConstants.IDS + "=" + itemIds + "&viewContent=true", "_blank",
|
||||||
|
downloadHandlerCallback);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Window.alert("Sorry, an error occurred while contacting server, try again");
|
Window.alert("Sorry, an error occurred while contacting server, try again");
|
||||||
|
@ -259,92 +283,67 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
default:
|
default:
|
||||||
break;
|
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.
|
* To list.
|
||||||
*
|
*
|
||||||
* @param items the items
|
* @param items the items
|
||||||
* @return the list
|
* @return the list
|
||||||
*/
|
*/
|
||||||
private List<Item> toList(Set<Item> items){
|
private List<Item> toList(Set<Item> items) {
|
||||||
if(items!=null && items.size()>0){
|
if (items != null && items.size() > 0) {
|
||||||
List<Item> lstItems = new ArrayList<Item> (items.size());
|
List<Item> lstItems = new ArrayList<Item>(items.size());
|
||||||
lstItems.addAll(items);
|
lstItems.addAll(items);
|
||||||
return lstItems;
|
return lstItems;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load parent breadcrumb by item id.
|
* Load parent breadcrumb by item id.
|
||||||
*
|
*
|
||||||
* @param itemIdentifier the item identifier
|
* @param itemIdentifier the item identifier
|
||||||
* @param includeItemAsParent the include item as parent
|
* @param includeItemAsParent the include item as parent
|
||||||
*/
|
*/
|
||||||
protected void loadParentBreadcrumbByItemId(final String itemIdentifier, boolean includeItemAsParent){
|
protected void loadParentBreadcrumbByItemId(final String itemIdentifier, boolean includeItemAsParent) {
|
||||||
|
|
||||||
GWT.log("Reload Parent Breadcrumb: [Item id: "+itemIdentifier+"]");
|
GWT.log("Reload Parent Breadcrumb: [Item id: " + itemIdentifier + "]");
|
||||||
|
|
||||||
WorkspaceExplorerAppConstants.workspaceNavigatorService.getBreadcrumbsByItemIdentifierToParentLimit(itemIdentifier, folderId, includeItemAsParent, new AsyncCallback<List<Item>>() {
|
WorkspaceExplorerAppConstants.workspaceNavigatorService.getBreadcrumbsByItemIdentifierToParentLimit(
|
||||||
|
itemIdentifier, baseFolder.getId(), includeItemAsParent, new AsyncCallback<List<Item>>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
GWT.log(caught.getMessage());
|
GWT.log(caught.getMessage());
|
||||||
wsExplorer.setAlert(caught.getMessage(), AlertType.ERROR);
|
Item goToBaseFolder = null;
|
||||||
}
|
// I'm adding go to folder only if is a sub-folder of baseFolder
|
||||||
|
if (itemIdentifier != baseFolder.getId())
|
||||||
|
goToBaseFolder = baseFolder;
|
||||||
|
|
||||||
@Override
|
// wsExplorer.setAlert(caught.getMessage(), AlertType.ERROR, goToBaseFolder);
|
||||||
public void onSuccess(List<Item> result) {
|
}
|
||||||
if(result!=null){
|
|
||||||
breadcrumbs.setPath(result);
|
@Override
|
||||||
// clearMoreInfo();
|
public void onSuccess(List<Item> result) {
|
||||||
}
|
if (result != null) {
|
||||||
}
|
breadcrumbs.setPath(result);
|
||||||
});
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Refresh root folder view.
|
* Refresh root folder view.
|
||||||
*/
|
*/
|
||||||
public void refreshRootFolderView(){
|
public void refreshRootFolderView() {
|
||||||
Item item = new Item(folderId, folderName, true);
|
// Item item = new Item(baseFolder.getId(), folderName, true);
|
||||||
eventBus.fireEvent(new LoadFolderEvent(item));
|
eventBus.fireEvent(new LoadFolderEvent(baseFolder));
|
||||||
}
|
}
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Clear more info.
|
|
||||||
// */
|
|
||||||
// private void clearMoreInfo(){
|
|
||||||
// southPanel.clear();
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inits the panel.
|
* Inits the panel.
|
||||||
*
|
*
|
||||||
|
@ -356,14 +355,14 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
this.getElement().setAttribute("id", "WorkspaceExplorerContainer");
|
this.getElement().setAttribute("id", "WorkspaceExplorerContainer");
|
||||||
this.getElement().addClassName("workspace-explorer-container");
|
this.getElement().addClassName("workspace-explorer-container");
|
||||||
|
|
||||||
if(this.captionTxt!=null && !this.captionTxt.isEmpty())
|
if (this.captionTxt != null && !this.captionTxt.isEmpty())
|
||||||
setTitle(this.captionTxt);
|
setTitle(this.captionTxt);
|
||||||
|
|
||||||
setWidth("100%");
|
setWidth("100%");
|
||||||
add(breadcrumbs, DockPanel.NORTH);
|
add(breadcrumbs, DockPanel.NORTH);
|
||||||
mainVP.add(wsExplorer.getPanel());
|
mainVP.add(wsExplorer.getPanel());
|
||||||
centerScrollable.add(mainVP);
|
centerScrollable.add(mainVP);
|
||||||
add(centerScrollable, DockPanel.CENTER);
|
add(centerScrollable, DockPanel.CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -371,7 +370,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
*
|
*
|
||||||
* @param selected the selected
|
* @param selected the selected
|
||||||
*/
|
*/
|
||||||
private void notifySelectedItem(Item selected){
|
private void notifySelectedItem(Item selected) {
|
||||||
|
|
||||||
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
||||||
worskpaceExplorerNotificationListener.onSelectedItem(selected);
|
worskpaceExplorerNotificationListener.onSelectedItem(selected);
|
||||||
|
@ -381,18 +380,17 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
/**
|
/**
|
||||||
* Notify aborted.
|
* Notify aborted.
|
||||||
*/
|
*/
|
||||||
private void notifyAborted(){
|
private void notifyAborted() {
|
||||||
|
|
||||||
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
||||||
worskpaceExplorerNotificationListener.onAborted();
|
worskpaceExplorerNotificationListener.onAborted();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notify not valid selection.
|
* Notify not valid selection.
|
||||||
*/
|
*/
|
||||||
private void notifyNotValidSelection(){
|
private void notifyNotValidSelection() {
|
||||||
|
|
||||||
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
||||||
worskpaceExplorerNotificationListener.onNotValidSelection();
|
worskpaceExplorerNotificationListener.onNotValidSelection();
|
||||||
|
@ -405,7 +403,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
* @param t the t
|
* @param t the t
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private void notifyFailed(Throwable t){
|
private void notifyFailed(Throwable t) {
|
||||||
|
|
||||||
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
|
||||||
worskpaceExplorerNotificationListener.onFailed(t);
|
worskpaceExplorerNotificationListener.onFailed(t);
|
||||||
|
@ -430,22 +428,44 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
return isSelect;
|
return isSelect;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/**
|
||||||
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#addWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener)
|
* Adds the workspace explorer select notification listener.
|
||||||
|
*
|
||||||
|
* @param handler the handler
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.
|
||||||
|
* WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#
|
||||||
|
* addWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.
|
||||||
|
* wsexplorer.client.notification.WorskpaceExplorerNotification.
|
||||||
|
* WorskpaceExplorerNotificationListener)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void addWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) {
|
public void addWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) {
|
||||||
if(handler!=null)
|
if (handler != null)
|
||||||
listeners.add(handler);
|
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)
|
* Removes the workspace explorer select notification listener.
|
||||||
|
*
|
||||||
|
* @param handler the handler
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.
|
||||||
|
* WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#
|
||||||
|
* removeWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.
|
||||||
|
* wsexplorer.client.notification.WorskpaceExplorerNotification.
|
||||||
|
* WorskpaceExplorerNotificationListener)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void removeWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) {
|
public void removeWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) {
|
||||||
if(handler!=null){
|
if (handler != null) {
|
||||||
if(listeners.contains(handler))
|
if (listeners.contains(handler))
|
||||||
listeners.remove(handler);
|
listeners.remove(handler);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -456,18 +476,19 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
* @param item the item
|
* @param item the item
|
||||||
* @return true, if successful
|
* @return true, if successful
|
||||||
*/
|
*/
|
||||||
public boolean itemIsSelectable(Item item){
|
public boolean itemIsSelectable(Item item) {
|
||||||
GWT.log("Selectable type: "+wsExplorer.getSelectableTypes());
|
GWT.log("Selectable type: " + wsExplorer.getSelectableTypes());
|
||||||
GWT.log("item: "+item);
|
GWT.log("item: " + item);
|
||||||
if (item!=null){
|
if (item != null) {
|
||||||
boolean selectable = wsExplorer.getSelectableTypes().contains(item.getType());
|
boolean selectable = wsExplorer.getSelectableTypes().contains(item.getType());
|
||||||
return selectable?true:false;
|
return selectable ? true : false;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Gets the ws explorer.
|
||||||
|
*
|
||||||
* @return the wsExplorer
|
* @return the wsExplorer
|
||||||
*/
|
*/
|
||||||
public WorkspaceExplorer getWsExplorer() {
|
public WorkspaceExplorer getWsExplorer() {
|
||||||
|
@ -493,11 +514,12 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WindowOpenParameter windowOpenParam) {
|
public void onSuccess(WindowOpenParameter windowOpenParam) {
|
||||||
String params = "?"+windowOpenParam.getParameters();
|
String params = "?" + windowOpenParam.getParameters();
|
||||||
if(params.length()>1)
|
if (params.length() > 1)
|
||||||
params+="&";
|
params += "&";
|
||||||
params+=WorkspaceExplorerAppConstants.REDIRECTONERROR+"="+windowOpenParam.isRedirectOnError();
|
params += WorkspaceExplorerAppConstants.REDIRECTONERROR + "=" + windowOpenParam.isRedirectOnError();
|
||||||
windowOpenParam.getBrowserWindow().setUrl(WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE+params);
|
windowOpenParam.getBrowserWindow()
|
||||||
|
.setUrl(WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE + params);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +1,27 @@
|
||||||
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
|
||||||
|
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.download.DownloadType;
|
import org.gcube.portlets.user.workspaceexplorerapp.client.download.DownloadType;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemInterface;
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
import com.google.gwt.event.shared.GwtEvent;
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class ClickItemEvent.
|
* The Class ClickItemEvent.
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jul 6, 2015
|
||||||
* Jul 6, 2015
|
|
||||||
*/
|
*/
|
||||||
public class DownloadItemEvent extends GwtEvent<DownloadItemEventHandler> {
|
public class DownloadItemEvent extends GwtEvent<DownloadItemEventHandler> {
|
||||||
public static Type<DownloadItemEventHandler> TYPE = new Type<DownloadItemEventHandler>();
|
public static Type<DownloadItemEventHandler> TYPE = new Type<DownloadItemEventHandler>();
|
||||||
private ItemInterface item;
|
private Item item;
|
||||||
private DownloadType type;
|
private DownloadType type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new click item event.
|
* Instantiates a new click item event.
|
||||||
*
|
*
|
||||||
* @param itemDownload the item download
|
* @param itemDownload the item download
|
||||||
* @param type the type
|
* @param type the type
|
||||||
*/
|
*/
|
||||||
public DownloadItemEvent(ItemInterface itemDownload, DownloadType type) {
|
public DownloadItemEvent(Item itemDownload, DownloadType type) {
|
||||||
this.item = itemDownload;
|
this.item = itemDownload;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
@ -36,7 +34,9 @@ public class DownloadItemEvent extends GwtEvent<DownloadItemEventHandler> {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -44,8 +44,12 @@ public class DownloadItemEvent extends GwtEvent<DownloadItemEventHandler> {
|
||||||
return TYPE;
|
return TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.
|
||||||
|
* EventHandler)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void dispatch(DownloadItemEventHandler handler) {
|
protected void dispatch(DownloadItemEventHandler handler) {
|
||||||
|
@ -54,10 +58,10 @@ public class DownloadItemEvent extends GwtEvent<DownloadItemEventHandler> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the item.
|
* Gets the item.
|
||||||
*
|
*
|
||||||
* @return the item
|
* @return the item
|
||||||
*/
|
*/
|
||||||
public ItemInterface getItem() {
|
public Item getItem() {
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ package org.gcube.portlets.user.workspaceexplorerapp.client.grid;
|
||||||
|
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.download.DownloadType;
|
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.event.DownloadItemEvent;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemInterface;
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
|
@ -42,7 +42,7 @@ public class MenuMoreOptionsOnItem extends Composite {
|
||||||
|
|
||||||
private HandlerManager eventBus;
|
private HandlerManager eventBus;
|
||||||
|
|
||||||
private ItemInterface itemToDownload;
|
private Item itemToDownload;
|
||||||
|
|
||||||
private Command commandOnClick;
|
private Command commandOnClick;
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ public class MenuMoreOptionsOnItem extends Composite {
|
||||||
* @param itemToDownload the item to download
|
* @param itemToDownload the item to download
|
||||||
* @param commandOnClick the command on click
|
* @param commandOnClick the command on click
|
||||||
*/
|
*/
|
||||||
public void initOnItem(ItemInterface itemToDownload, Command commandOnClick){
|
public void initOnItem(Item itemToDownload, Command commandOnClick){
|
||||||
this.itemToDownload = itemToDownload;
|
this.itemToDownload = itemToDownload;
|
||||||
this.commandOnClick = commandOnClick;
|
this.commandOnClick = commandOnClick;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,11 +21,18 @@ public interface WorkspaceExplorerAppService extends RemoteService {
|
||||||
/**
|
/**
|
||||||
* Gets the folder.
|
* Gets the folder.
|
||||||
*
|
*
|
||||||
* @param folder the folder @param showableTypes the showable types @param
|
* @param folder the folder @param showableTypes the showable
|
||||||
* purgeEmpyFolders the purge empy folders @param filterCriteria
|
* types @param purgeEmpyFolders the purge empy
|
||||||
* the filter criteria @return the folder @throws
|
* folders @param filterCriteria the filter
|
||||||
* WorkspaceNavigatorServiceException the workspace navigator
|
* criteria @return the folder @throws
|
||||||
* service exception @throws
|
* WorkspaceNavigatorServiceException the workspace
|
||||||
|
* navigator service exception @throws
|
||||||
|
* @param showableTypes the showable types
|
||||||
|
* @param purgeEmpyFolders the purge empy folders
|
||||||
|
* @param filterCriteria the filter criteria
|
||||||
|
* @return the folder
|
||||||
|
* @throws WorkspaceNavigatorServiceException the workspace navigator service
|
||||||
|
* exception
|
||||||
*/
|
*/
|
||||||
Item getFolder(Item folder, List<ItemType> showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria)
|
Item getFolder(Item folder, List<ItemType> showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria)
|
||||||
throws WorkspaceNavigatorServiceException;
|
throws WorkspaceNavigatorServiceException;
|
||||||
|
@ -71,12 +78,12 @@ public interface WorkspaceExplorerAppService extends RemoteService {
|
||||||
/**
|
/**
|
||||||
* Gets the breadcrumbs by item identifier.
|
* Gets the breadcrumbs by item identifier.
|
||||||
*
|
*
|
||||||
* @param itemIdentifier the item identifier
|
* @param itemId the item id
|
||||||
* @param includeItemAsParent the include item as parent
|
|
||||||
* @return the breadcrumbs by item identifier
|
* @return the breadcrumbs by item identifier
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
//List<Item> getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent) throws Exception;
|
// List<Item> getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean
|
||||||
|
// includeItemAsParent) throws Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the public link for item id.
|
* Gets the public link for item id.
|
||||||
|
@ -96,4 +103,13 @@ public interface WorkspaceExplorerAppService extends RemoteService {
|
||||||
*/
|
*/
|
||||||
String getFolderIdFromEncrypted(String encryptedFolderId) throws Exception;
|
String getFolderIdFromEncrypted(String encryptedFolderId) throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the url by id.
|
||||||
|
*
|
||||||
|
* @param itemId the item id
|
||||||
|
* @return the url by id
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
String getUrlById(String itemId) throws Exception;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,12 +64,14 @@ public interface WorkspaceExplorerAppServiceAsync {
|
||||||
/**
|
/**
|
||||||
* Gets the breadcrumbs by item identifier.
|
* Gets the breadcrumbs by item identifier.
|
||||||
*
|
*
|
||||||
* @param itemIdentifier the item identifier
|
* @param showableTypes the showable types
|
||||||
* @param includeItemAsParent the include item as parent
|
* @param purgeEmpyFolders the purge empy folders
|
||||||
* @param asyncCallback the async callback
|
* @param filterCriteria the filter criteria
|
||||||
|
* @param asyncCallback the async callback
|
||||||
* @return the breadcrumbs by item identifier
|
* @return the breadcrumbs by item identifier
|
||||||
*/
|
*/
|
||||||
//public void getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent, AsyncCallback<List<Item>> asyncCallback);
|
// public void getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean
|
||||||
|
// includeItemAsParent, AsyncCallback<List<Item>> asyncCallback);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the my special folder.
|
* Gets the my special folder.
|
||||||
|
@ -95,4 +97,13 @@ public interface WorkspaceExplorerAppServiceAsync {
|
||||||
void getBreadcrumbsByItemIdentifierToParentLimit(String itemIdentifier, String parentLimit,
|
void getBreadcrumbsByItemIdentifierToParentLimit(String itemIdentifier, String parentLimit,
|
||||||
boolean includeItemAsParent, AsyncCallback<List<Item>> callback);
|
boolean includeItemAsParent, AsyncCallback<List<Item>> callback);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the url by id.
|
||||||
|
*
|
||||||
|
* @param itemId the item id
|
||||||
|
* @param callback the callback
|
||||||
|
* @return the url by id
|
||||||
|
*/
|
||||||
|
void getUrlById(String itemId, AsyncCallback<String> callback);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
package org.gcube.portlets.user.workspaceexplorerapp.client.view;
|
package org.gcube.portlets.user.workspaceexplorerapp.client.view;
|
||||||
|
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.MenuMoreOptionsOnItem;
|
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.MenuMoreOptionsOnItem;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemInterface;
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
|
|
||||||
import com.google.gwt.core.shared.GWT;
|
import com.google.gwt.core.shared.GWT;
|
||||||
import com.google.gwt.event.shared.HandlerManager;
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
|
@ -30,7 +30,7 @@ public class PopupContextMenu extends PopupPanel{
|
||||||
* @param eventBus the event bus
|
* @param eventBus the event bus
|
||||||
* @param itemToDownload the item to download
|
* @param itemToDownload the item to download
|
||||||
*/
|
*/
|
||||||
public PopupContextMenu(boolean autohide, HandlerManager eventBus, ItemInterface itemToDownload) {
|
public PopupContextMenu(boolean autohide, HandlerManager eventBus, Item itemToDownload) {
|
||||||
super(autohide);
|
super(autohide);
|
||||||
GWT.log("PopupContextMenu opened");
|
GWT.log("PopupContextMenu opened");
|
||||||
menuOpts = new MenuMoreOptionsOnItem(eventBus);
|
menuOpts = new MenuMoreOptionsOnItem(eventBus);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
package org.gcube.portlets.user.workspaceexplorerapp.client.view;
|
package org.gcube.portlets.user.workspaceexplorerapp.client.view;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -8,6 +7,7 @@ import java.util.Set;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.Util;
|
import org.gcube.portlets.user.workspaceexplorerapp.client.Util;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerApp;
|
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerApp;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerAppConstants;
|
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerAppConstants;
|
||||||
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.LoadFolderEvent;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.event.RootLoadedEvent;
|
import org.gcube.portlets.user.workspaceexplorerapp.client.event.RootLoadedEvent;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.DisplayField;
|
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.DisplayField;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.ItemsTable;
|
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.ItemsTable;
|
||||||
|
@ -17,11 +17,14 @@ import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemType;
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemType;
|
||||||
|
|
||||||
import com.github.gwtbootstrap.client.ui.Alert;
|
import com.github.gwtbootstrap.client.ui.Alert;
|
||||||
|
import com.github.gwtbootstrap.client.ui.Button;
|
||||||
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||||
|
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.dom.client.Style.Unit;
|
import com.google.gwt.dom.client.Style.Unit;
|
||||||
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
|
import com.google.gwt.event.dom.client.ClickHandler;
|
||||||
import com.google.gwt.event.shared.HandlerManager;
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
import com.google.gwt.user.client.Window;
|
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
import com.google.gwt.user.client.ui.HTML;
|
import com.google.gwt.user.client.ui.HTML;
|
||||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||||
|
@ -60,6 +63,7 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
||||||
private ItemsTable itTables;
|
private ItemsTable itTables;
|
||||||
private DisplayField[] displayFields;
|
private DisplayField[] displayFields;
|
||||||
private HandlerManager eventBus;
|
private HandlerManager eventBus;
|
||||||
|
private Item baseFolder;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -100,11 +104,25 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
||||||
*
|
*
|
||||||
* @param html the html
|
* @param html the html
|
||||||
* @param type the type
|
* @param type the type
|
||||||
|
* @param goToFolder the go to folder
|
||||||
*/
|
*/
|
||||||
public void setAlert(String html, AlertType type){
|
public void setAlert(String html, AlertType type, final Item goToFolder){
|
||||||
explorerPanel.clear();
|
explorerPanel.clear();
|
||||||
alert.setHTML(html);
|
alert.setHTML(html);
|
||||||
alert.setType(type);
|
alert.setType(type);
|
||||||
|
|
||||||
|
if(goToFolder!=null) {
|
||||||
|
Button buttGoToHome = new Button("Go to Home");
|
||||||
|
buttGoToHome.setType(ButtonType.LINK);
|
||||||
|
buttGoToHome.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
eventBus.fireEvent(new LoadFolderEvent(goToFolder));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
alert.add(buttGoToHome);
|
||||||
|
}
|
||||||
alert.setClose(false);
|
alert.setClose(false);
|
||||||
explorerPanel.add(alert);
|
explorerPanel.add(alert);
|
||||||
}
|
}
|
||||||
|
@ -140,9 +158,9 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
||||||
WorkspaceExplorerAppConstants.workspaceNavigatorService.getRoot(showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback<Item>() {
|
WorkspaceExplorerAppConstants.workspaceNavigatorService.getRoot(showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback<Item>() {
|
||||||
|
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
Window.alert(caught.getMessage());
|
//Window.alert(caught.getMessage());
|
||||||
setAlert(caught.getMessage(), AlertType.ERROR);
|
|
||||||
GWT.log("Error loading workspace tree from server",caught);
|
GWT.log("Error loading workspace tree from server",caught);
|
||||||
|
setAlert(caught.getMessage(), AlertType.ERROR, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onSuccess(Item item) {
|
public void onSuccess(Item item) {
|
||||||
|
@ -186,9 +204,9 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
Window.alert(caught.getMessage());
|
//Window.alert(caught.getMessage());
|
||||||
setAlert(caught.getMessage(), AlertType.ERROR);
|
|
||||||
GWT.log("Error loading workspace folder from server",caught);
|
GWT.log("Error loading workspace folder from server",caught);
|
||||||
|
setAlert(caught.getMessage(), AlertType.ERROR, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -226,9 +244,10 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
Window.alert(caught.getMessage());
|
//Window.alert(caught.getMessage());
|
||||||
setAlert(caught.getMessage(), AlertType.ERROR);
|
|
||||||
GWT.log("Error loading workspace folder from server",caught);
|
GWT.log("Error loading workspace folder from server",caught);
|
||||||
|
setAlert(caught.getMessage(), AlertType.ERROR, null);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -267,7 +286,18 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
||||||
// explorerPanel.add(itTables.getCellTable());
|
// explorerPanel.add(itTables.getCellTable());
|
||||||
GWT.log("added item: "+item.getName() +", to Explorer");
|
GWT.log("added item: "+item.getName() +", to Explorer");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the base folder.
|
||||||
|
*
|
||||||
|
* @param item the new base folder
|
||||||
|
*/
|
||||||
|
public void setBaseFolder(Item baseFolder) {
|
||||||
|
this.baseFolder = baseFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the panel.
|
* Gets the panel.
|
||||||
*
|
*
|
||||||
|
@ -358,4 +388,5 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
||||||
this.showableTypes.clear();
|
this.showableTypes.clear();
|
||||||
if (showableTypes!=null) for (ItemType type:showableTypes) this.showableTypes.add(type);
|
if (showableTypes!=null) for (ItemType type:showableTypes) this.showableTypes.add(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@ import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
import org.gcube.common.storagehubwrapper.server.tohl.Workspace;
|
import org.gcube.common.storagehubwrapper.server.tohl.Workspace;
|
||||||
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder;
|
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder;
|
||||||
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
|
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
|
||||||
|
@ -33,6 +32,8 @@ import org.gcube.portlets.user.workspaceexplorerapp.server.workspace.AllowedMime
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.server.workspace.MimeTypeUtility;
|
import org.gcube.portlets.user.workspaceexplorerapp.server.workspace.MimeTypeUtility;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.server.workspace.WsInstanceUtil;
|
import org.gcube.portlets.user.workspaceexplorerapp.server.workspace.WsInstanceUtil;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.shared.HandlerResultMessage;
|
import org.gcube.portlets.user.workspaceexplorerapp.shared.HandlerResultMessage;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class DownloadServlet.
|
* The Class DownloadServlet.
|
||||||
|
@ -48,7 +49,7 @@ public class DownloadWorkspaceExplorerServlet extends HttpServlet{
|
||||||
|
|
||||||
private static final long serialVersionUID = -8423345575690165644L;
|
private static final long serialVersionUID = -8423345575690165644L;
|
||||||
|
|
||||||
protected static Logger logger = Logger.getLogger(DownloadWorkspaceExplorerServlet.class);
|
protected static Logger logger = LoggerFactory.getLogger(DownloadWorkspaceExplorerServlet.class);
|
||||||
public static final String ERROR_ITEM_DOES_NOT_EXIST = "Item does not exist. It may have been deleted by another user";
|
public static final String ERROR_ITEM_DOES_NOT_EXIST = "Item does not exist. It may have been deleted by another user";
|
||||||
|
|
||||||
public static final String REDIRECTONERROR = "redirectonerror";
|
public static final String REDIRECTONERROR = "redirectonerror";
|
||||||
|
|
|
@ -15,6 +15,8 @@ import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder;
|
||||||
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
|
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
|
||||||
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItemType;
|
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItemType;
|
||||||
import org.gcube.common.storagehubwrapper.shared.tohl.items.FileItem;
|
import org.gcube.common.storagehubwrapper.shared.tohl.items.FileItem;
|
||||||
|
import org.gcube.common.storagehubwrapper.shared.tohl.items.URLFileItem;
|
||||||
|
import org.gcube.common.storagehubwrapper.shared.tohl.items.URLItem;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerAppConstants;
|
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerAppConstants;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.client.rpc.WorkspaceExplorerAppService;
|
import org.gcube.portlets.user.workspaceexplorerapp.client.rpc.WorkspaceExplorerAppService;
|
||||||
import org.gcube.portlets.user.workspaceexplorerapp.server.workspace.ItemBuilder;
|
import org.gcube.portlets.user.workspaceexplorerapp.server.workspace.ItemBuilder;
|
||||||
|
@ -145,6 +147,13 @@ public class WorkspaceExplorerAppServiceImpl extends RemoteServiceServlet implem
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during item retrieving", e);
|
logger.error("Error during item retrieving", e);
|
||||||
|
|
||||||
|
if(e.getMessage()!=null && e.getMessage().startsWith("Insufficent Privileges")) {
|
||||||
|
String erroMsg = item.getName()!=null?"The folder '"+item.getName()+"'":"This folder";
|
||||||
|
erroMsg+= " is not accessible as an anonymous user!";
|
||||||
|
throw new WorkspaceNavigatorServiceException(erroMsg);
|
||||||
|
}
|
||||||
|
|
||||||
throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get folder. Does it still exist?");
|
throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get folder. Does it still exist?");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,10 +206,11 @@ public class WorkspaceExplorerAppServiceImpl extends RemoteServiceServlet implem
|
||||||
@Override
|
@Override
|
||||||
public Item getMySpecialFolder(List<ItemType> showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria) throws WorkspaceNavigatorServiceException {
|
public Item getMySpecialFolder(List<ItemType> showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria) throws WorkspaceNavigatorServiceException {
|
||||||
logger.info("called getMySpecialFolder showableTypes: "+showableTypes+" purgeEmpyFolders: "+purgeEmpyFolders+" filterCriteria: "+filterCriteria);
|
logger.info("called getMySpecialFolder showableTypes: "+showableTypes+" purgeEmpyFolders: "+purgeEmpyFolders+" filterCriteria: "+filterCriteria);
|
||||||
|
throw new WorkspaceNavigatorServiceException("The method getMySpecialFolder is no longer maintained");
|
||||||
|
|
||||||
|
/*try {
|
||||||
|
|
||||||
try {
|
Workspace workspace = getWorkspace()
|
||||||
|
|
||||||
Workspace workspace = getWorkspace();
|
|
||||||
WorkspaceItem folder = workspace.getMySpecialFolders();
|
WorkspaceItem folder = workspace.getMySpecialFolders();
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
|
|
||||||
|
@ -229,7 +239,7 @@ public class WorkspaceExplorerAppServiceImpl extends RemoteServiceServlet implem
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during special folders retrieving", e);
|
logger.error("Error during special folders retrieving", e);
|
||||||
throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get My Special Folder");
|
throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get My Special Folder");
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -357,7 +367,7 @@ public class WorkspaceExplorerAppServiceImpl extends RemoteServiceServlet implem
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error in get List Parents By Item Identifier ", e);
|
logger.error("Error in get List Parents By Item Identifier ", e);
|
||||||
throw new Exception("Sorry, an error occurred during path retrieving!");
|
throw new Exception("Sorry, I'm not able to load the location of the folder. Does it still exist?");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -453,5 +463,34 @@ public class WorkspaceExplorerAppServiceImpl extends RemoteServiceServlet implem
|
||||||
throw new Exception("Sorry, an error occurred when decrypting the folder id. Try again or contact the support");
|
throw new Exception("Sorry, an error occurred when decrypting the folder id. Try again or contact the support");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUrlById(String itemId) throws Exception {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
if (itemId == null)
|
||||||
|
throw new Exception("Workspace itemId is null");
|
||||||
|
|
||||||
|
logger.debug("get URL by id: " + itemId);
|
||||||
|
Workspace workspace = getWorkspace();
|
||||||
|
WorkspaceItem wsItem = workspace.getItemForExplorer(itemId, false, false, false);
|
||||||
|
// workspace
|
||||||
|
|
||||||
|
if (wsItem instanceof org.gcube.common.storagehubwrapper.shared.tohl.impl.URLFileItem) {
|
||||||
|
URLFileItem fileItem = (URLFileItem) wsItem;
|
||||||
|
return WsInstanceUtil.getUrl(workspace, fileItem);
|
||||||
|
} else if (wsItem instanceof URLItem) {
|
||||||
|
URLItem urlFile = (URLItem) wsItem;
|
||||||
|
return urlFile.getValue().toString();
|
||||||
|
} else {
|
||||||
|
throw new Exception("The itemId " + itemId + " is not a URLFileItem or a URLItem");
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Error occurred in getUrlById: ", e);
|
||||||
|
throw new Exception(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -223,6 +223,8 @@ public class ItemBuilder {
|
||||||
|
|
||||||
else
|
else
|
||||||
return ItemType.UNKNOWN_TYPE;
|
return ItemType.UNKNOWN_TYPE;
|
||||||
|
case URL_ITEM:
|
||||||
|
return ItemType.URL_DOCUMENT;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -3,18 +3,24 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.portlets.user.workspaceexplorerapp.server.workspace;
|
package org.gcube.portlets.user.workspaceexplorerapp.server.workspace;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
import org.gcube.common.storagehubwrapper.server.StorageHubWrapper;
|
import org.gcube.common.storagehubwrapper.server.StorageHubWrapper;
|
||||||
|
import org.gcube.common.storagehubwrapper.server.tohl.Workspace;
|
||||||
|
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.InternalErrorException;
|
||||||
|
import org.gcube.common.storagehubwrapper.shared.tohl.items.URLFileItem;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class WsUtil.
|
* The Class WsUtil.
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa at ISTI-CNR Pisa (Italy)
|
* @author Francesco Mangiacrapa at ISTI-CNR Pisa (Italy) Apr 9, 2020
|
||||||
* Apr 9, 2020
|
|
||||||
*/
|
*/
|
||||||
public class WsInstanceUtil {
|
public class WsInstanceUtil {
|
||||||
|
|
||||||
|
@ -35,18 +41,18 @@ public class WsInstanceUtil {
|
||||||
try {
|
try {
|
||||||
String scope = getScope(httpSession);
|
String scope = getScope(httpSession);
|
||||||
String applicationToken = getApplicationToken(httpSession);
|
String applicationToken = getApplicationToken(httpSession);
|
||||||
|
|
||||||
if(applicationToken==null || applicationToken.isEmpty()) {
|
if (applicationToken == null || applicationToken.isEmpty()) {
|
||||||
throw new Exception("No Application Token found. Impossible to istance the SHUB");
|
throw new Exception("No Application Token found. Impossible to istance the SHUB");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new StorageHubWrapper(scope, applicationToken, false, false, false);
|
return new StorageHubWrapper(scope, applicationToken, false, false, false);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error when instancing the storageHub wrapper", e);
|
logger.error("Error when instancing the storageHub wrapper", e);
|
||||||
throw new Exception("Error on inizializing the StorageHub wrapper. Please contact the support!");
|
throw new Exception("Error on inizializing the StorageHub wrapper. Please contact the support!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the workpace.
|
* Gets the workpace.
|
||||||
*
|
*
|
||||||
|
@ -54,7 +60,8 @@ public class WsInstanceUtil {
|
||||||
* @return the workpace
|
* @return the workpace
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
public static org.gcube.common.storagehubwrapper.server.tohl.Workspace getWorkspace(HttpSession httpSession) throws Exception {
|
public static org.gcube.common.storagehubwrapper.server.tohl.Workspace getWorkspace(HttpSession httpSession)
|
||||||
|
throws Exception {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
StorageHubWrapper wrapper = getStorageHubWrapper(httpSession);
|
StorageHubWrapper wrapper = getStorageHubWrapper(httpSession);
|
||||||
|
@ -89,7 +96,6 @@ public class WsInstanceUtil {
|
||||||
return scope;
|
return scope;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the application token.
|
* Gets the application token.
|
||||||
*
|
*
|
||||||
|
@ -102,17 +108,54 @@ public class WsInstanceUtil {
|
||||||
String appTokenEnvVarName = null;
|
String appTokenEnvVarName = null;
|
||||||
try {
|
try {
|
||||||
logger.info("Reading " + ENVIRONMENT_VARIABLE_TOKEN_NAME + " from web.xml context");
|
logger.info("Reading " + ENVIRONMENT_VARIABLE_TOKEN_NAME + " from web.xml context");
|
||||||
appTokenEnvVarName = httpSession.getServletContext()
|
appTokenEnvVarName = httpSession.getServletContext().getInitParameter(ENVIRONMENT_VARIABLE_TOKEN_NAME);
|
||||||
.getInitParameter(ENVIRONMENT_VARIABLE_TOKEN_NAME);
|
|
||||||
logger.info("Found param-value '" + appTokenEnvVarName
|
logger.info("Found param-value '" + appTokenEnvVarName
|
||||||
+ "' from web context, reading its value from ENVIRONMENT");
|
+ "' from web context, reading its value from ENVIRONMENT");
|
||||||
appToken = System.getenv(appTokenEnvVarName);
|
appToken = System.getenv(appTokenEnvVarName);
|
||||||
logger.info("Value of " + appTokenEnvVarName + " from ENVIRONMENT is: " + appToken);
|
logger.info("Value of " + appTokenEnvVarName + " from ENVIRONMENT is: " + appToken);
|
||||||
|
|
||||||
}catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error on reading the ENV VARIABLE '"+appTokenEnvVarName+"' from ENVIRONMENT");
|
logger.error("Error on reading the ENV VARIABLE '" + appTokenEnvVarName + "' from ENVIRONMENT");
|
||||||
}
|
}
|
||||||
|
|
||||||
return appToken;
|
return appToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the url.
|
||||||
|
*
|
||||||
|
* @param workspace the workspace
|
||||||
|
* @param fileItem the file item
|
||||||
|
* @return the url
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
public static String getUrl(Workspace workspace, URLFileItem fileItem) throws Exception {
|
||||||
|
try {
|
||||||
|
return readStreamAsString(
|
||||||
|
workspace.downloadFile(fileItem.getId(), fileItem.getName(), null, null).getStream());
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error("GET URL error for file: " + fileItem, e);
|
||||||
|
throw new InternalErrorException(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read the entire input stream as string. The system encoding is used.
|
||||||
|
*
|
||||||
|
* @param is the input stream.
|
||||||
|
* @return the read string.
|
||||||
|
* @throws IOException Signals that an I/O exception has occurred.
|
||||||
|
*/
|
||||||
|
public static String readStreamAsString(InputStream is) throws java.io.IOException {
|
||||||
|
StringBuilder sb = new StringBuilder(1000);
|
||||||
|
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
|
||||||
|
char[] buf = new char[1024];
|
||||||
|
int numRead = 0;
|
||||||
|
while ((numRead = reader.read(buf)) != -1) {
|
||||||
|
sb.append(buf, 0, numRead);
|
||||||
|
}
|
||||||
|
reader.close();
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
/resources/
|
|
@ -1,19 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
||||||
* Sep 16, 2016
|
|
||||||
*/
|
|
||||||
public class TestFolderIDDecrypt {
|
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package org.gcube.portlets.user.workspaceexplorerapp;
|
||||||
|
|
||||||
|
public class WorkspaceExplorerAppTests {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue