256: Workspace explorer

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

Added new constructror FilterCriteria, ShowableType

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@117586 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2015-07-31 09:28:47 +00:00
parent ac13de6141
commit bf5958fedc
6 changed files with 78 additions and 57 deletions

View File

@ -171,7 +171,7 @@ public class WorkspaceExplorerSavePanel extends ScrollPanel implements HasWorskp
footerHP.add(fileNameTextBox);
footerHP.add(saveButton);
footerHP.addStyleName("footerHP");
mainVP.add(controller.getWorkspaceExplorerPanel());
mainVP.add(footerHP);

View File

@ -66,6 +66,22 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace
controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.HEIGHT_EXPLORER_PANEL);
loadExplorer(captionTxt);
}
/**
* Instantiates a new workspace explorer select dialog.
* You can implement {@link WorskpaceExplorerSelectNotificationListener} to receive events
* @param captionTxt the caption txt
* @param filterCriteria the filter criteria
*/
public WorkspaceExplorerSelectDialog(String captionTxt, FilterCriteria filterCriteria, List<ItemType> selectableTypes) {
controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.HEIGHT_EXPLORER_PANEL);
if(selectableTypes!=null){
ItemType[] itemsType = new ItemType[selectableTypes.size()];
itemsType = selectableTypes.toArray(itemsType);
setSelectableTypes(selectableTypes.toArray(itemsType));
}
loadExplorer(captionTxt);
}
/**

View File

@ -8,6 +8,8 @@ import java.util.List;
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.LoadRootEvent;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.HasWorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
@ -17,11 +19,11 @@ import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.github.gwtbootstrap.client.ui.Alert;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.ModalFooter;
import com.github.gwtbootstrap.client.ui.constants.AlertType;
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
@ -35,15 +37,14 @@ import com.google.gwt.user.client.ui.VerticalPanel;
*/
public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWorskpaceExplorerSelectNotificationListener{
private Button selectButton;
private WorkspaceExplorerSelectPanel INSTANCE = this;
private boolean isSelect = false;
private String captionTxt;
private ModalFooter footer = new ModalFooter();
private Alert alertConfirm;
private WorkspaceExplorerController controller;
private List<WorskpaceExplorerSelectNotificationListener> listeners = new ArrayList<WorskpaceExplorerSelectNotificationListener>();
private VerticalPanel mainVP = new VerticalPanel();
private HorizontalPanel footerHP = new HorizontalPanel();
/**
* Instantiates a new workspace explorer select panel.
@ -55,6 +56,29 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
loadExplorer(captionTxt);
}
/**
* Bind events.
*/
private void bindEvents(){
WorkspaceExplorerController.eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() {
@Override
public void onClick(final ClickItemEvent clickItemEvent) {
isSelect = false;
boolean itemIsSelectable = controller.getWsExplorer().itemIsSelectable();
if(itemIsSelectable){
notifySelectedItem(controller.getWsExplorer().getItemSelected());
isSelect = true;
}
/*else{ //IGNORING ITEMS NOT SELECTABLE, USING BREADCRUMBS?
Item itemB = controller.getBreadcrumbs().getLastParent();
if(itemB!=null)
setAlertConfirm("Selecting \""+itemB.getName()+"\", confirm?", true, itemB);
}*/
}
});
}
/**
* Instantiates a new workspace explorer select panel.
@ -66,9 +90,25 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.AUTO);
loadExplorer(captionTxt);
}
/**
* Instantiates a new workspace explorer select panel.
*
* @param captionTxt the caption txt
* @param filterCriteria the filter criteria
* @param selectableTypes the selectable types
*/
public WorkspaceExplorerSelectPanel(String captionTxt, FilterCriteria filterCriteria, List<ItemType> selectableTypes) {
controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.AUTO);
if(selectableTypes!=null){
ItemType[] itemsType = new ItemType[selectableTypes.size()];
itemsType = selectableTypes.toArray(itemsType);
setSelectableTypes(selectableTypes.toArray(itemsType));
}
loadExplorer(captionTxt);
}
/**
* Instantiates a new workspace explorer select panel.
*
@ -77,14 +117,12 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
*/
public WorkspaceExplorerSelectPanel(String captionTxt, boolean showOnlyFolders) {
controller = new WorkspaceExplorerController(WorkspaceExplorerConstants.AUTO);
if(showOnlyFolders){
ItemType[] itemsType = new ItemType[1];
itemsType[0] = ItemType.FOLDER;
setSelectableTypes(itemsType);
setShowableTypes(itemsType);
}
loadExplorer(captionTxt);
}
@ -120,7 +158,8 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
* @param captionTxt the caption txt
*/
private void loadExplorer(String captionTxt){
WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent());
WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent());
bindEvents();
initPanel(captionTxt);
}
@ -134,34 +173,12 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
this.captionTxt = captionTxt;
if(this.captionTxt!=null && !this.captionTxt.isEmpty())
setTitle(this.captionTxt);
selectButton = new Button(WorkspaceExplorerConstants.SELECT);
selectButton.setType(ButtonType.PRIMARY);
setWidth(WorkspaceExplorerConstants.WIDHT_DIALOG+"px");
add(controller.getWorkspaceExplorerPanel());
selectButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
isSelect = false;
Item item = controller.getWsExplorer().getItemSelected();
if(item!=null){
isSelect = true;
notifySelectedItem(item);
}else if(!controller.getWsExplorer().itemIsSelectable()){ //IGNORING ITEMS NOT SELECTABLE, USING BREADCRUMBS
Item itemB = controller.getBreadcrumbs().getLastParent();
if(itemB!=null){
setAlertConfirm("Selecting \""+itemB.getName()+"\", confirm?", true, itemB);
}
}
}
});
setAlertConfirm("", false, null);
footer.add(selectButton);
mainVP.add(controller.getWorkspaceExplorerPanel());
mainVP.add(footer);
mainVP.add(footerHP);
add(mainVP);
}
@ -175,7 +192,7 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
*/
private void setAlertConfirm(String html, boolean show, final Item item){
try{
footer.remove(alertConfirm);
footerHP.remove(alertConfirm);
}catch(Exception e){
//silent
}
@ -210,7 +227,7 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
});
alertConfirm.add(yes);
alertConfirm.add(no);
footer.insert(alertConfirm,0);
footerHP.insert(alertConfirm,0);
}
/**
* Notify selected item.

View File

@ -21,11 +21,5 @@ public interface SelectionItem {
* @return the selected item
*/
Item getSelectedItem();
/**
* Selected item.
*
* @param item the item
*/
void selectedItem(Item item);
}

View File

@ -5,7 +5,6 @@ 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.client.view.SelectionItem;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import com.github.gwtbootstrap.client.ui.CellTable;
@ -34,12 +33,13 @@ import com.google.gwt.view.client.SingleSelectionModel;
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Feb 19, 2015
*/
public abstract class AbstractItemsCellTable implements SelectionItem{
public abstract class AbstractItemsCellTable {
protected CellTable<Item> cellTable;
protected ListDataProvider<Item> dataProvider = new ListDataProvider<Item>();
protected Item itemContextMenu = null;
protected boolean showMoreInfo;
protected final SingleSelectionModel<Item> ssm;
/**
* Inits the table.
@ -65,12 +65,13 @@ public abstract class AbstractItemsCellTable implements SelectionItem{
cellTable.addStyleName("table-overflow");
cellTable.setStriped(true);
cellTable.setCondensed(true);
cellTable.setWidth("100%", true);
cellTable.setWidth("100%", false);
cellTable.setHeight("100px");
dataProvider.addDataDisplay(cellTable);
initTable(cellTable, null, null);
cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
final SingleSelectionModel<Item> ssm = new SingleSelectionModel<Item>();
ssm = new SingleSelectionModel<Item>();
cellTable.setSelectionModel(ssm);
ssm.addSelectionChangeHandler(new Handler() {
@Override
@ -79,7 +80,7 @@ public abstract class AbstractItemsCellTable implements SelectionItem{
final Item selectedObject = ssm.getSelectedObject();
if(selectedObject!=null){
GWT.log("Clicked: "+selectedObject);
selectedItem(selectedObject);
// selectedItem(selectedObject);
if(showMoreInfo)
WorkspaceExplorerController.eventBus.fireEvent(new ClickItemEvent(selectedObject));
}

View File

@ -9,6 +9,7 @@ import java.util.List;
import java.util.Set;
import org.gcube.portlets.widgets.wsexplorer.client.Util;
import org.gcube.portlets.widgets.wsexplorer.client.view.SelectionItem;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import com.github.gwtbootstrap.client.ui.Pagination;
@ -33,7 +34,7 @@ import com.google.gwt.user.client.ui.Label;
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Feb 19, 2015
*/
public class ItemsTable extends AbstractItemsCellTable {
public class ItemsTable extends AbstractItemsCellTable implements SelectionItem{
private Column<Item, ImageResource> icon;
private TextColumn<Item> name;
@ -164,20 +165,12 @@ public class ItemsTable extends AbstractItemsCellTable {
sb.append(html);
}
}
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.wsexplorer.client.grid.AbstractItemsCellTable#selectedItem(org.gcube.portlets.widgets.wsexplorer.shared.Item)
*/
@Override
public void selectedItem(Item item) {
this.selectedItem = item;
}
/* (non-Javadoc)
* @see org.gcube.portlets.widgets.wsexplorer.client.notification.SelectionItemHandler#getSelectionItem()
*/
@Override
public Item getSelectedItem() {
return selectedItem;
return ssm.getSelectedObject();
}
}