256: Workspace explorer
Task-Url: https://support.d4science.org/issues/256 Added alerts and ItemCategory git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@115640 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
c8db931eac
commit
fffde66498
|
@ -1,5 +1,11 @@
|
|||
package org.gcube.portlets.widgets.wsexplorer.client;
|
||||
|
||||
/**
|
||||
* The Class WorkspaceExplorerConstants.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Jun 30, 2015
|
||||
*/
|
||||
public class WorkspaceExplorerConstants {
|
||||
public static final String SPECIAL_FOLDERS_LABEL = "MySpecialFolders";
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.util.List;
|
|||
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.WorkspaceNavigatorServiceException;
|
||||
|
||||
|
@ -65,4 +66,11 @@ public interface WorkspaceExplorerService extends RemoteService {
|
|||
Item getMySpecialFolder(List<ItemType> showableTypes,
|
||||
boolean purgeEmpyFolders, FilterCriteria filterCriteria)
|
||||
throws WorkspaceNavigatorServiceException;
|
||||
|
||||
/**
|
||||
* @param category
|
||||
* @return
|
||||
* @throws WorkspaceNavigatorServiceException
|
||||
*/
|
||||
Item getItemByCategory(ItemCategory category)throws WorkspaceNavigatorServiceException;
|
||||
}
|
||||
|
|
|
@ -7,13 +7,15 @@ import java.util.List;
|
|||
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* The Interface WorkspaceExplorerServiceAsync.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Jun 24, 2015
|
||||
*/
|
||||
|
@ -76,8 +78,23 @@ public interface WorkspaceExplorerServiceAsync {
|
|||
boolean includeItemAsParent, AsyncCallback<List<Item>> asyncCallback);
|
||||
|
||||
/**
|
||||
* @param asyncCallback
|
||||
* Gets the my special folder.
|
||||
*
|
||||
* @param showableTypes the showable types
|
||||
* @param purgeEmpyFolders the purge empy folders
|
||||
* @param filterCriteria the filter criteria
|
||||
* @param asyncCallback the async callback
|
||||
* @return the my special folder
|
||||
*/
|
||||
public void getMySpecialFolder(List<ItemType> showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria, AsyncCallback<Item> asyncCallback);
|
||||
|
||||
/**
|
||||
* Gets the item by category.
|
||||
*
|
||||
* @param category the category
|
||||
* @param asyncCallback the async callback
|
||||
* @return the item by category
|
||||
*/
|
||||
public void getItemByCategory(ItemCategory category, AsyncCallback<Item> asyncCallback);
|
||||
|
||||
}
|
||||
|
|
|
@ -8,6 +8,8 @@ import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
|
|||
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadMySpecialFolderEvent;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadRootEvent;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.resources.WorkspaceExplorerResources;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.NavWidget;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
|
@ -16,6 +18,7 @@ import com.google.gwt.event.dom.client.ClickEvent;
|
|||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
|
@ -50,10 +53,24 @@ public class Navigation extends Composite{
|
|||
initWidget(uiBinder.createAndBindUi(this));
|
||||
getElement().getStyle().setMarginLeft(5.0, Unit.PX);
|
||||
home.setActive(true);
|
||||
home.setText(WorkspaceExplorerConstants.HOME_LABEL);
|
||||
|
||||
WorkspaceExplorerController.workspaceNavigatorService.getItemByCategory(ItemCategory.HOME, new AsyncCallback<Item>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(Item result) {
|
||||
home.setText(result.getName());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
GWT.log(caught.getMessage());
|
||||
home.setText(WorkspaceExplorerConstants.HOME_LABEL);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
home.setBaseIcon(WorkspaceExplorerResources.CustomIconType.home);
|
||||
|
||||
|
||||
home.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
|
@ -63,9 +80,24 @@ public class Navigation extends Composite{
|
|||
});
|
||||
|
||||
vre_folder.setActive(true);
|
||||
vre_folder.setText(WorkspaceExplorerConstants.VRE_FOLDERS_LABEL);
|
||||
vre_folder.setBaseIcon(WorkspaceExplorerResources.CustomIconType.vre_folder);
|
||||
|
||||
WorkspaceExplorerController.workspaceNavigatorService.getItemByCategory(ItemCategory.VRE_FOLDER, new AsyncCallback<Item>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(Item result) {
|
||||
vre_folder.setText(result.getName());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
GWT.log(caught.getMessage());
|
||||
vre_folder.setText(WorkspaceExplorerConstants.VRE_FOLDERS_LABEL);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
vre_folder.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!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:b="urn:import:com.github.gwtbootstrap.client.ui">
|
||||
<g:FlowPanel>
|
||||
<g:FlowPanel ui:field="navigation">
|
||||
<b:NavWidget ui:field="home">
|
||||
</b:NavWidget>
|
||||
<b:NavWidget ui:field="vre_folder">
|
||||
|
|
|
@ -13,8 +13,11 @@ import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
|
|||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.Alert;
|
||||
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
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;
|
||||
|
@ -41,6 +44,8 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
|||
loading.getElement().getStyle().setPaddingLeft(5.0, Unit.PX);
|
||||
LOADING_PANEL.add(loading);
|
||||
}
|
||||
|
||||
protected Alert alert = new Alert();
|
||||
protected List<ItemType> selectableTypes = new ArrayList<ItemType>();
|
||||
protected List<ItemType> showableTypes = new ArrayList<ItemType>();
|
||||
protected List<String> allowedMimeTypes = new ArrayList<String>();
|
||||
|
@ -69,6 +74,14 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
|||
explorerPanel = new ScrollPanel();
|
||||
|
||||
}
|
||||
|
||||
protected void setAlert(String html, AlertType type){
|
||||
explorerPanel.clear();
|
||||
alert.setHTML(html);
|
||||
alert.setType(type);
|
||||
alert.setClose(false);
|
||||
explorerPanel.add(alert);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the panel in loading mode.
|
||||
|
@ -103,6 +116,8 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
|||
WorkspaceExplorerController.workspaceNavigatorService.getRoot(showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback<Item>() {
|
||||
|
||||
public void onFailure(Throwable caught) {
|
||||
Window.alert(caught.getMessage());
|
||||
setAlert(caught.getMessage(), AlertType.ERROR);
|
||||
GWT.log("Error loading workspace tree from server",caught);
|
||||
}
|
||||
|
||||
|
@ -140,8 +155,9 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
|||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
GWT.log("Error loading workspace folder from server",
|
||||
caught);
|
||||
Window.alert(caught.getMessage());
|
||||
setAlert(caught.getMessage(), AlertType.ERROR);
|
||||
GWT.log("Error loading workspace folder from server",caught);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -177,8 +193,9 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
|
|||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
GWT.log("Error loading workspace folder from server",
|
||||
caught);
|
||||
Window.alert(caught.getMessage());
|
||||
setAlert(caught.getMessage(), AlertType.ERROR);
|
||||
GWT.log("Error loading workspace folder from server",caught);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -20,6 +20,7 @@ import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
|||
import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.WorkspaceNavigatorServiceException;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -100,40 +101,29 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
try {
|
||||
|
||||
Workspace workspace = getWorkspace();
|
||||
|
||||
_log.trace("Start getRoot...");
|
||||
|
||||
// WorkspaceFolder specials = workspace.getMySpecialFolders();
|
||||
|
||||
WorkspaceItem root = workspace.getRoot();
|
||||
|
||||
_log.trace("GetRoot - Replyiing root");
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
_log.trace("start time - " + startTime);
|
||||
|
||||
Item rootItem = ItemBuilder.getItem(null, root, showableTypes, filterCriteria, true);
|
||||
rootItem.setName(WorkspaceExplorerConstants.HOME_LABEL);
|
||||
|
||||
/* SPECIAL FOLDERS
|
||||
Item specialFolders = ItemBuilder.getItem(null, specials, showableTypes, filterCriteria, 2);
|
||||
specialFolders.setShared(true);
|
||||
rootItem.addChild(specialFolders);
|
||||
*/
|
||||
if(rootItem==null)
|
||||
_log.trace("############ rootItem null");
|
||||
|
||||
_log.trace("Only showable types:");
|
||||
//printName("", rootItem);
|
||||
|
||||
if (purgeEmpyFolders) rootItem = ItemBuilder.purgeEmptyFolders(rootItem);
|
||||
|
||||
_log.trace("Returning:");
|
||||
|
||||
Long endTime = System.currentTimeMillis() - startTime;
|
||||
String time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime));
|
||||
_log.trace("end time - " + time);
|
||||
|
||||
//printName("", rootItem);
|
||||
Collections.sort(rootItem.getChildren(), new ItemComparator());
|
||||
_log.info("Returning children size: "+rootItem.getChildren().size());
|
||||
|
||||
|
@ -141,7 +131,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
|
||||
} catch (Exception e) {
|
||||
_log.error("Error during root retrieving", e);
|
||||
throw new WorkspaceNavigatorServiceException(e.getMessage());
|
||||
throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get root");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -158,33 +148,53 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
WorkspaceItem folder = workspace.getItem(folderId);
|
||||
|
||||
_log.trace("GetFolder - Replyiing folder");
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
_log.trace("start time - " + startTime);
|
||||
|
||||
|
||||
Item itemFolder = ItemBuilder.getItem(null, folder, showableTypes, filterCriteria, true);
|
||||
|
||||
_log.trace("Only showable types:");
|
||||
//printName("", folderItem);
|
||||
|
||||
|
||||
if (purgeEmpyFolders) itemFolder = ItemBuilder.purgeEmptyFolders(itemFolder);
|
||||
|
||||
_log.trace("Returning:");
|
||||
|
||||
Long endTime = System.currentTimeMillis() - startTime;
|
||||
String time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime));
|
||||
_log.trace("end time - " + time);
|
||||
|
||||
//printName("", folderItem);
|
||||
|
||||
Collections.sort(itemFolder.getChildren(), new ItemComparator());
|
||||
|
||||
return itemFolder;
|
||||
|
||||
} catch (Exception e) {
|
||||
_log.error("Error during folder retrieving", e);
|
||||
throw new WorkspaceNavigatorServiceException(e.getMessage());
|
||||
throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get folder");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemByCategory(ItemCategory category) throws WorkspaceNavigatorServiceException{
|
||||
_log.trace("GetItemByCategory category: "+category);
|
||||
try {
|
||||
Workspace workspace = getWorkspace();
|
||||
Item item = null;
|
||||
|
||||
switch(category){
|
||||
case HOME:{
|
||||
WorkspaceItem root = workspace.getRoot();
|
||||
ASLSession session = getASLSession(this.getThreadLocalRequest().getSession());
|
||||
item = new Item(null, root.getId(), session.getUsername()+"'s", ItemType.ROOT, root.getPath(), root.getOwner().getPortalLogin(), root.isFolder());
|
||||
break;
|
||||
}
|
||||
case VRE_FOLDER:{
|
||||
WorkspaceItem folder = workspace.getMySpecialFolders();
|
||||
item = new Item(null, folder.getId(), WorkspaceExplorerConstants.VRE_FOLDERS_LABEL, ItemType.ROOT, folder.getPath(), folder.getOwner().getPortalLogin(), folder.isFolder());
|
||||
break;
|
||||
}
|
||||
}
|
||||
return item;
|
||||
} catch (Exception e) {
|
||||
_log.error("Error during get item by category", e);
|
||||
throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get item by category");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -229,7 +239,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
|
||||
} catch (Exception e) {
|
||||
_log.error("Error during special folders retrieving", e);
|
||||
throw new WorkspaceNavigatorServiceException(e.getMessage());
|
||||
throw new WorkspaceNavigatorServiceException("Sorry, an error occurred when performing get My Special Folder");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.widgets.wsexplorer.shared;
|
||||
|
||||
|
||||
/**
|
||||
* The Enum ItemCategory.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Jun 30, 2015
|
||||
*/
|
||||
public enum ItemCategory {
|
||||
|
||||
HOME,
|
||||
VRE_FOLDER;
|
||||
}
|
Loading…
Reference in New Issue