package org.gcube.portlets.widgets.wsexplorer.client.grid; import java.util.List; import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerController; import org.gcube.portlets.widgets.wsexplorer.client.resources.CellTableResources; import org.gcube.portlets.widgets.wsexplorer.shared.Item; import com.github.gwtbootstrap.client.ui.CellTable; import com.github.gwtbootstrap.client.ui.Pagination; import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.DoubleClickEvent; import com.google.gwt.event.dom.client.DoubleClickHandler; 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; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.SelectionChangeEvent.Handler; import com.google.gwt.view.client.SingleSelectionModel; /** * The Class AbstractItemTable. * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Feb 19, 2015 */ public abstract class AbstractItemsCellTable { protected CellTable cellTable; protected ListDataProvider dataProvider = new ListDataProvider(); /** * Inits the table. * * @param ItemTable * the Item table * @param pager * the pager * @param pagination * the pagination */ public abstract void initTable(AbstractCellTable ItemTable, final SimplePager pager, final Pagination pagination); /** * Instantiates a new abstract Item table. * * @param showGroupId * the show group id */ public AbstractItemsCellTable() { cellTable = new CellTable(1, CellTableResources.INSTANCE); cellTable.addStyleName("table-overflow"); cellTable.setStriped(true); // cellTable.setBordered(true); cellTable.setCondensed(true); cellTable.setWidth("100%", true); dataProvider.addDataDisplay(cellTable); initTable(cellTable, null, null); cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); final SingleSelectionModel ssm = new SingleSelectionModel(); cellTable.setSelectionModel(ssm); ssm.addSelectionChangeHandler(new Handler() { @Override public void onSelectionChange(final SelectionChangeEvent event) { final Item selectedObject = ssm.getSelectedObject(); GWT.log("Clicked: "+selectedObject); } }); cellTable.addDomHandler(new DoubleClickHandler() { @Override public void onDoubleClick(final DoubleClickEvent event) { 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)); } } }, DoubleClickEvent.getType()); /* cellTable.addCellPreviewHandler(new CellPreviewEvent.Handler () { long lastClick=-1000; @Override public void onCellPreview(CellPreviewEvent event) { long clictAt = System.currentTimeMillis(); GWT.log("clickAt: "+(clictAt)); GWT.log("lastClick: "+(lastClick)); if(event.getNativeEvent().getType().contains("click")){ GWT.log(""+(clictAt-lastClick)); if(clictAt-lastClick < 300) { // dblclick on 2 clicks detected within 300 ms Window.alert("I am a double click crafted event!"); } lastClick = System.currentTimeMillis(); } } }); */ } /** * Adds the Items. * * @param Items * the Items */ public void addItems(List Items) { dataProvider.getList().clear(); for (Item pckg : Items) addItem(pckg); cellTable.setPageSize(Items.size() + 1); cellTable.redraw(); } /** * Adds the Item. * * @param pckg * the pckg */ private void addItem(Item pckg) { dataProvider.getList().add(pckg); dataProvider.flush(); dataProvider.refresh(); } /** * Gets the cell tables. * * @return the cell tables */ public CellTable getCellTable() { return cellTable; } /** * Gets the data provider. * * @return the data provider */ public ListDataProvider getDataProvider() { return dataProvider; } /** * Sets the data provider. * * @param dataProvider * the new data provider */ public void setDataProvider(ListDataProvider dataProvider) { this.dataProvider = dataProvider; } }