200 lines
5.6 KiB
Java
200 lines
5.6 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 org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory;
|
|
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
|
|
|
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
|
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;
|
|
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();
|
|
wsExplorer = new WorkspaceExplorer();
|
|
workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getPanel(), breadcrumbs, navigation);
|
|
}
|
|
|
|
// public void loadRoot(){
|
|
// wsExplorer.loadRoot();
|
|
// }
|
|
|
|
/**
|
|
* 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.loadRoot();
|
|
|
|
workspaceNavigatorService.getItemByCategory(ItemCategory.HOME, new AsyncCallback<Item>() {
|
|
|
|
@Override
|
|
public void onFailure(Throwable caught) {
|
|
GWT.log(caught.getMessage());
|
|
breadcrumbs.clear();
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onSuccess(Item result) {
|
|
result.setName(WorkspaceExplorerConstants.HOME_LABEL); //FORCE SET NAME LIKE "HOME_LABEL"
|
|
breadcrumbs.init(result);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
eventBus.addHandler(LoadMySpecialFolderEvent.TYPE, new LoadMySpecialFolderEventHandler() {
|
|
|
|
@Override
|
|
public void onLoadMySpecialFolder(LoadMySpecialFolderEvent loadMySpecialFolderEvent) {
|
|
wsExplorer.loadMySpecialFolder();
|
|
|
|
workspaceNavigatorService.getItemByCategory(ItemCategory.VRE_FOLDER, new AsyncCallback<Item>() {
|
|
|
|
@Override
|
|
public void onFailure(Throwable caught) {
|
|
GWT.log(caught.getMessage());
|
|
}
|
|
|
|
@Override
|
|
public void onSuccess(Item result) {
|
|
breadcrumbs.init(result);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 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.getBreadcrumbsByItemIdentifier(itemIdentifier, includeItemAsParent, new AsyncCallback<List<Item>>() {
|
|
|
|
@Override
|
|
public void onFailure(Throwable caught) {
|
|
GWT.log(caught.getMessage());
|
|
wsExplorer.setAlert(caught.getMessage(), AlertType.ERROR);
|
|
}
|
|
|
|
@Override
|
|
public void onSuccess(List<Item> result) {
|
|
if(result!=null)
|
|
breadcrumbs.setPath(result);
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
/**
|
|
* @return the breadcrumbs
|
|
*/
|
|
public Breadcrumbs getBreadcrumbs() {
|
|
return breadcrumbs;
|
|
}
|
|
|
|
/**
|
|
* Gets the workspace explorer panel.
|
|
*
|
|
* @return the workspaceExplorerPanel
|
|
*/
|
|
public WorkspaceExplorerPanel getWorkspaceExplorerPanel() {
|
|
return workspaceExplorerPanel;
|
|
}
|
|
|
|
/**
|
|
* @return the wsExplorer
|
|
*/
|
|
public WorkspaceExplorer getWsExplorer() {
|
|
return wsExplorer;
|
|
}
|
|
|
|
/**
|
|
* @param selectableTypes
|
|
*/
|
|
public void setSelectableTypes(ItemType[] selectableTypes) {
|
|
wsExplorer.setSelectableTypes(selectableTypes);
|
|
}
|
|
|
|
/**
|
|
* @return the selectableTypes
|
|
*/
|
|
public List<ItemType> getSelectableTypes() {
|
|
return wsExplorer.getSelectableTypes();
|
|
}
|
|
|
|
/**
|
|
* @return
|
|
*/
|
|
public List<ItemType> getShowableTypes() {
|
|
return wsExplorer.getShowableTypes();
|
|
}
|
|
|
|
/**
|
|
* @param showableTypes
|
|
*/
|
|
public void setShowableTypes(ItemType[] showableTypes) {
|
|
wsExplorer.setShowableTypes(showableTypes);
|
|
}
|
|
}
|