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(fileNameTextBox);
footerHP.add(saveButton); footerHP.add(saveButton);
footerHP.addStyleName("footerHP"); footerHP.addStyleName("footerHP");
mainVP.add(controller.getWorkspaceExplorerPanel()); mainVP.add(controller.getWorkspaceExplorerPanel());
mainVP.add(footerHP); mainVP.add(footerHP);

View File

@ -66,6 +66,22 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace
controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.HEIGHT_EXPLORER_PANEL); controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.HEIGHT_EXPLORER_PANEL);
loadExplorer(captionTxt); 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.WorkspaceExplorerConstants;
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController; 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.event.LoadRootEvent;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.HasWorskpaceExplorerSelectNotificationListener; 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.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.Alert;
import com.github.gwtbootstrap.client.ui.Button; 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.AlertType;
import com.github.gwtbootstrap.client.ui.constants.ButtonType; import com.github.gwtbootstrap.client.ui.constants.ButtonType;
import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler; 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.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel; 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{ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWorskpaceExplorerSelectNotificationListener{
private Button selectButton;
private WorkspaceExplorerSelectPanel INSTANCE = this; private WorkspaceExplorerSelectPanel INSTANCE = this;
private boolean isSelect = false; private boolean isSelect = false;
private String captionTxt; private String captionTxt;
private ModalFooter footer = new ModalFooter();
private Alert alertConfirm; private Alert alertConfirm;
private WorkspaceExplorerController controller; private WorkspaceExplorerController controller;
private List<WorskpaceExplorerSelectNotificationListener> listeners = new ArrayList<WorskpaceExplorerSelectNotificationListener>(); private List<WorskpaceExplorerSelectNotificationListener> listeners = new ArrayList<WorskpaceExplorerSelectNotificationListener>();
private VerticalPanel mainVP = new VerticalPanel(); private VerticalPanel mainVP = new VerticalPanel();
private HorizontalPanel footerHP = new HorizontalPanel();
/** /**
* Instantiates a new workspace explorer select panel. * Instantiates a new workspace explorer select panel.
@ -55,6 +56,29 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
loadExplorer(captionTxt); 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. * Instantiates a new workspace explorer select panel.
@ -66,9 +90,25 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.AUTO); controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.AUTO);
loadExplorer(captionTxt); 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. * Instantiates a new workspace explorer select panel.
* *
@ -77,14 +117,12 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
*/ */
public WorkspaceExplorerSelectPanel(String captionTxt, boolean showOnlyFolders) { public WorkspaceExplorerSelectPanel(String captionTxt, boolean showOnlyFolders) {
controller = new WorkspaceExplorerController(WorkspaceExplorerConstants.AUTO); controller = new WorkspaceExplorerController(WorkspaceExplorerConstants.AUTO);
if(showOnlyFolders){ if(showOnlyFolders){
ItemType[] itemsType = new ItemType[1]; ItemType[] itemsType = new ItemType[1];
itemsType[0] = ItemType.FOLDER; itemsType[0] = ItemType.FOLDER;
setSelectableTypes(itemsType); setSelectableTypes(itemsType);
setShowableTypes(itemsType); setShowableTypes(itemsType);
} }
loadExplorer(captionTxt); loadExplorer(captionTxt);
} }
@ -120,7 +158,8 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
* @param captionTxt the caption txt * @param captionTxt the caption txt
*/ */
private void loadExplorer(String captionTxt){ private void loadExplorer(String captionTxt){
WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent()); WorkspaceExplorerController.eventBus.fireEvent(new LoadRootEvent());
bindEvents();
initPanel(captionTxt); initPanel(captionTxt);
} }
@ -134,34 +173,12 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
this.captionTxt = captionTxt; this.captionTxt = captionTxt;
if(this.captionTxt!=null && !this.captionTxt.isEmpty()) if(this.captionTxt!=null && !this.captionTxt.isEmpty())
setTitle(this.captionTxt); setTitle(this.captionTxt);
selectButton = new Button(WorkspaceExplorerConstants.SELECT);
selectButton.setType(ButtonType.PRIMARY);
setWidth(WorkspaceExplorerConstants.WIDHT_DIALOG+"px"); setWidth(WorkspaceExplorerConstants.WIDHT_DIALOG+"px");
add(controller.getWorkspaceExplorerPanel()); 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); setAlertConfirm("", false, null);
footer.add(selectButton);
mainVP.add(controller.getWorkspaceExplorerPanel()); mainVP.add(controller.getWorkspaceExplorerPanel());
mainVP.add(footer); mainVP.add(footerHP);
add(mainVP); add(mainVP);
} }
@ -175,7 +192,7 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
*/ */
private void setAlertConfirm(String html, boolean show, final Item item){ private void setAlertConfirm(String html, boolean show, final Item item){
try{ try{
footer.remove(alertConfirm); footerHP.remove(alertConfirm);
}catch(Exception e){ }catch(Exception e){
//silent //silent
} }
@ -210,7 +227,7 @@ public class WorkspaceExplorerSelectPanel extends ScrollPanel implements HasWors
}); });
alertConfirm.add(yes); alertConfirm.add(yes);
alertConfirm.add(no); alertConfirm.add(no);
footer.insert(alertConfirm,0); footerHP.insert(alertConfirm,0);
} }
/** /**
* Notify selected item. * Notify selected item.

View File

@ -21,11 +21,5 @@ public interface SelectionItem {
* @return the selected item * @return the selected item
*/ */
Item getSelectedItem(); 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.WorkspaceExplorerController;
import org.gcube.portlets.widgets.wsexplorer.client.event.ClickItemEvent; 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.resources.CellTableResources;
import org.gcube.portlets.widgets.wsexplorer.client.view.SelectionItem;
import org.gcube.portlets.widgets.wsexplorer.shared.Item; import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import com.github.gwtbootstrap.client.ui.CellTable; 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 * @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 CellTable<Item> cellTable;
protected ListDataProvider<Item> dataProvider = new ListDataProvider<Item>(); protected ListDataProvider<Item> dataProvider = new ListDataProvider<Item>();
protected Item itemContextMenu = null; protected Item itemContextMenu = null;
protected boolean showMoreInfo; protected boolean showMoreInfo;
protected final SingleSelectionModel<Item> ssm;
/** /**
* Inits the table. * Inits the table.
@ -65,12 +65,13 @@ public abstract class AbstractItemsCellTable implements SelectionItem{
cellTable.addStyleName("table-overflow"); cellTable.addStyleName("table-overflow");
cellTable.setStriped(true); cellTable.setStriped(true);
cellTable.setCondensed(true); cellTable.setCondensed(true);
cellTable.setWidth("100%", true); cellTable.setWidth("100%", false);
cellTable.setHeight("100px");
dataProvider.addDataDisplay(cellTable); dataProvider.addDataDisplay(cellTable);
initTable(cellTable, null, null); initTable(cellTable, null, null);
cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
final SingleSelectionModel<Item> ssm = new SingleSelectionModel<Item>(); ssm = new SingleSelectionModel<Item>();
cellTable.setSelectionModel(ssm); cellTable.setSelectionModel(ssm);
ssm.addSelectionChangeHandler(new Handler() { ssm.addSelectionChangeHandler(new Handler() {
@Override @Override
@ -79,7 +80,7 @@ public abstract class AbstractItemsCellTable implements SelectionItem{
final Item selectedObject = ssm.getSelectedObject(); final Item selectedObject = ssm.getSelectedObject();
if(selectedObject!=null){ if(selectedObject!=null){
GWT.log("Clicked: "+selectedObject); GWT.log("Clicked: "+selectedObject);
selectedItem(selectedObject); // selectedItem(selectedObject);
if(showMoreInfo) if(showMoreInfo)
WorkspaceExplorerController.eventBus.fireEvent(new ClickItemEvent(selectedObject)); WorkspaceExplorerController.eventBus.fireEvent(new ClickItemEvent(selectedObject));
} }

View File

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