Esto en un ejemplo que viene el la pagina de sencha.com con algo mas de miga
en la parte del view debemos tener algo como esto
public void getListado(final ClickHandler handlerEdit, final ClickHandler handlerDelete,
final ConjuntoServicios servicios,
boolean bReadOnly) {
cp = new ContentPanel();
List
// A�adimos las columnas.
ColumnConfig clmncnfgID = new ColumnConfig(«id», «Id», 100);
clmncnfgID.setHidden(true);
configs.add(clmncnfgID);
ColumnConfig clmncnfgSeccion = new ColumnConfig(«id_1», servicios.getConstants().cmn_nombre(), 200);
configs.add(clmncnfgSeccion);
ColumnConfig clmncnfgCodigo = new ColumnConfig(«id_2», servicios.getConstants().cmn_codigo(), 200);
configs.add(clmncnfgCodigo);
//añadimos el boton el colum render
// en este caso tenemos dos botones una de bajada y otro de subida
GridCellRenderer
public Object render(final BaseModel model, String property, ColumnData config, final int rowIndex,
final int colIndex, ListStore
init = true;
grid.addListener(Events.ColumnResize, new Listener
public void handleEvent(GridEvent
for (int i = 0; i < be.getGrid().getStore().getCount(); i++) { if (be.getGrid().getView().getWidget(i, be.getColIndex()) != null ){ // && be.getGrid().getView().getWidget(i, be.getColIndex()) instanceof BoxComponent) { //((BoxComponent) be.getGrid().getView().getWidget(i, be.getColIndex())).setWidth(be.getWidth() – 10); } } } }); Button bntDown = new Button(); bntDown.addSelectionListener( new SelectionListener
@Override
public void componentSelected(ButtonEvent ce) {
GridEvent
gridEvent.setModel(model);
//este es el evento que mando por boton que recojo en el presenter
grid.fireEvent(Events.Deactivate, gridEvent);
}
});
bntDown.setWidth(17);
bntDown.setHeight(17);
bntDown.setIconStyle(«icon_bajar»);
return bntDown;
}
};
//segundo boton
GridCellRenderer
public Object render(final BaseModel model, String property, ColumnData config, final int rowIndex,
final int colIndex, ListStore
if (!init) {
init = true;
}
Button bntUp = new Button();
bntUp.addSelectionListener( new SelectionListener
@Override
public void componentSelected(ButtonEvent ce) {
GridEvent
gridEvent.setModel(model);
//evento que se lanza desde el view
grid.fireEvent(Events.TwinTriggerClick, gridEvent);
}
});
bntUp.setWidth(17);
bntUp.setHeight(17);
bntUp.setIconStyle(«icon_subir»);
return bntUp;
}
};
ColumnConfig columordenBajar= new ColumnConfig(«in_orden», «», 30);
columordenBajar.setRenderer(buttonDownRenderer);
configs.add(columordenBajar);
ColumnConfig columordenSubir= new ColumnConfig(«id_version», «», 30);
columordenSubir.setRenderer(buttonUpRenderer);
configs.add(columordenSubir);
ColumnConfig clmncnfgEditar = new ColumnConfig(«idEditar», «», 80);
configs.add(clmncnfgEditar);
ColumnConfig clmncnfgEliminar = new ColumnConfig(«idEliminar», «», 80);
configs.add(clmncnfgEliminar);
GridCellRenderer
@Override
public Object render(final BaseModel model, final String property, ColumnData config,
final int rowIndex, final int colIndex, final ListStore
final Grid
Anchor enlaceEditar = new Anchor(«Editar», «#»);
if (handlerEdit!=null) enlaceEditar.addClickHandler(handlerEdit);
return enlaceEditar;
}};
clmncnfgEditar.setAlignment(HorizontalAlignment.CENTER);
clmncnfgEditar.setRenderer(accionesEditarRenderer);
// Renderer de eliminar,
GridCellRenderer
@Override
public Object render(final BaseModel model, final String property, ColumnData config,
final int rowIndex, final int colIndex, final ListStore
final Grid
Anchor enlaceEliminar = new Anchor(«Eliminar», «#»);
if (handlerDelete!=null) enlaceEliminar.addClickHandler(handlerDelete);
return enlaceEliminar;
}};
clmncnfgEliminar.setAlignment(HorizontalAlignment.CENTER);
clmncnfgEliminar.setRenderer(accionesEliminarRenderer);
grid = new Grid
grid.setBorders(false);
//gridCompositeSecciones.setLoadMask(true);
grid.setAutoExpandColumn(«no_garantia»);
grid.setAutoExpandMax(1500);
grid.addListener(Events.ViewReady, Tools.configAutoHeightListener(this.grid, this.cp));
grid.addListener(Events.ColumnResize, Tools.configAutoHeightListener(this.grid, this.cp));
grid.getColumnModel().addListener(Events.HiddenChange, Tools.configAutoHeightListener(this.grid, this.cp));
grid.getStore().addListener(Store.Add, Tools.configAutoHeightListener(this.grid, this.cp));
Tools.maskEmptyGrid(grid, CasiopeaMessages.INSTANCE.grid_vacio_pulse_anadir());
en la parte del presenter en el bind() o donde declares los botones
como los eventos eran del grid aunque generados por los botoenes por eso tenemos que mandar el grid entero
this.display.getGrid().addListener(Events.Deactivate, new Listenert
@Override
public void handleEvent(GridEvent
actualizarSeccionOrden(-1,be.getModel(),be.getGrid().getStore().getCount());
}
});
this.display.getGrid().addListener(Events.TwinTriggerClick, new Listener
@Override
public void handleEvent(GridEvent
actualizarSeccionOrden(+1,be.getModel(),be.getGrid().getStore().getCount());
}
});