package org.geosdi.geoplatform.gui.client.widget.grid.pagination.grid;
import com.extjs.gxt.ui.client.Style;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import org.geosdi.geoplatform.gui.client.widget.grid.pagination.GeoPlatformSearchPanel;
import org.geosdi.geoplatform.gui.model.GeoPlatformBeanModel;
/**
* @author Vito Salvia - CNR IMAA geoSDI Group
* @email vito.salvia@gmail.com
*/
public abstract class GPGridSearchPanel<T extends GeoPlatformBeanModel>
extends GeoPlatformSearchPanel<Grid<T>, T> {
public GPGridSearchPanel(boolean lazy) {
super(lazy);
}
public GPGridSearchPanel(boolean lazy, int pageSize) {
super(lazy, pageSize);
}
@Override
public void initWidget() {
ColumnModel cm = prepareColumnModel();
super.widget = new Grid<T>(store, cm);
super.widget.setBorders(true);
super.widget.getSelectionModel().setSelectionMode(Style.SelectionMode.SINGLE);
super.widget.addListener(Events.CellClick, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
if (widget.getSelectionModel().getSelection().size() > 0) {
actionAfterSelect();
} else {
actionAfterDeselect();
}
}
});
super.widget.addListener(Events.CellDoubleClick, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
executeSelect();
}
});
setGridProperties();
}
protected void actionAfterSelect(){
selectButton.enable();
}
protected void actionAfterDeselect(){
selectButton.disable();
}
public abstract void setGridProperties();
public abstract ColumnModel prepareColumnModel();
}