From fdb64715a651448dd30dde5597fb75fe81e9c83a Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Thu, 25 Jun 2015 13:52:02 +0000 Subject: [PATCH] 256: Workspace explorer Task-Url: https://support.d4science.org/issues/256 Added events: LoadFolder, LoadRoot git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@115548 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/WorkspaceExplorerController.java | 95 +++++++++++++++++++ .../client/WorkspaceExplorerPanel.java | 24 +++-- .../client/event/LoadFolderEvent.java | 58 +++++++++++ .../client/event/LoadFolderEventHandler.java | 16 ++++ .../client/event/LoadRootEvent.java | 35 +++++++ .../client/event/LoadRootEventHandler.java | 20 ++++ .../client/grid/AbstractItemsCellTable.java | 27 +----- .../wsexplorer/client/grid/ItemsTable.java | 9 +- .../load/WorkspaceExplorerLoadDialog.java | 12 +-- ...Icons.java => WorkspaceExplorerIcons.java} | 2 +- ...s.java => WorkspaceExplorerResources.java} | 4 +- .../rpc/WorkspaceExplorerServiceAsync.java | 4 +- .../wsexplorer/client/view/Breadcrumbs.java | 11 ++- .../client/view/WorkspaceExplorer.java | 91 +++++++++++------- 14 files changed, 322 insertions(+), 86 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java create mode 100644 src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadFolderEvent.java create mode 100644 src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadFolderEventHandler.java create mode 100644 src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadRootEvent.java create mode 100644 src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadRootEventHandler.java rename src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/{Icons.java => WorkspaceExplorerIcons.java} (82%) rename src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/{Resources.java => WorkspaceExplorerResources.java} (78%) diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java new file mode 100644 index 0000000..c6fd270 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController.java @@ -0,0 +1,95 @@ +/** + * + */ +package org.gcube.portlets.widgets.wsexplorer.client; + +import java.util.List; + +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.LoadRootEvent; +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.WorkspaceExplorerServiceAsync; +import org.gcube.portlets.widgets.wsexplorer.client.view.Breadcrumbs; +import org.gcube.portlets.widgets.wsexplorer.client.view.Navigation; +import org.gcube.portlets.widgets.wsexplorer.client.view.WorkspaceExplorer; +import org.gcube.portlets.widgets.wsexplorer.shared.Item; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.HandlerManager; +import com.google.gwt.user.client.rpc.AsyncCallback; + +/** + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Jun 25, 2015 + */ +public class WorkspaceExplorerController implements EventHandler{ + + public final static HandlerManager eventBus = new HandlerManager(null); + private WorkspaceExplorerPanel workspaceExplorerPanel; + private WorkspaceExplorer wsExplorer = new WorkspaceExplorer(); + private Breadcrumbs breadcrumbs = new Breadcrumbs(); + private Navigation navigation = new Navigation(); + public static final WorkspaceExplorerServiceAsync workspaceNavigatorService = GWT.create(WorkspaceExplorerService.class); + + public WorkspaceExplorerController(){ + bindEvents(); + workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getExplorerPanel(), breadcrumbs, navigation); + } + + private void bindEvents() { + + eventBus.addHandler(LoadFolderEvent.TYPE, new LoadFolderEventHandler() { + + @Override + public void onLoadFolder(LoadFolderEvent loadFolderEvent) { + + if(loadFolderEvent.getTargetItem()!=null){ + wsExplorer.loadFolder(loadFolderEvent.getTargetItem()); + loadParentBreadcrumbByItemId(loadFolderEvent.getTargetItem().getId(), true); + } + } + }); + + eventBus.addHandler(LoadRootEvent.TYPE, new LoadRootEventHandler() { + + @Override + public void onLoadRoot(LoadRootEvent loadRootEvent) { + + wsExplorer.loadTree(); + breadcrumbs.reset(); + } + }); + } + + protected void loadParentBreadcrumbByItemId(final String itemIdentifier, boolean includeItemAsParent){ + + GWT.log("Reload Parent Breadcrumb: [Item id: "+itemIdentifier+"]"); + + workspaceNavigatorService.getListParentsByItemIdentifier(itemIdentifier, includeItemAsParent, new AsyncCallback>() { + + @Override + public void onFailure(Throwable caught) { + // TODO Auto-generated method stub + + } + + @Override + public void onSuccess(List result) { + if(result!=null) + breadcrumbs.setPath(result); + } + }); + + } + + /** + * @return the workspaceExplorerPanel + */ + public WorkspaceExplorerPanel getWorkspaceExplorerPanel() { + return workspaceExplorerPanel; + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java index b7ba97d..3ecdaf0 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerPanel.java @@ -3,10 +3,7 @@ */ package org.gcube.portlets.widgets.wsexplorer.client; -import org.gcube.portlets.widgets.wsexplorer.client.view.Breadcrumbs; -import org.gcube.portlets.widgets.wsexplorer.client.view.Navigation; -import org.gcube.portlets.widgets.wsexplorer.client.view.WorkspaceExplorer; - +import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.DockPanel; import com.google.gwt.user.client.ui.ScrollPanel; @@ -25,13 +22,16 @@ public class WorkspaceExplorerPanel extends DockPanel{ private ScrollPanel westPanel = new ScrollPanel(); private ScrollPanel centerScrollable = new ScrollPanel(); - private Breadcrumbs breadcrumbs = new Breadcrumbs(); - private Navigation navigation = new Navigation(); - private WorkspaceExplorer wsExplorer = new WorkspaceExplorer(); + /** - * Instantiates a new split panel. + * Instantiates a new workspace explorer panel. + * + * @param splitterSize the splitter size + * @param wsExplorer the ws explorer + * @param breadcrumbs the breadcrumbs + * @param navigation the navigation */ - public WorkspaceExplorerPanel(int splitterSize) { + public WorkspaceExplorerPanel(int splitterSize, ScrollPanel wsExplorer, Composite breadcrumbs, Composite navigation) { // setStyleName("cw-DockPanel"); ensureDebugId("WorkspaceNavigatorPanel"); setSpacing(4); @@ -44,11 +44,13 @@ public class WorkspaceExplorerPanel extends DockPanel{ add(westPanel, DockPanel.WEST); centerScrollable.setSize(width+"px", height+"px"); - centerScrollable.add(wsExplorer.getExplorerPanel()); + centerScrollable.add(wsExplorer); add(centerScrollable, DockPanel.CENTER); } /** + * Gets the west panel. + * * @return the westPanel */ public ScrollPanel getWestPanel() { @@ -56,6 +58,8 @@ public class WorkspaceExplorerPanel extends DockPanel{ } /** + * Gets the center scrollable. + * * @return the centerScrollable */ public ScrollPanel getCenterScrollable() { diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadFolderEvent.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadFolderEvent.java new file mode 100644 index 0000000..0d46f0a --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadFolderEvent.java @@ -0,0 +1,58 @@ +package org.gcube.portlets.widgets.wsexplorer.client.event; + +import org.gcube.portlets.widgets.wsexplorer.shared.Item; + +import com.google.gwt.event.shared.GwtEvent; + + + +/** + * The Class DoubleClickEvent. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Jun 25, 2015 + */ +public class LoadFolderEvent extends GwtEvent { + public static Type TYPE = new Type(); + private Item targetItem; + + + /** + * Instantiates a new double click event. + * + * @param target the target + */ + public LoadFolderEvent(Item target) { + this.targetItem = target; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ + @Override + public Type getAssociatedType() { + return TYPE; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + */ + @Override + protected void dispatch(LoadFolderEventHandler handler) { + handler.onLoadFolder(this); + } + + /** + * @return the targetItem + */ + public Item getTargetItem() { + return targetItem; + } + + /** + * @param targetItem the targetItem to set + */ + public void setTargetItem(Item targetItem) { + this.targetItem = targetItem; + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadFolderEventHandler.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadFolderEventHandler.java new file mode 100644 index 0000000..26f05ff --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadFolderEventHandler.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.widgets.wsexplorer.client.event; + +import com.google.gwt.event.shared.EventHandler; + +/** + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * @May 23, 2013 + * + */ +public interface LoadFolderEventHandler extends EventHandler { + /** + * @param accountingHistoryEvent + */ + void onLoadFolder(LoadFolderEvent loadFolderEvent); +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadRootEvent.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadRootEvent.java new file mode 100644 index 0000000..dfd0fbf --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadRootEvent.java @@ -0,0 +1,35 @@ +package org.gcube.portlets.widgets.wsexplorer.client.event; + +import com.google.gwt.event.shared.GwtEvent; + +/** + * + */ +public class LoadRootEvent extends GwtEvent { + + public static Type TYPE = new Type(); + + /** + * Instantiates a new double click event. + * + * @param target the target + */ + public LoadRootEvent() { + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ + @Override + public Type getAssociatedType() { + return TYPE; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + */ + @Override + protected void dispatch(LoadRootEventHandler handler) { + handler.onLoadRoot(this); + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadRootEventHandler.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadRootEventHandler.java new file mode 100644 index 0000000..49a193c --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/event/LoadRootEventHandler.java @@ -0,0 +1,20 @@ +package org.gcube.portlets.widgets.wsexplorer.client.event; + +import com.google.gwt.event.shared.EventHandler; + + +/** + * The Interface LoadRootEventHandler. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Jun 25, 2015 + */ +public interface LoadRootEventHandler extends EventHandler { + + /** + * On load root. + * + * @param loadRootEvent the load root event + */ + void onLoadRoot(LoadRootEvent loadRootEvent); +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/grid/AbstractItemsCellTable.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/grid/AbstractItemsCellTable.java index 5449598..edeef4c 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/grid/AbstractItemsCellTable.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/grid/AbstractItemsCellTable.java @@ -2,6 +2,7 @@ package org.gcube.portlets.widgets.wsexplorer.client.grid; import java.util.List; +import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController; import org.gcube.portlets.widgets.wsexplorer.client.resources.CellTableResources; import org.gcube.portlets.widgets.wsexplorer.shared.Item; @@ -27,7 +28,6 @@ public abstract class AbstractItemsCellTable { protected CellTable cellTable; protected ListDataProvider dataProvider = new ListDataProvider(); - protected boolean showGroupId; /** * Inits the table. @@ -48,14 +48,13 @@ public abstract class AbstractItemsCellTable { * @param showGroupId * the show group id */ - public AbstractItemsCellTable(boolean showGroupId) { - this.showGroupId = showGroupId; + public AbstractItemsCellTable() { cellTable = new CellTable(1, CellTableResources.INSTANCE); cellTable.addStyleName("table-overflow"); cellTable.setStriped(true); cellTable.setBordered(true); // cellTable.setCondensed(true); - cellTable.setWidth("98%", true); + cellTable.setWidth("99%", true); dataProvider.addDataDisplay(cellTable); initTable(cellTable, null, null); cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); @@ -78,6 +77,7 @@ public abstract class AbstractItemsCellTable { Item selected = ssm.getSelectedObject(); if (selected != null) { GWT.log("Double Click: "+selected); + WorkspaceExplorerController.eventBus.fireEvent(new org.gcube.portlets.widgets.wsexplorer.client.event.LoadFolderEvent(selected)); } } }, @@ -149,15 +149,6 @@ public abstract class AbstractItemsCellTable { return dataProvider; } - /** - * Checks if is show group id. - * - * @return true, if is show group id - */ - public boolean isShowGroupId() { - return showGroupId; - } - /** * Sets the data provider. * @@ -167,14 +158,4 @@ public abstract class AbstractItemsCellTable { public void setDataProvider(ListDataProvider dataProvider) { this.dataProvider = dataProvider; } - - /** - * Sets the show group id. - * - * @param showGroupId - * the new show group id - */ - public void setShowGroupId(boolean showGroupId) { - this.showGroupId = showGroupId; - } } diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/grid/ItemsTable.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/grid/ItemsTable.java index 23d88b5..235744b 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/grid/ItemsTable.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/grid/ItemsTable.java @@ -39,13 +39,12 @@ public class ItemsTable extends AbstractItemsCellTable{ private Column icon; private TextColumn name; private TextColumn owner; + /** - * Instantiates a new packages table. - * - * @param showGroupId the show group id + * Instantiates a new items table. */ - public ItemsTable(boolean showGroupId) { - super(showGroupId); + public ItemsTable() { + super(); } diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/load/WorkspaceExplorerLoadDialog.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/load/WorkspaceExplorerLoadDialog.java index e09ede4..c3d2ccb 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/load/WorkspaceExplorerLoadDialog.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/load/WorkspaceExplorerLoadDialog.java @@ -4,7 +4,7 @@ package org.gcube.portlets.widgets.wsexplorer.client.load; import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants; -import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerPanel; +import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; @@ -24,16 +24,12 @@ import com.google.gwt.user.client.ui.HorizontalPanel; */ public class WorkspaceExplorerLoadDialog extends DialogBox implements ClickHandler { - /** - * - */ - private Button cancel; private WorkspaceExplorerLoadDialog INSTANCE = this; private boolean isValidHide; private String captionTxt; - private WorkspaceExplorerPanel wsp = new WorkspaceExplorerPanel(5); - + private WorkspaceExplorerController controller = new WorkspaceExplorerController(); + /** * Instantiates a new worspace navigator dialog. * @@ -63,7 +59,7 @@ public class WorkspaceExplorerLoadDialog extends DialogBox implements ClickHandl hp.add(cancel); dock.add(hp, DockPanel.SOUTH); - dock.add(wsp, DockPanel.CENTER); + dock.add(controller.getWorkspaceExplorerPanel(), DockPanel.CENTER); dock.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); dock.setWidth("100%"); diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/Icons.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/WorkspaceExplorerIcons.java similarity index 82% rename from src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/Icons.java rename to src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/WorkspaceExplorerIcons.java index 1298595..d4af100 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/Icons.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/WorkspaceExplorerIcons.java @@ -3,7 +3,7 @@ package org.gcube.portlets.widgets.wsexplorer.client.resources; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.ImageResource; -public interface Icons extends ClientBundle { +public interface WorkspaceExplorerIcons extends ClientBundle { @Source("cancel.png") ImageResource cancel(); diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/Resources.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/WorkspaceExplorerResources.java similarity index 78% rename from src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/Resources.java rename to src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/WorkspaceExplorerResources.java index c0561f3..e832654 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/Resources.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/resources/WorkspaceExplorerResources.java @@ -7,9 +7,9 @@ import com.google.gwt.user.client.ui.AbstractImagePrototype; * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * */ -public class Resources { +public class WorkspaceExplorerResources { - public static final Icons ICONS = GWT.create(Icons.class); + public static final WorkspaceExplorerIcons ICONS = GWT.create(WorkspaceExplorerIcons.class); public static AbstractImagePrototype getIconCancel() { diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java index 2cb31d9..5ecfa91 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java @@ -69,10 +69,10 @@ public interface WorkspaceExplorerServiceAsync { * * @param itemIdentifier the item identifier * @param includeItemAsParent the include item as parent - * @param callback the callback + * @param asyncCallback the callback * @return the list parents by item identifier */ public void getListParentsByItemIdentifier(String itemIdentifier, - boolean includeItemAsParent, AsyncCallback> callback); + boolean includeItemAsParent, AsyncCallback> asyncCallback); } diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/Breadcrumbs.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/Breadcrumbs.java index 6379022..5e4442a 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/Breadcrumbs.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/Breadcrumbs.java @@ -50,7 +50,7 @@ public class Breadcrumbs extends Composite { public Breadcrumbs() { initWidget(uiBinder.createAndBindUi(this)); breadcrumbs.setDivider(DIVIDER); - initBreadcrumbs(); + breadcrumbs.add(new NavLink("/")); // initBreadcrumb(true); this.addStyleName("breadcrumbs-navigator"); } @@ -78,8 +78,6 @@ public class Breadcrumbs extends Composite { */ private void initBreadcrumbs() { breadcrumbs.clear(); - breadcrumbs.add(new NavLink(""));// INIT - breadcrumbs.add(new NavLink("Home")); } // @UiHandler("add") @@ -132,4 +130,11 @@ public class Breadcrumbs extends Composite { return lastParent; } + /** + * + */ + public void reset() { + initBreadcrumbs(); + } + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java index e82c6b6..b3fd2bf 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorer.java @@ -6,18 +6,15 @@ import java.util.List; import java.util.Map; import org.gcube.portlets.widgets.wsexplorer.client.Util; +import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController; import org.gcube.portlets.widgets.wsexplorer.client.grid.ItemsTable; -import org.gcube.portlets.widgets.wsexplorer.client.resources.Resources; -import org.gcube.portlets.widgets.wsexplorer.client.resources.old.WorkspaceLightTreeResources; -import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService; -import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerServiceAsync; +import org.gcube.portlets.widgets.wsexplorer.client.resources.WorkspaceExplorerResources; 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.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Unit; -import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HorizontalPanel; @@ -29,10 +26,10 @@ import com.google.gwt.user.client.ui.ScrollPanel; */ public class WorkspaceExplorer { - private final WorkspaceExplorerServiceAsync workspaceNavigatorService = GWT.create(WorkspaceExplorerService.class); - protected static final HorizontalPanel LOADING_PANEL = new HorizontalPanel(); - protected static final Image LOADING_IMAGE = Resources.getIconLoading().createImage(); + protected static final HorizontalPanel LOADING_PANEL = new HorizontalPanel(); + protected static final Image LOADING_IMAGE = WorkspaceExplorerResources.getIconLoading().createImage(); + static { LOADING_PANEL.getElement().getStyle().setMargin(5.0, Unit.PX); // LOADING_PANEL.setSpacing(3); @@ -99,36 +96,66 @@ public class WorkspaceExplorer { GWT.log("loading workspace tree from server"); - workspaceNavigatorService.getRoot(showableTypesParam, purgeEmpyFolders, - filterCriteria, new AsyncCallback() { + WorkspaceExplorerController.workspaceNavigatorService.getRoot(showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback() { - - public void onFailure(Throwable caught) { - GWT.log("Error loading workspace tree from server", - caught); - // showErrorPanel(caught); - // DataLoadEvent.fireLoadDataFailed(WorkspaceLightTreePanel.this, - // caught); - } + public void onFailure(Throwable caught) { + GWT.log("Error loading workspace tree from server", + caught); + } - public void onSuccess(Item item) { - GWT.log("workspace tree retrieved."); - // tree.setRootItem(root); + public void onSuccess(Item item) { + GWT.log("workspace tree retrieved."); + // 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"); + } - // we select the root - // tree.selectItem(root.getId()); + }); + } + + /** + * Load the Workspace Tree. + */ + public void loadFolder(Item item) { + GWT.log("loading folder data"); + setLoading(); + + if(item.isFolder()){ + // we make a copy of showable types + List showableTypesParam = new ArrayList(showableTypes); - // then we remove the loading icon - explorerPanel.clear(); - ItemsTable itTables = new ItemsTable(false); - itTables.addItems(item.getChildren()); - explorerPanel.add(itTables.getCellTable()); + // we get sure that folders are displayed + for (ItemType folder : Util.FOLDERS) { + if (!showableTypesParam.contains(folder)) + showableTypesParam.add(folder); + } - GWT.log("workspace tree loaded"); - // DataLoadEvent.fireLoadDataSuccess(WorkspaceLightTreePanel.this); - } + boolean purgeEmpyFolders = !showEmptyFolders; + FilterCriteria filterCriteria = new FilterCriteria(allowedMimeTypes,requiredProperties); - }); + GWT.log("loading workspace tree from server"); + WorkspaceExplorerController.workspaceNavigatorService.getFolder(item.getId(), showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + GWT.log("Error loading workspace folder from server", + caught); + } + + @Override + public void onSuccess(Item result) { + GWT.log("workspace folder retrieved."); + explorerPanel.clear(); + ItemsTable itTables = new ItemsTable(); + itTables.addItems(result.getChildren()); + explorerPanel.add(itTables.getCellTable()); + GWT.log("workspace folder loaded"); + } + }); + } } /**