256: Workspace explorer
Task-Url: https://support.d4science.org/issues/256 Added LoadMySpecialFolder git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@115555 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
40a4f9c4d0
commit
bebfa3e47d
|
@ -7,6 +7,8 @@ import java.util.List;
|
||||||
|
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadFolderEvent;
|
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadFolderEvent;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadFolderEventHandler;
|
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadFolderEventHandler;
|
||||||
|
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadMySpecialFolderEvent;
|
||||||
|
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadMySpecialFolderEventHandler;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadRootEvent;
|
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadRootEvent;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadRootEventHandler;
|
import org.gcube.portlets.widgets.wsexplorer.client.event.LoadRootEventHandler;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService;
|
import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService;
|
||||||
|
@ -21,8 +23,10 @@ import com.google.gwt.event.shared.EventHandler;
|
||||||
import com.google.gwt.event.shared.HandlerManager;
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* The Class WorkspaceExplorerController.
|
||||||
|
*
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
* Jun 25, 2015
|
* Jun 25, 2015
|
||||||
*/
|
*/
|
||||||
|
@ -35,11 +39,17 @@ public class WorkspaceExplorerController implements EventHandler{
|
||||||
private Navigation navigation = new Navigation();
|
private Navigation navigation = new Navigation();
|
||||||
public static final WorkspaceExplorerServiceAsync workspaceNavigatorService = GWT.create(WorkspaceExplorerService.class);
|
public static final WorkspaceExplorerServiceAsync workspaceNavigatorService = GWT.create(WorkspaceExplorerService.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new workspace explorer controller.
|
||||||
|
*/
|
||||||
public WorkspaceExplorerController(){
|
public WorkspaceExplorerController(){
|
||||||
bindEvents();
|
bindEvents();
|
||||||
workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getExplorerPanel(), breadcrumbs, navigation);
|
workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getExplorerPanel(), breadcrumbs, navigation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bind events.
|
||||||
|
*/
|
||||||
private void bindEvents() {
|
private void bindEvents() {
|
||||||
|
|
||||||
eventBus.addHandler(LoadFolderEvent.TYPE, new LoadFolderEventHandler() {
|
eventBus.addHandler(LoadFolderEvent.TYPE, new LoadFolderEventHandler() {
|
||||||
|
@ -47,7 +57,7 @@ public class WorkspaceExplorerController implements EventHandler{
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFolder(LoadFolderEvent loadFolderEvent) {
|
public void onLoadFolder(LoadFolderEvent loadFolderEvent) {
|
||||||
|
|
||||||
if(loadFolderEvent.getTargetItem()!=null){
|
if(loadFolderEvent.getTargetItem()!=null && loadFolderEvent.getTargetItem().isFolder()){
|
||||||
wsExplorer.loadFolder(loadFolderEvent.getTargetItem());
|
wsExplorer.loadFolder(loadFolderEvent.getTargetItem());
|
||||||
loadParentBreadcrumbByItemId(loadFolderEvent.getTargetItem().getId(), true);
|
loadParentBreadcrumbByItemId(loadFolderEvent.getTargetItem().getId(), true);
|
||||||
}
|
}
|
||||||
|
@ -58,13 +68,27 @@ public class WorkspaceExplorerController implements EventHandler{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadRoot(LoadRootEvent loadRootEvent) {
|
public void onLoadRoot(LoadRootEvent loadRootEvent) {
|
||||||
|
|
||||||
wsExplorer.loadTree();
|
wsExplorer.loadTree();
|
||||||
breadcrumbs.init();
|
breadcrumbs.init();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
eventBus.addHandler(LoadMySpecialFolderEvent.TYPE, new LoadMySpecialFolderEventHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadMySpecialFolder(LoadMySpecialFolderEvent loadMySpecialFolderEvent) {
|
||||||
|
wsExplorer.loadMySpecialFolder();
|
||||||
|
breadcrumbs.init();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load parent breadcrumb by item id.
|
||||||
|
*
|
||||||
|
* @param itemIdentifier the item identifier
|
||||||
|
* @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+"]");
|
||||||
|
@ -87,6 +111,8 @@ public class WorkspaceExplorerController implements EventHandler{
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Gets the workspace explorer panel.
|
||||||
|
*
|
||||||
* @return the workspaceExplorerPanel
|
* @return the workspaceExplorerPanel
|
||||||
*/
|
*/
|
||||||
public WorkspaceExplorerPanel getWorkspaceExplorerPanel() {
|
public WorkspaceExplorerPanel getWorkspaceExplorerPanel() {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class DoubleClickEvent.
|
* The Class LoadFolderEvent.
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
* Jun 25, 2015
|
* Jun 25, 2015
|
||||||
|
@ -17,8 +17,9 @@ public class LoadFolderEvent extends GwtEvent<LoadFolderEventHandler> {
|
||||||
private Item targetItem;
|
private Item targetItem;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new double click event.
|
* Instantiates a new load folder event.
|
||||||
*
|
*
|
||||||
* @param target the target
|
* @param target the target
|
||||||
*/
|
*/
|
||||||
|
@ -43,6 +44,8 @@ public class LoadFolderEvent extends GwtEvent<LoadFolderEventHandler> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Gets the target item.
|
||||||
|
*
|
||||||
* @return the targetItem
|
* @return the targetItem
|
||||||
*/
|
*/
|
||||||
public Item getTargetItem() {
|
public Item getTargetItem() {
|
||||||
|
@ -50,6 +53,8 @@ public class LoadFolderEvent extends GwtEvent<LoadFolderEventHandler> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Sets the target item.
|
||||||
|
*
|
||||||
* @param targetItem the targetItem to set
|
* @param targetItem the targetItem to set
|
||||||
*/
|
*/
|
||||||
public void setTargetItem(Item targetItem) {
|
public void setTargetItem(Item targetItem) {
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
package org.gcube.portlets.widgets.wsexplorer.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class LoadMySpecialFolderEvent extends GwtEvent<LoadMySpecialFolderEventHandler> {
|
||||||
|
|
||||||
|
public static Type<LoadMySpecialFolderEventHandler> TYPE = new Type<LoadMySpecialFolderEventHandler>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new double click event.
|
||||||
|
*
|
||||||
|
* @param target the target
|
||||||
|
*/
|
||||||
|
public LoadMySpecialFolderEvent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<LoadMySpecialFolderEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(LoadMySpecialFolderEventHandler handler) {
|
||||||
|
handler.onLoadMySpecialFolder(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package org.gcube.portlets.widgets.wsexplorer.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface LoadMySpecialFolderEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jun 25, 2015
|
||||||
|
*/
|
||||||
|
public interface LoadMySpecialFolderEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On load my special folder.
|
||||||
|
*
|
||||||
|
* @param loadMySpecialFolderEvent the load my special folder event
|
||||||
|
*/
|
||||||
|
void onLoadMySpecialFolder(LoadMySpecialFolderEvent loadMySpecialFolderEvent);
|
||||||
|
}
|
|
@ -3,17 +3,15 @@ package org.gcube.portlets.widgets.wsexplorer.client.event;
|
||||||
import com.google.gwt.event.shared.GwtEvent;
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* The Class LoadRootEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Jun 25, 2015
|
||||||
*/
|
*/
|
||||||
public class LoadRootEvent extends GwtEvent<LoadRootEventHandler> {
|
public class LoadRootEvent extends GwtEvent<LoadRootEventHandler> {
|
||||||
|
|
||||||
public static Type<LoadRootEventHandler> TYPE = new Type<LoadRootEventHandler>();
|
public static Type<LoadRootEventHandler> TYPE = new Type<LoadRootEventHandler>();
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new double click event.
|
|
||||||
*
|
|
||||||
* @param target the target
|
|
||||||
*/
|
|
||||||
public LoadRootEvent() {
|
public LoadRootEvent() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,8 +52,8 @@ public abstract class AbstractItemsCellTable {
|
||||||
cellTable = new CellTable<Item>(1, CellTableResources.INSTANCE);
|
cellTable = new CellTable<Item>(1, CellTableResources.INSTANCE);
|
||||||
cellTable.addStyleName("table-overflow");
|
cellTable.addStyleName("table-overflow");
|
||||||
cellTable.setStriped(true);
|
cellTable.setStriped(true);
|
||||||
cellTable.setBordered(true);
|
// cellTable.setBordered(true);
|
||||||
// cellTable.setCondensed(true);
|
cellTable.setCondensed(true);
|
||||||
cellTable.setWidth("99%", true);
|
cellTable.setWidth("99%", true);
|
||||||
dataProvider.addDataDisplay(cellTable);
|
dataProvider.addDataDisplay(cellTable);
|
||||||
initTable(cellTable, null, null);
|
initTable(cellTable, null, null);
|
||||||
|
|
|
@ -95,14 +95,14 @@ public class ItemsTable extends AbstractItemsCellTable{
|
||||||
return Util.getImage(dataObj);
|
return Util.getImage(dataObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void onBrowserEvent(Context context, Element elem, Item object, NativeEvent event) {
|
// public void onBrowserEvent(Context context, Element elem, Item object, NativeEvent event) {
|
||||||
super.onBrowserEvent(context, elem, object, event);
|
// super.onBrowserEvent(context, elem, object, event);
|
||||||
if ("click".equals(event.getType())) {
|
// if ("click".equals(event.getType())) {
|
||||||
// Window.open(object.getURL(), "_blank", "");
|
//// Window.open(object.getURL(), "_blank", "");
|
||||||
// GcubeReleasesAppController.eventBus.fireEvent(new PackageClickEvent(object, AccoutingReference.DOWNLOAD));
|
//// GcubeReleasesAppController.eventBus.fireEvent(new PackageClickEvent(object, AccoutingReference.DOWNLOAD));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see com.google.gwt.user.cellview.client.Column#render(com.google.gwt.cell.client.Cell.Context, java.lang.Object, com.google.gwt.safehtml.shared.SafeHtmlBuilder)
|
* @see com.google.gwt.user.cellview.client.Column#render(com.google.gwt.cell.client.Cell.Context, java.lang.Object, com.google.gwt.safehtml.shared.SafeHtmlBuilder)
|
||||||
|
@ -113,7 +113,7 @@ public class ItemsTable extends AbstractItemsCellTable{
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
icon.setCellStyleNames("img-centered-clickable");
|
// icon.setCellStyleNames("img-centered-clickable");
|
||||||
icon.setSortable(false);
|
icon.setSortable(false);
|
||||||
packageTable.addColumn(icon, "");
|
packageTable.addColumn(icon, "");
|
||||||
packageTable.setColumnWidth(icon, 10.0, Unit.PCT);
|
packageTable.setColumnWidth(icon, 10.0, Unit.PCT);
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 12 KiB |
|
@ -54,4 +54,15 @@ public interface WorkspaceExplorerService extends RemoteService {
|
||||||
Item getRoot(List<ItemType> showableTypes, boolean purgeEmpyFolders,
|
Item getRoot(List<ItemType> showableTypes, boolean purgeEmpyFolders,
|
||||||
FilterCriteria filterCriteria)
|
FilterCriteria filterCriteria)
|
||||||
throws WorkspaceNavigatorServiceException;
|
throws WorkspaceNavigatorServiceException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param showableTypes
|
||||||
|
* @param purgeEmpyFolders
|
||||||
|
* @param filterCriteria
|
||||||
|
* @return
|
||||||
|
* @throws WorkspaceNavigatorServiceException
|
||||||
|
*/
|
||||||
|
Item getMySpecialFolder(List<ItemType> showableTypes,
|
||||||
|
boolean purgeEmpyFolders, FilterCriteria filterCriteria)
|
||||||
|
throws WorkspaceNavigatorServiceException;
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,4 +75,9 @@ public interface WorkspaceExplorerServiceAsync {
|
||||||
public void getListParentsByItemIdentifier(String itemIdentifier,
|
public void getListParentsByItemIdentifier(String itemIdentifier,
|
||||||
boolean includeItemAsParent, AsyncCallback<List<Item>> asyncCallback);
|
boolean includeItemAsParent, AsyncCallback<List<Item>> asyncCallback);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param asyncCallback
|
||||||
|
*/
|
||||||
|
public void getMySpecialFolder(List<ItemType> showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria, AsyncCallback<Item> asyncCallback);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,7 @@ public class Breadcrumbs extends Composite {
|
||||||
* the parent
|
* the parent
|
||||||
*/
|
*/
|
||||||
public void addNavigationLink(Item parent) {
|
public void addNavigationLink(Item parent) {
|
||||||
if (parent != null && parent.getParent() != null) {
|
if (parent != null && parent.getParent() != null && !parent.isSpecialFolder()) {
|
||||||
final NavLink navLink = new NavLink(parent.getName());
|
final NavLink navLink = new NavLink(parent.getName());
|
||||||
navLink.setName(parent.getId());
|
navLink.setName(parent.getId());
|
||||||
breadcrumbs.add(navLink);
|
breadcrumbs.add(navLink);
|
||||||
|
@ -101,11 +101,10 @@ public class Breadcrumbs extends Composite {
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
Item target = hashListItems.get(navLink.getName());
|
Item target = hashListItems.get(navLink.getName());
|
||||||
|
|
||||||
WorkspaceExplorerController.eventBus.fireEvent(new LoadFolderEvent(target));
|
WorkspaceExplorerController.eventBus.fireEvent(new LoadFolderEvent(target));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else { // is Root
|
} else { //IS ROOT OR SPECIAL FOLDER
|
||||||
// final NavLink navLink = new NavLink("");
|
// final NavLink navLink = new NavLink("");
|
||||||
NavLink navLink = new NavLink("");
|
NavLink navLink = new NavLink("");
|
||||||
breadcrumbs.add(navLink);// INIT
|
breadcrumbs.add(navLink);// INIT
|
||||||
|
|
|
@ -5,6 +5,7 @@ package org.gcube.portlets.widgets.wsexplorer.client.view;
|
||||||
|
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
|
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.event.LoadRootEvent;
|
||||||
|
|
||||||
import com.github.gwtbootstrap.client.ui.NavWidget;
|
import com.github.gwtbootstrap.client.ui.NavWidget;
|
||||||
|
@ -63,5 +64,13 @@ public class Navigation extends Composite{
|
||||||
vre_folder.setActive(true);
|
vre_folder.setActive(true);
|
||||||
vre_folder.setText(WorkspaceExplorerConstants.VRE_FOLDERS_LABEL);
|
vre_folder.setText(WorkspaceExplorerConstants.VRE_FOLDERS_LABEL);
|
||||||
vre_folder.setIcon(IconType.FOLDER_CLOSE);
|
vre_folder.setIcon(IconType.FOLDER_CLOSE);
|
||||||
|
|
||||||
|
vre_folder.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
WorkspaceExplorerController.eventBus.fireEvent(new LoadMySpecialFolderEvent());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,13 +104,7 @@ public class WorkspaceExplorer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onSuccess(Item item) {
|
public void onSuccess(Item item) {
|
||||||
GWT.log("workspace tree retrieved.");
|
updateExplorer(item.getChildren());
|
||||||
// then we remove the loading icon
|
|
||||||
explorerPanel.clear();
|
|
||||||
ItemsTable itTables = new ItemsTable();
|
|
||||||
itTables.addItems(item.getChildren());
|
|
||||||
explorerPanel.add(itTables.getCellTable());
|
|
||||||
GWT.log("workspace tree loaded");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -147,17 +141,57 @@ public class WorkspaceExplorer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Item result) {
|
public void onSuccess(Item result) {
|
||||||
GWT.log("workspace folder retrieved.");
|
updateExplorer(result.getChildren());
|
||||||
explorerPanel.clear();
|
|
||||||
ItemsTable itTables = new ItemsTable();
|
|
||||||
itTables.addItems(result.getChildren());
|
|
||||||
explorerPanel.add(itTables.getCellTable());
|
|
||||||
GWT.log("workspace folder loaded");
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the Workspace Tree.
|
||||||
|
*/
|
||||||
|
public void loadMySpecialFolder() {
|
||||||
|
GWT.log("loading folder data");
|
||||||
|
setLoading();
|
||||||
|
|
||||||
|
|
||||||
|
// we make a copy of showable types
|
||||||
|
List<ItemType> showableTypesParam = new ArrayList<ItemType>(showableTypes);
|
||||||
|
|
||||||
|
// we get sure that folders are displayed
|
||||||
|
for (ItemType folder : Util.FOLDERS) {
|
||||||
|
if (!showableTypesParam.contains(folder))
|
||||||
|
showableTypesParam.add(folder);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean purgeEmpyFolders = !showEmptyFolders;
|
||||||
|
FilterCriteria filterCriteria = new FilterCriteria(allowedMimeTypes,requiredProperties);
|
||||||
|
|
||||||
|
GWT.log("loading workspace tree from server");
|
||||||
|
WorkspaceExplorerController.workspaceNavigatorService.getMySpecialFolder(showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
GWT.log("Error loading workspace folder from server",
|
||||||
|
caught);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Item items) {
|
||||||
|
updateExplorer(items.getChildren());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateExplorer(ArrayList<Item> items){
|
||||||
|
GWT.log("workspace explorer updating..");
|
||||||
|
explorerPanel.clear();
|
||||||
|
ItemsTable itTables = new ItemsTable();
|
||||||
|
itTables.addItems(items);
|
||||||
|
explorerPanel.add(itTables.getCellTable());
|
||||||
|
GWT.log("workspace explorer updated");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the explorerPanel
|
* @return the explorerPanel
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -16,6 +16,7 @@ import org.gcube.common.homelibrary.home.workspace.Workspace;
|
||||||
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
|
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
|
||||||
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
|
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
|
||||||
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
|
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
|
||||||
|
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService;
|
import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
|
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
||||||
|
@ -186,6 +187,50 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
throw new WorkspaceNavigatorServiceException(e.getMessage());
|
throw new WorkspaceNavigatorServiceException(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Item getMySpecialFolder(List<ItemType> showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria) throws WorkspaceNavigatorServiceException {
|
||||||
|
_log.trace("GetMySpecialFolder showableTypes: "+showableTypes+" purgeEmpyFolders: "+purgeEmpyFolders+" filterCriteria: "+filterCriteria);
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
Workspace workspace = getWorkspace();
|
||||||
|
WorkspaceItem folder = workspace.getMySpecialFolders();
|
||||||
|
|
||||||
|
long startTime = System.currentTimeMillis();
|
||||||
|
_log.trace("start time - " + startTime);
|
||||||
|
|
||||||
|
|
||||||
|
Item itemFolder = ItemBuilder.getItem(null, folder, showableTypes, filterCriteria, true);
|
||||||
|
itemFolder.setName(WorkspaceExplorerConstants.SPECIAL_FOLDERS_LABEL);
|
||||||
|
itemFolder.setSpecialFolder(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 special folders retrieving", e);
|
||||||
|
throw new WorkspaceNavigatorServiceException(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
|
|
@ -26,7 +26,8 @@ public class Item implements IsSerializable{
|
||||||
protected ArrayList<Item> children;
|
protected ArrayList<Item> children;
|
||||||
private String owner;
|
private String owner;
|
||||||
private boolean isFolder;
|
private boolean isFolder;
|
||||||
|
private boolean isSpecialFolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new item.
|
* Instantiates a new item.
|
||||||
*/
|
*/
|
||||||
|
@ -191,6 +192,19 @@ public class Item implements IsSerializable{
|
||||||
children.remove(child);
|
children.remove(child);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the isSpecialFolder
|
||||||
|
*/
|
||||||
|
public boolean isSpecialFolder() {
|
||||||
|
return isSpecialFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param isSpecialFolder the isSpecialFolder to set
|
||||||
|
*/
|
||||||
|
public void setSpecialFolder(boolean isSpecialFolder) {
|
||||||
|
this.isSpecialFolder = isSpecialFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -253,7 +267,9 @@ public class Item implements IsSerializable{
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append("Item [id=");
|
builder.append("Item [parent=");
|
||||||
|
builder.append(parent);
|
||||||
|
builder.append(", id=");
|
||||||
builder.append(id);
|
builder.append(id);
|
||||||
builder.append(", name=");
|
builder.append(", name=");
|
||||||
builder.append(name);
|
builder.append(name);
|
||||||
|
@ -261,14 +277,14 @@ public class Item implements IsSerializable{
|
||||||
builder.append(type);
|
builder.append(type);
|
||||||
builder.append(", path=");
|
builder.append(", path=");
|
||||||
builder.append(path);
|
builder.append(path);
|
||||||
builder.append(", shared=");
|
builder.append(", isSharedFolder=");
|
||||||
builder.append(isSharedFolder);
|
builder.append(isSharedFolder);
|
||||||
builder.append(", children=");
|
|
||||||
builder.append(children);
|
|
||||||
builder.append(", owner=");
|
builder.append(", owner=");
|
||||||
builder.append(owner);
|
builder.append(owner);
|
||||||
builder.append(", isFolder=");
|
builder.append(", isFolder=");
|
||||||
builder.append(isFolder);
|
builder.append(isFolder);
|
||||||
|
builder.append(", isSpecialFolder=");
|
||||||
|
builder.append(isSpecialFolder);
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue