workspace-explorer/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerController...

122 lines
3.8 KiB
Java

/**
*
*/
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.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.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;
/**
* The Class WorkspaceExplorerController.
*
* @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);
/**
* Instantiates a new workspace explorer controller.
*/
public WorkspaceExplorerController(){
bindEvents();
workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getExplorerPanel(), breadcrumbs, navigation);
}
/**
* Bind events.
*/
private void bindEvents() {
eventBus.addHandler(LoadFolderEvent.TYPE, new LoadFolderEventHandler() {
@Override
public void onLoadFolder(LoadFolderEvent loadFolderEvent) {
if(loadFolderEvent.getTargetItem()!=null && loadFolderEvent.getTargetItem().isFolder()){
wsExplorer.loadFolder(loadFolderEvent.getTargetItem());
loadParentBreadcrumbByItemId(loadFolderEvent.getTargetItem().getId(), true);
}
}
});
eventBus.addHandler(LoadRootEvent.TYPE, new LoadRootEventHandler() {
@Override
public void onLoadRoot(LoadRootEvent loadRootEvent) {
wsExplorer.loadTree();
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){
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);
}
});
}
/**
* Gets the workspace explorer panel.
*
* @return the workspaceExplorerPanel
*/
public WorkspaceExplorerPanel getWorkspaceExplorerPanel() {
return workspaceExplorerPanel;
}
}