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
This commit is contained in:
Francesco Mangiacrapa 2015-06-25 13:52:02 +00:00
parent 7946490b18
commit fdb64715a6
14 changed files with 322 additions and 86 deletions

View File

@ -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<List<Item>>() {
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(List<Item> result) {
if(result!=null)
breadcrumbs.setPath(result);
}
});
}
/**
* @return the workspaceExplorerPanel
*/
public WorkspaceExplorerPanel getWorkspaceExplorerPanel() {
return workspaceExplorerPanel;
}
}

View File

@ -3,10 +3,7 @@
*/ */
package org.gcube.portlets.widgets.wsexplorer.client; package org.gcube.portlets.widgets.wsexplorer.client;
import org.gcube.portlets.widgets.wsexplorer.client.view.Breadcrumbs; import com.google.gwt.user.client.ui.Composite;
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.DockPanel; import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.ScrollPanel;
@ -25,13 +22,16 @@ public class WorkspaceExplorerPanel extends DockPanel{
private ScrollPanel westPanel = new ScrollPanel(); private ScrollPanel westPanel = new ScrollPanel();
private ScrollPanel centerScrollable = 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"); // setStyleName("cw-DockPanel");
ensureDebugId("WorkspaceNavigatorPanel"); ensureDebugId("WorkspaceNavigatorPanel");
setSpacing(4); setSpacing(4);
@ -44,11 +44,13 @@ public class WorkspaceExplorerPanel extends DockPanel{
add(westPanel, DockPanel.WEST); add(westPanel, DockPanel.WEST);
centerScrollable.setSize(width+"px", height+"px"); centerScrollable.setSize(width+"px", height+"px");
centerScrollable.add(wsExplorer.getExplorerPanel()); centerScrollable.add(wsExplorer);
add(centerScrollable, DockPanel.CENTER); add(centerScrollable, DockPanel.CENTER);
} }
/** /**
* Gets the west panel.
*
* @return the westPanel * @return the westPanel
*/ */
public ScrollPanel getWestPanel() { public ScrollPanel getWestPanel() {
@ -56,6 +58,8 @@ public class WorkspaceExplorerPanel extends DockPanel{
} }
/** /**
* Gets the center scrollable.
*
* @return the centerScrollable * @return the centerScrollable
*/ */
public ScrollPanel getCenterScrollable() { public ScrollPanel getCenterScrollable() {

View File

@ -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<LoadFolderEventHandler> {
public static Type<LoadFolderEventHandler> TYPE = new Type<LoadFolderEventHandler>();
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<LoadFolderEventHandler> 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;
}
}

View File

@ -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);
}

View File

@ -0,0 +1,35 @@
package org.gcube.portlets.widgets.wsexplorer.client.event;
import com.google.gwt.event.shared.GwtEvent;
/**
*
*/
public class LoadRootEvent extends GwtEvent<LoadRootEventHandler> {
public static Type<LoadRootEventHandler> TYPE = new Type<LoadRootEventHandler>();
/**
* 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<LoadRootEventHandler> 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);
}
}

View File

@ -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);
}

View File

@ -2,6 +2,7 @@ package org.gcube.portlets.widgets.wsexplorer.client.grid;
import java.util.List; 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.client.resources.CellTableResources;
import org.gcube.portlets.widgets.wsexplorer.shared.Item; import org.gcube.portlets.widgets.wsexplorer.shared.Item;
@ -27,7 +28,6 @@ public abstract class AbstractItemsCellTable {
protected CellTable<Item> cellTable; protected CellTable<Item> cellTable;
protected ListDataProvider<Item> dataProvider = new ListDataProvider<Item>(); protected ListDataProvider<Item> dataProvider = new ListDataProvider<Item>();
protected boolean showGroupId;
/** /**
* Inits the table. * Inits the table.
@ -48,14 +48,13 @@ public abstract class AbstractItemsCellTable {
* @param showGroupId * @param showGroupId
* the show group id * the show group id
*/ */
public AbstractItemsCellTable(boolean showGroupId) { public AbstractItemsCellTable() {
this.showGroupId = showGroupId;
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("98%", true); cellTable.setWidth("99%", true);
dataProvider.addDataDisplay(cellTable); dataProvider.addDataDisplay(cellTable);
initTable(cellTable, null, null); initTable(cellTable, null, null);
cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
@ -78,6 +77,7 @@ public abstract class AbstractItemsCellTable {
Item selected = ssm.getSelectedObject(); Item selected = ssm.getSelectedObject();
if (selected != null) { if (selected != null) {
GWT.log("Double Click: "+selected); 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; return dataProvider;
} }
/**
* Checks if is show group id.
*
* @return true, if is show group id
*/
public boolean isShowGroupId() {
return showGroupId;
}
/** /**
* Sets the data provider. * Sets the data provider.
* *
@ -167,14 +158,4 @@ public abstract class AbstractItemsCellTable {
public void setDataProvider(ListDataProvider<Item> dataProvider) { public void setDataProvider(ListDataProvider<Item> dataProvider) {
this.dataProvider = dataProvider; this.dataProvider = dataProvider;
} }
/**
* Sets the show group id.
*
* @param showGroupId
* the new show group id
*/
public void setShowGroupId(boolean showGroupId) {
this.showGroupId = showGroupId;
}
} }

View File

@ -39,13 +39,12 @@ public class ItemsTable extends AbstractItemsCellTable{
private Column<Item, ImageResource> icon; private Column<Item, ImageResource> icon;
private TextColumn<Item> name; private TextColumn<Item> name;
private TextColumn<Item> owner; private TextColumn<Item> owner;
/** /**
* Instantiates a new packages table. * Instantiates a new items table.
*
* @param showGroupId the show group id
*/ */
public ItemsTable(boolean showGroupId) { public ItemsTable() {
super(showGroupId); super();
} }

View File

@ -4,7 +4,7 @@
package org.gcube.portlets.widgets.wsexplorer.client.load; package org.gcube.portlets.widgets.wsexplorer.client.load;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants; 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.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent; 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 { public class WorkspaceExplorerLoadDialog extends DialogBox implements ClickHandler {
/**
*
*/
private Button cancel; private Button cancel;
private WorkspaceExplorerLoadDialog INSTANCE = this; private WorkspaceExplorerLoadDialog INSTANCE = this;
private boolean isValidHide; private boolean isValidHide;
private String captionTxt; private String captionTxt;
private WorkspaceExplorerPanel wsp = new WorkspaceExplorerPanel(5); private WorkspaceExplorerController controller = new WorkspaceExplorerController();
/** /**
* Instantiates a new worspace navigator dialog. * Instantiates a new worspace navigator dialog.
* *
@ -63,7 +59,7 @@ public class WorkspaceExplorerLoadDialog extends DialogBox implements ClickHandl
hp.add(cancel); hp.add(cancel);
dock.add(hp, DockPanel.SOUTH); dock.add(hp, DockPanel.SOUTH);
dock.add(wsp, DockPanel.CENTER); dock.add(controller.getWorkspaceExplorerPanel(), DockPanel.CENTER);
dock.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); dock.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
dock.setWidth("100%"); dock.setWidth("100%");

View File

@ -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.ClientBundle;
import com.google.gwt.resources.client.ImageResource; import com.google.gwt.resources.client.ImageResource;
public interface Icons extends ClientBundle { public interface WorkspaceExplorerIcons extends ClientBundle {
@Source("cancel.png") @Source("cancel.png")
ImageResource cancel(); ImageResource cancel();

View File

@ -7,9 +7,9 @@ import com.google.gwt.user.client.ui.AbstractImagePrototype;
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * @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() { public static AbstractImagePrototype getIconCancel() {

View File

@ -69,10 +69,10 @@ public interface WorkspaceExplorerServiceAsync {
* *
* @param itemIdentifier the item identifier * @param itemIdentifier the item identifier
* @param includeItemAsParent the include item as parent * @param includeItemAsParent the include item as parent
* @param callback the callback * @param asyncCallback the callback
* @return the list parents by item identifier * @return the list parents by item identifier
*/ */
public void getListParentsByItemIdentifier(String itemIdentifier, public void getListParentsByItemIdentifier(String itemIdentifier,
boolean includeItemAsParent, AsyncCallback<List<Item>> callback); boolean includeItemAsParent, AsyncCallback<List<Item>> asyncCallback);
} }

View File

@ -50,7 +50,7 @@ public class Breadcrumbs extends Composite {
public Breadcrumbs() { public Breadcrumbs() {
initWidget(uiBinder.createAndBindUi(this)); initWidget(uiBinder.createAndBindUi(this));
breadcrumbs.setDivider(DIVIDER); breadcrumbs.setDivider(DIVIDER);
initBreadcrumbs(); breadcrumbs.add(new NavLink("/"));
// initBreadcrumb(true); // initBreadcrumb(true);
this.addStyleName("breadcrumbs-navigator"); this.addStyleName("breadcrumbs-navigator");
} }
@ -78,8 +78,6 @@ public class Breadcrumbs extends Composite {
*/ */
private void initBreadcrumbs() { private void initBreadcrumbs() {
breadcrumbs.clear(); breadcrumbs.clear();
breadcrumbs.add(new NavLink(""));// INIT
breadcrumbs.add(new NavLink("Home"));
} }
// @UiHandler("add") // @UiHandler("add")
@ -132,4 +130,11 @@ public class Breadcrumbs extends Composite {
return lastParent; return lastParent;
} }
/**
*
*/
public void reset() {
initBreadcrumbs();
}
} }

View File

@ -6,18 +6,15 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import org.gcube.portlets.widgets.wsexplorer.client.Util; 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.grid.ItemsTable;
import org.gcube.portlets.widgets.wsexplorer.client.resources.Resources; import org.gcube.portlets.widgets.wsexplorer.client.resources.WorkspaceExplorerResources;
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.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;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType; import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
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.resources.client.ImageResource;
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;
@ -29,10 +26,10 @@ import com.google.gwt.user.client.ui.ScrollPanel;
*/ */
public class WorkspaceExplorer { 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 { static {
LOADING_PANEL.getElement().getStyle().setMargin(5.0, Unit.PX); LOADING_PANEL.getElement().getStyle().setMargin(5.0, Unit.PX);
// LOADING_PANEL.setSpacing(3); // LOADING_PANEL.setSpacing(3);
@ -99,36 +96,66 @@ public class WorkspaceExplorer {
GWT.log("loading workspace tree from server"); GWT.log("loading workspace tree from server");
workspaceNavigatorService.getRoot(showableTypesParam, purgeEmpyFolders, WorkspaceExplorerController.workspaceNavigatorService.getRoot(showableTypesParam, purgeEmpyFolders, filterCriteria, new AsyncCallback<Item>() {
filterCriteria, new AsyncCallback<Item>() {
public void onFailure(Throwable caught) {
public void onFailure(Throwable caught) { GWT.log("Error loading workspace tree from server",
GWT.log("Error loading workspace tree from server", caught);
caught); }
// showErrorPanel(caught);
// DataLoadEvent.fireLoadDataFailed(WorkspaceLightTreePanel.this,
// caught);
}
public void onSuccess(Item item) { public void onSuccess(Item item) {
GWT.log("workspace tree retrieved."); GWT.log("workspace tree retrieved.");
// tree.setRootItem(root); // 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<ItemType> showableTypesParam = new ArrayList<ItemType>(showableTypes);
// then we remove the loading icon // we get sure that folders are displayed
explorerPanel.clear(); for (ItemType folder : Util.FOLDERS) {
ItemsTable itTables = new ItemsTable(false); if (!showableTypesParam.contains(folder))
itTables.addItems(item.getChildren()); showableTypesParam.add(folder);
explorerPanel.add(itTables.getCellTable()); }
GWT.log("workspace tree loaded"); boolean purgeEmpyFolders = !showEmptyFolders;
// DataLoadEvent.fireLoadDataSuccess(WorkspaceLightTreePanel.this); FilterCriteria filterCriteria = new FilterCriteria(allowedMimeTypes,requiredProperties);
}
}); GWT.log("loading workspace tree from server");
WorkspaceExplorerController.workspaceNavigatorService.getFolder(item.getId(), 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 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");
}
});
}
} }
/** /**