aurelie
13 Aug 2009, 12:42 AM
Hi,
I have a grid with a gridCellRenderer which contains a textfield.
A user can modify its value and my problem is that I don't know how to recovery this value.
here is my code :
public class GestionIndicateurProjet extends LayoutContainer {
private ProjetBean projet; //projet pour lequel on veut visualiser les indicateurs
private IndicateurServiceAsync indicateurService = (IndicateurServiceAsync)GWT.create(IndicateurService.class);
private IndicateurProjetServiceAsync indicateurProjetService = (IndicateurProjetServiceAsync)GWT.create(IndicateurProjetService.class);
private QualityConstants constants = GWT.create(QualityConstants.class);
public GestionIndicateurProjet(ProjetBean projet){
this.projet = projet;
}
@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
//Champ représentant la valeur du seuil 1 de l'indicateur
GridCellRenderer<ModelData> valeurSeuil1 = new GridCellRenderer<ModelData>(){
public Object render(final ModelData model, final String property, ColumnData config, final int rowIndex,
final int colIndex, ListStore<ModelData> store, final Grid<ModelData> grid)
{
final TextField<Long> valeur1 = new TextField<Long>();
valeur1.setWidth(40);
indicateurService.findByPK((String)model.get(property), new AsyncCallback<IndicateurBean>(){
@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
@Override
public void onSuccess(final IndicateurBean indicateur) {
indicateurProjetService.getIndicateurProjetByProjetAndByIndicateur(indicateur, projet, new AsyncCallback<IndicateurProjetBean>(){
@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
@Override
public void onSuccess(IndicateurProjetBean indicateurProjet) {
if(indicateurProjet == null) //si l'indicateur n'est pas rattaché à ce projet
{
//on affiche la valeur par défaut qu'il a été attribué à cet indicateur
valeur1.setValue(indicateur.getValeurSeuil1ParDefaut());
}
else //cet indicateur est rattaché à ce projet
{
//on affiche la valeur du seuil1 qui lui a été attribué pour ce projet
valeur1.setValue(indicateurProjet.getValeurSeuil1());
}
}
});
}
});
return valeur1;
}
};
//chargement de tous les indicateurs existants dans la base
RpcProxy<List<IndicateurBean>> proxy = new RpcProxy<List<IndicateurBean>>() {
@Override
public void load(Object loadConfig, AsyncCallback<List<IndicateurBean>> callback) {
indicateurService.getListIndicateurs(callback);
}
};
BeanModelReader reader = new BeanModelReader();
// loader and store
ListLoader<ListLoadResult<ModelData>> loader = new BaseListLoader<ListLoadResult<ModelData>>(proxy, reader);
ListStore<BeanModel> store = new ListStore<BeanModel>(loader);
loader.load();
final List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
//colonne des noms des indicateurs
ColumnConfig column = new ColumnConfig("nom", constants.indicator_name(), 100);
configs.add(column);
//colonne du seuil1 de l'indicateur
column = new ColumnConfig("code", constants.indicator_threshold1(), 50);
column.setRenderer(valeurSeuil1);
configs.add(column);
ColumnModel cm = new ColumnModel(configs);
final Grid<BeanModel> grid = new Grid<BeanModel>(store, cm);
grid.setAutoHeight(true);
grid.setAutoWidth(true);
add(grid);
}
}
I have a grid with a gridCellRenderer which contains a textfield.
A user can modify its value and my problem is that I don't know how to recovery this value.
here is my code :
public class GestionIndicateurProjet extends LayoutContainer {
private ProjetBean projet; //projet pour lequel on veut visualiser les indicateurs
private IndicateurServiceAsync indicateurService = (IndicateurServiceAsync)GWT.create(IndicateurService.class);
private IndicateurProjetServiceAsync indicateurProjetService = (IndicateurProjetServiceAsync)GWT.create(IndicateurProjetService.class);
private QualityConstants constants = GWT.create(QualityConstants.class);
public GestionIndicateurProjet(ProjetBean projet){
this.projet = projet;
}
@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
//Champ représentant la valeur du seuil 1 de l'indicateur
GridCellRenderer<ModelData> valeurSeuil1 = new GridCellRenderer<ModelData>(){
public Object render(final ModelData model, final String property, ColumnData config, final int rowIndex,
final int colIndex, ListStore<ModelData> store, final Grid<ModelData> grid)
{
final TextField<Long> valeur1 = new TextField<Long>();
valeur1.setWidth(40);
indicateurService.findByPK((String)model.get(property), new AsyncCallback<IndicateurBean>(){
@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
@Override
public void onSuccess(final IndicateurBean indicateur) {
indicateurProjetService.getIndicateurProjetByProjetAndByIndicateur(indicateur, projet, new AsyncCallback<IndicateurProjetBean>(){
@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
@Override
public void onSuccess(IndicateurProjetBean indicateurProjet) {
if(indicateurProjet == null) //si l'indicateur n'est pas rattaché à ce projet
{
//on affiche la valeur par défaut qu'il a été attribué à cet indicateur
valeur1.setValue(indicateur.getValeurSeuil1ParDefaut());
}
else //cet indicateur est rattaché à ce projet
{
//on affiche la valeur du seuil1 qui lui a été attribué pour ce projet
valeur1.setValue(indicateurProjet.getValeurSeuil1());
}
}
});
}
});
return valeur1;
}
};
//chargement de tous les indicateurs existants dans la base
RpcProxy<List<IndicateurBean>> proxy = new RpcProxy<List<IndicateurBean>>() {
@Override
public void load(Object loadConfig, AsyncCallback<List<IndicateurBean>> callback) {
indicateurService.getListIndicateurs(callback);
}
};
BeanModelReader reader = new BeanModelReader();
// loader and store
ListLoader<ListLoadResult<ModelData>> loader = new BaseListLoader<ListLoadResult<ModelData>>(proxy, reader);
ListStore<BeanModel> store = new ListStore<BeanModel>(loader);
loader.load();
final List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
//colonne des noms des indicateurs
ColumnConfig column = new ColumnConfig("nom", constants.indicator_name(), 100);
configs.add(column);
//colonne du seuil1 de l'indicateur
column = new ColumnConfig("code", constants.indicator_threshold1(), 50);
column.setRenderer(valeurSeuil1);
configs.add(column);
ColumnModel cm = new ColumnModel(configs);
final Grid<BeanModel> grid = new Grid<BeanModel>(store, cm);
grid.setAutoHeight(true);
grid.setAutoWidth(true);
add(grid);
}
}