diff --git a/.classpath b/.classpath index 68de2d8..25b76d4 100644 --- a/.classpath +++ b/.classpath @@ -1,12 +1,12 @@ - + - + @@ -35,5 +35,5 @@ - + diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs index 7841b10..f4c7db0 100644 --- a/.settings/com.gwtplugins.gdt.eclipse.core.prefs +++ b/.settings/com.gwtplugins.gdt.eclipse.core.prefs @@ -1,6 +1,6 @@ eclipse.preferences.version=1 jarsExcludedFromWebInfLib= -lastWarOutDir=/home/francesco/git/workspace-explorer-app/target/workspace-explorer-app-1.3.1-SNAPSHOT +lastWarOutDir=/home/francesco-mangiacrapa/git/workspace-explorer-app/target/workspace-explorer-app-1.3.1 launchConfigExternalUrlPrefix= warSrcDir=src/main/webapp warSrcDirIsOutput=false diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 936a5fc..d36c6a2 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,5 @@ - + diff --git a/pom.xml b/pom.xml index 9c85a60..eec6cff 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.portlets.user workspace-explorer-app - 1.3.1 + 1.3.1-SNAPSHOT war @@ -118,7 +118,7 @@ org.gcube.common storagehub-client-wrapper - [1.0.0, 2.0.0-SNAPSHOT) + [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT) compile diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceExplorerAppMainPanel.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceExplorerAppMainPanel.java index dd9b1a0..3fb381d 100644 --- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceExplorerAppMainPanel.java +++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceExplorerAppMainPanel.java @@ -8,6 +8,7 @@ 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.event.LoadFolderEvent; import org.gcube.portlets.user.workspaceexplorerapp.client.grid.DisplayField; import com.google.gwt.core.client.GWT; @@ -64,6 +65,9 @@ public class WorkspaceExplorerAppMainPanel extends Composite { @UiField MaterialNavSection we_nav_right; + @UiField + MaterialLink home_we; + @UiField MaterialLink download_we; @@ -116,6 +120,18 @@ public class WorkspaceExplorerAppMainPanel extends Composite { }); 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() { /* (non-Javadoc) diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceExplorerAppMainPanel.ui.xml b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceExplorerAppMainPanel.ui.xml index 8fee8c6..c16cbd0 100644 --- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceExplorerAppMainPanel.ui.xml +++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceExplorerAppMainPanel.ui.xml @@ -63,6 +63,8 @@ + () { - - @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"); - - } - });*/ } } }); @@ -311,12 +276,17 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor GWT.log("Reload Parent Breadcrumb: [Item id: "+itemIdentifier+"]"); - WorkspaceExplorerAppConstants.workspaceNavigatorService.getBreadcrumbsByItemIdentifierToParentLimit(itemIdentifier, folderId, includeItemAsParent, new AsyncCallback>() { + WorkspaceExplorerAppConstants.workspaceNavigatorService.getBreadcrumbsByItemIdentifierToParentLimit(itemIdentifier, baseFolder.getId(), includeItemAsParent, new AsyncCallback>() { @Override public void onFailure(Throwable caught) { 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; + + //wsExplorer.setAlert(caught.getMessage(), AlertType.ERROR, goToBaseFolder); } @Override @@ -329,21 +299,14 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor }); } - /** * Refresh root folder view. */ public void refreshRootFolderView(){ - Item item = new Item(folderId, folderName, true); - eventBus.fireEvent(new LoadFolderEvent(item)); + //Item item = new Item(baseFolder.getId(), folderName, true); + eventBus.fireEvent(new LoadFolderEvent(baseFolder)); } - -// /** -// * Clear more info. -// */ -// private void clearMoreInfo(){ -// southPanel.clear(); -// } + /** * Inits the panel. diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/view/WorkspaceExplorer.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/view/WorkspaceExplorer.java index b311c33..e852188 100644 --- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/view/WorkspaceExplorer.java +++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/view/WorkspaceExplorer.java @@ -1,5 +1,4 @@ package org.gcube.portlets.user.workspaceexplorerapp.client.view; - import java.util.ArrayList; import java.util.Arrays; 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.WorkspaceExplorerApp; 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.grid.DisplayField; 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 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.ButtonType; import com.google.gwt.core.client.GWT; 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.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HorizontalPanel; @@ -60,6 +63,7 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ private ItemsTable itTables; private DisplayField[] displayFields; private HandlerManager eventBus; + private Item baseFolder; /** @@ -100,11 +104,25 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ * * @param html the html * @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(); alert.setHTML(html); 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); explorerPanel.add(alert); } @@ -140,9 +158,9 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ WorkspaceExplorerAppConstants.workspaceNavigatorService.getRoot(showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback() { public void onFailure(Throwable caught) { - Window.alert(caught.getMessage()); - setAlert(caught.getMessage(), AlertType.ERROR); + //Window.alert(caught.getMessage()); GWT.log("Error loading workspace tree from server",caught); + setAlert(caught.getMessage(), AlertType.ERROR, null); } public void onSuccess(Item item) { @@ -186,9 +204,9 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ @Override public void onFailure(Throwable caught) { - Window.alert(caught.getMessage()); - setAlert(caught.getMessage(), AlertType.ERROR); + //Window.alert(caught.getMessage()); GWT.log("Error loading workspace folder from server",caught); + setAlert(caught.getMessage(), AlertType.ERROR, null); } @Override @@ -226,9 +244,10 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ @Override public void onFailure(Throwable caught) { - Window.alert(caught.getMessage()); - setAlert(caught.getMessage(), AlertType.ERROR); + //Window.alert(caught.getMessage()); GWT.log("Error loading workspace folder from server",caught); + setAlert(caught.getMessage(), AlertType.ERROR, null); + } @Override @@ -267,7 +286,18 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ // explorerPanel.add(itTables.getCellTable()); 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. * @@ -358,4 +388,5 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{ this.showableTypes.clear(); if (showableTypes!=null) for (ItemType type:showableTypes) this.showableTypes.add(type); } + } diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/WorkspaceExplorerAppServiceImpl.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/WorkspaceExplorerAppServiceImpl.java index 499d94c..62cf24a 100644 --- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/WorkspaceExplorerAppServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/WorkspaceExplorerAppServiceImpl.java @@ -145,6 +145,13 @@ public class WorkspaceExplorerAppServiceImpl extends RemoteServiceServlet implem } catch (Exception 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?"); } @@ -358,7 +365,7 @@ public class WorkspaceExplorerAppServiceImpl extends RemoteServiceServlet implem } catch (Exception 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?"); } } diff --git a/src/test/.gitignore b/src/test/.gitignore new file mode 100644 index 0000000..cb6eb2c --- /dev/null +++ b/src/test/.gitignore @@ -0,0 +1 @@ +/resources/