
EditTextCell : affichage différent en mode vue et édition
Salut à tous.
Aujourd’hui je vous propose une petite astuce pour ceux qui comme moi font du dév GWT.
Pour un projet, j’ai une CellTable qui affiche des données et qui peuvent être éditées directement dans la table. Pour cela j’utilise un objet EditTextCell.
Dans cette table, j’affiche des codes qui ne veulent trop rien dire, du coup le client voulait afficher le label qui était associé au code, mais ne garder que le code pour éditer la ligne. Alors comme ça, je me suis dit que ça allait être compliqué, mais en fait c’est bidon, Google avait relativement bien prévu le coup.
Voici le code :
class MatRenderer implements SafeHtmlRenderer{
@Override
public SafeHtml render(String arg0) {
SafeHtmlBuilder builder = new SafeHtmlBuilder();
builder.appendEscaped(transformer(arg0));
return builder.toSafeHtml();
}
@Override
public void render(String arg0, SafeHtmlBuilder arg1) {
arg1.appendEscaped(transformer(arg0));
arg1.toSafeHtml();
}
}
La technique c’est de créer un renderer personnalisé comme celui ci-dessus afin de le définir comme renderer pour chaque EditTextCell que vous allez créer de la manière suivante :
new EditTextCell(new MatRenderer())
Et voilà , il ne vous reste plus qu’à définir votre méthode transformer() afin de transformer la chaîne de base (celle de la vue édition) en une chaîne différente pour la visualisation.
Si vous avez des question, n’hésitez pas à les poster dans les commentaires.
Ciao les zamis geek et à la prochaine 😉
No Comment