1657: StatMan AIgorithms Importer - Create a widget to sopport Project Explorer

Task-Url: https://support.d4science.org/issues/1657

Updated WorkspaceResourcesExplorer

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@120583 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2015-12-03 11:03:12 +00:00
parent 52deed0837
commit 6590a6a4a5
7 changed files with 138 additions and 40 deletions

View File

@ -52,8 +52,8 @@ 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();
private Breadcrumbs breadcrumbs = new Breadcrumbs(eventBus);
private Navigation navigation = new Navigation(eventBus);
public static final WorkspaceExplorerServiceAsync workspaceNavigatorService = GWT.create(WorkspaceExplorerService.class);
@ -66,7 +66,7 @@ public class WorkspaceExplorerController implements EventHandler {
public WorkspaceExplorerController(String heightPanel){
bindEvents();
//As default all items are showable and selectable
wsExplorer = new WorkspaceExplorer(ItemType.values(), ItemType.values());
wsExplorer = new WorkspaceExplorer(eventBus, ItemType.values(), ItemType.values());
workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getPanel(), breadcrumbs, navigation, heightPanel);
}
@ -82,7 +82,7 @@ public class WorkspaceExplorerController implements EventHandler {
public WorkspaceExplorerController(FilterCriteria filterCriteria, String heightPanel) {
bindEvents();
//As default all items are showable and selectable
wsExplorer = new WorkspaceExplorer(filterCriteria, ItemType.values(), ItemType.values());
wsExplorer = new WorkspaceExplorer(eventBus, filterCriteria, ItemType.values(), ItemType.values());
workspaceExplorerPanel = new WorkspaceExplorerPanel(5, wsExplorer.getPanel(), breadcrumbs, navigation, heightPanel);
}

View File

@ -1,18 +1,20 @@
/**
*
*/
package org.gcube.portlets.widgets.wsexplorer.client.select;
package org.gcube.portlets.widgets.wsexplorer.client.explore;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.widgets.wsexplorer.client.Util;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEvent;
import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEventHandler;
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.notification.WorkspaceExplorerSelectNotification.HasWorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.view.Breadcrumbs;
import org.gcube.portlets.widgets.wsexplorer.client.view.WorkspaceExplorer;
import org.gcube.portlets.widgets.wsexplorer.client.view.grid.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
@ -25,6 +27,9 @@ import com.github.gwtbootstrap.client.ui.constants.ButtonType;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
@ -37,9 +42,9 @@ import com.google.gwt.user.client.ui.VerticalPanel;
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Jul 28, 2015
*/
public class WorkspaceFolderExplorerSelectPanel extends ScrollPanel implements HasWorskpaceExplorerSelectNotificationListener{
public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWorskpaceExplorerSelectNotificationListener{
private WorkspaceFolderExplorerSelectPanel INSTANCE = this;
private WorkspaceResourcesExplorerPanel INSTANCE = this;
private boolean isSelect = false;
private String captionTxt;
private Alert alertConfirm;
@ -48,7 +53,12 @@ public class WorkspaceFolderExplorerSelectPanel extends ScrollPanel implements H
private VerticalPanel mainVP = new VerticalPanel();
private HorizontalPanel footerHP = new HorizontalPanel();
private WorkspaceExplorer wsExplorer;
private ScrollPanel centerScrollable = new ScrollPanel();
private ScrollPanel southPanel = new ScrollPanel();
public int defaultWidth = 200;
public int defaultHeight = 200;
public final HandlerManager eventBus = new HandlerManager(null);
private Breadcrumbs breadcrumbs = new Breadcrumbs(eventBus);
/**
* Instantiates a new workspace folder explorer select panel.
@ -56,17 +66,16 @@ public class WorkspaceFolderExplorerSelectPanel extends ScrollPanel implements H
* @param folderId the folder id
* @throws Exception
*/
public WorkspaceFolderExplorerSelectPanel(String folderId, String folderName) throws Exception {
public WorkspaceResourcesExplorerPanel(String folderId, String folderName) throws Exception {
initExplorer(folderId, folderName, ItemType.values(), ItemType.values());
}
private void initExplorer(String folderId, String folderName, ItemType[] selectableTypes, ItemType[] showableTypes) throws Exception{
bindEvents();
wsExplorer = new WorkspaceExplorer(showableTypes, selectableTypes, new DISPLAY_FIELD[]{DISPLAY_FIELD.ICON, DISPLAY_FIELD.NAME});
wsExplorer = new WorkspaceExplorer(eventBus, showableTypes, selectableTypes, new DISPLAY_FIELD[]{DISPLAY_FIELD.ICON, DISPLAY_FIELD.NAME});
Item item = new Item(folderId, folderName, true);
wsExplorer.loadFolder(item);
initPanel("");
}
/**
@ -76,7 +85,7 @@ public class WorkspaceFolderExplorerSelectPanel extends ScrollPanel implements H
* @param showOnlyFolders the show only folders
* @throws Exception
*/
public WorkspaceFolderExplorerSelectPanel(String folderId, boolean showOnlyFolders) throws Exception {
public WorkspaceResourcesExplorerPanel(String folderId, boolean showOnlyFolders) throws Exception {
if(showOnlyFolders){
ItemType[] itemsType = new ItemType[1];
@ -92,7 +101,8 @@ public class WorkspaceFolderExplorerSelectPanel extends ScrollPanel implements H
* Bind events.
*/
private void bindEvents(){
WorkspaceExplorerController.eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() {
eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() {
@Override
public void onClick(final ClickItemEvent clickItemEvent) {
@ -109,15 +119,68 @@ public class WorkspaceFolderExplorerSelectPanel extends ScrollPanel implements H
isSelect = true;
}
});
eventBus.addHandler(LoadFolderEvent.TYPE, new LoadFolderEventHandler() {
@Override
public void onLoadFolder(LoadFolderEvent loadFolderEvent) {
if(loadFolderEvent.getTargetItem()!=null && loadFolderEvent.getTargetItem().isFolder()){
try {
wsExplorer.loadFolder(loadFolderEvent.getTargetItem());
loadParentBreadcrumbByItemId(loadFolderEvent.getTargetItem().getId(), true);
clearMoreInfo();
} catch (Exception e) {
GWT.log(e.getMessage());
}
}
}
});
}
@Override
public void onResize() {
super.onResize();
GWT.log("on Resize...");
adjustSize();
/**
* 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+"]");
WorkspaceExplorerController.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);
clearMoreInfo();
}
}
});
}
/**
* Clear more info.
*/
private void clearMoreInfo(){
southPanel.clear();
}
// @Override
// public void onResize() {
// super.onResize();
// GWT.log("on Resize...");
// adjustSize();
// }
/* (non-Javadoc)
* @see com.google.gwt.user.client.ui.Widget#onLoad()
*/
@ -145,11 +208,19 @@ public class WorkspaceFolderExplorerSelectPanel extends ScrollPanel implements H
if(this.captionTxt!=null && !this.captionTxt.isEmpty())
setTitle(this.captionTxt);
setWidth(WorkspaceExplorerConstants.WIDHT_DIALOG+"px");
setSize(200+"px", 200+"px");
add(breadcrumbs, DockPanel.NORTH);
// centerScrollable.setSize(width+"px", height);
setAlertConfirm("", false, null);
mainVP.add(wsExplorer.getPanel());
mainVP.add(footerHP);
add(mainVP);
centerScrollable.add(mainVP);
add(centerScrollable, DockPanel.CENTER);
southPanel.ensureDebugId("SouthPanelWEP");
add(footerHP, DockPanel.SOUTH);
}

View File

@ -6,7 +6,6 @@ package org.gcube.portlets.widgets.wsexplorer.client.view;
import java.util.LinkedHashMap;
import java.util.List;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
import org.gcube.portlets.widgets.wsexplorer.client.event.BreadcrumbClickEvent;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
@ -14,6 +13,7 @@ import com.github.gwtbootstrap.client.ui.NavLink;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
@ -33,6 +33,8 @@ public class Breadcrumbs extends Composite {
@UiField
com.github.gwtbootstrap.client.ui.Breadcrumbs breadcrumbs;
private HandlerManager eventBus;
/**
* The Interface BreadcrumbsUiBinder.
@ -46,8 +48,9 @@ public class Breadcrumbs extends Composite {
/**
* Instantiates a new breadcrumbs.
*/
public Breadcrumbs() {
public Breadcrumbs(HandlerManager eventBus) {
initWidget(uiBinder.createAndBindUi(this));
this.eventBus = eventBus;
breadcrumbs.setDivider(DIVIDER);
// init();
// initBreadcrumb(true);
@ -109,7 +112,7 @@ public class Breadcrumbs extends Composite {
Item target = hashListItems.get(navLink.getName());
// WorkspaceExplorerController.eventBus.fireEvent(new LoadFolderEvent(target));
WorkspaceExplorerController.eventBus.fireEvent(new BreadcrumbClickEvent(target));
eventBus.fireEvent(new BreadcrumbClickEvent(target));
}
});
}

View File

@ -16,6 +16,7 @@ import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.rpc.AsyncCallback;
@ -37,6 +38,8 @@ public class Navigation extends Composite{
@UiField
NavWidget vre_folder;
private HandlerManager eventBus;
/**
* The Interface BreadcrumbsUiBinder.
*
@ -47,10 +50,12 @@ public class Navigation extends Composite{
}
/**
* @param eventbus
*
*/
public Navigation() {
public Navigation(HandlerManager eventBus) {
initWidget(uiBinder.createAndBindUi(this));
this.eventBus = eventBus;
getElement().getStyle().setMarginLeft(5.0, Unit.PX);
home.setActive(true);
@ -75,7 +80,7 @@ public class Navigation extends Composite{
@Override
public void onClick(ClickEvent event) {
WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent());
Navigation.this.eventBus.fireEvent(new LoadRootEvent());
}
});
@ -102,7 +107,7 @@ public class Navigation extends Composite{
@Override
public void onClick(ClickEvent event) {
WorkspaceExplorerController.eventBus.fireEvent(new LoadMySpecialFolderEvent());
Navigation.this.eventBus.fireEvent(new LoadMySpecialFolderEvent());
}
});
}

View File

@ -17,6 +17,7 @@ import com.github.gwtbootstrap.client.ui.Alert;
import com.github.gwtbootstrap.client.ui.constants.AlertType;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
@ -54,17 +55,22 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
protected ScrollPanel explorerPanel;
private ItemsTable itTables;
private DISPLAY_FIELD[] displayFields;
private HandlerManager eventBus;
/**
* Instantiates a new workspace explorer.
*
* @param eventBus the event bus
* @param showableTypes the showable types
* @param selectableTypes the selectable types
* @param fields the fields
*/
public WorkspaceExplorer(ItemType[] showableTypes, ItemType[] selectableTypes, DISPLAY_FIELD...fields) {
public WorkspaceExplorer(HandlerManager eventBus, ItemType[] showableTypes, ItemType[] selectableTypes, DISPLAY_FIELD...fields) {
this.eventBus = eventBus;
setShowableTypes(showableTypes);
setSelectableTypes(selectableTypes);
itTables = new ItemsTable(true, fields);
itTables = new ItemsTable(eventBus, true, fields);
explorerPanel = new ScrollPanel();
}
@ -72,12 +78,14 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
/**
* Instantiates a new workspace explorer.
*
* @param eventBus the event bus
* @param filterCriteria the filter criteria
* @param showableTypes the showable types
* @param selectableTypes the selectable types
* @param fields the fields
*/
public WorkspaceExplorer(FilterCriteria filterCriteria, ItemType[] showableTypes, ItemType[] selectableTypes, DISPLAY_FIELD...fields) {
this(showableTypes, selectableTypes, fields);
public WorkspaceExplorer(HandlerManager eventBus, FilterCriteria filterCriteria, ItemType[] showableTypes, ItemType[] selectableTypes, DISPLAY_FIELD...fields) {
this(eventBus, showableTypes, selectableTypes, fields);
this.filterCriteria = filterCriteria;
}
@ -132,7 +140,7 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
}
public void onSuccess(Item item) {
WorkspaceExplorerController.eventBus.fireEvent(new RootLoadedEvent(item));
eventBus.fireEvent(new RootLoadedEvent(item));
updateExplorer(item.getChildren());
}
@ -249,6 +257,8 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
/**
* Gets the display fields.
*
* @return the displayFields
*/
public DISPLAY_FIELD[] getDisplayFields() {
@ -257,6 +267,8 @@ public class WorkspaceExplorer implements ShowableTypes, SelectableTypes{
/**
* Sets the display fields.
*
* @param displayFields the displayFields to set
*/
public void setDisplayFields(DISPLAY_FIELD[] displayFields) {

View File

@ -2,7 +2,6 @@ package org.gcube.portlets.widgets.wsexplorer.client.view.grid;
import java.util.List;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController;
import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEvent;
import org.gcube.portlets.widgets.wsexplorer.client.resources.CellTableResources;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
@ -16,6 +15,7 @@ import com.google.gwt.event.dom.client.ContextMenuEvent;
import com.google.gwt.event.dom.client.ContextMenuHandler;
import com.google.gwt.event.dom.client.DoubleClickEvent;
import com.google.gwt.event.dom.client.DoubleClickHandler;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.cellview.client.AbstractCellTable;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.cellview.client.SimplePager;
@ -40,6 +40,7 @@ public abstract class AbstractItemsCellTable {
protected Item itemContextMenu = null;
protected boolean showMoreInfo;
protected final SingleSelectionModel<Item> ssm;
private final HandlerManager eventBus;
/**
* Inits the table.
@ -54,12 +55,16 @@ public abstract class AbstractItemsCellTable {
public abstract void initTable(AbstractCellTable<Item> ItemTable, final SimplePager pager, final Pagination pagination);
/**
* Instantiates a new abstract items cell table.
*
* @param fireMoreInfo the fire more info
* @param eventBus the event bus
* @param fireOnClick the fire on click
*/
public AbstractItemsCellTable(boolean fireOnClick) {
public AbstractItemsCellTable(HandlerManager eventBus, boolean fireOnClick) {
this.eventBus = eventBus;
this.showMoreInfo = fireOnClick;
cellTable = new CellTable<Item>(1, CellTableResources.INSTANCE);
cellTable.addStyleName("table-overflow");
@ -81,7 +86,7 @@ public abstract class AbstractItemsCellTable {
GWT.log("Clicked: "+selectedObject);
// selectedItem(selectedObject);
if(showMoreInfo)
WorkspaceExplorerController.eventBus.fireEvent(new ClickItemEvent(selectedObject));
AbstractItemsCellTable.this.eventBus.fireEvent(new ClickItemEvent(selectedObject));
}
}
});
@ -93,7 +98,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));
AbstractItemsCellTable.this.eventBus.fireEvent(new org.gcube.portlets.widgets.wsexplorer.client.event.LoadFolderEvent(selected));
}
}
},
@ -124,7 +129,7 @@ public abstract class AbstractItemsCellTable {
@Override
public void execute() {
WorkspaceExplorerController.eventBus.fireEvent(new org.gcube.portlets.widgets.wsexplorer.client.event.LoadFolderEvent(itemContextMenu));
AbstractItemsCellTable.this.eventBus.fireEvent(new org.gcube.portlets.widgets.wsexplorer.client.event.LoadFolderEvent(itemContextMenu));
}
};

View File

@ -18,6 +18,7 @@ import com.google.gwt.cell.client.ButtonCell;
import com.google.gwt.cell.client.Cell.Context;
import com.google.gwt.cell.client.ImageResourceCell;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
@ -46,9 +47,10 @@ public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
/**
* Instantiates a new items table.
* @param eventBus
*/
public ItemsTable(boolean showMoreInfo, DISPLAY_FIELD[] fields) {
super(showMoreInfo);
public ItemsTable(HandlerManager eventBus, boolean showMoreInfo, DISPLAY_FIELD[] fields) {
super(eventBus, showMoreInfo);
setDisplayFields(fields);
initTable(cellTable, null, null);
}