juil 27
Info flash pour vous prévenir de la sortie d’une Refcardz dédiée à Wicket :
Getting Started with Apache Wicket
N’hésitez pas à la récupérer (un compte (gratuit) chez DZone est nécessaire)
Pour rappel, les Refcardz sont des documents de références, écrits par des pointures, pour expliquer le plus clairement possible tel ou tel technos/frameworks.
juil 27
Après avoir découvert le site Wicket By Example, réalisé par les gars de chez Mystic Coders, j’ai découvert comment améliorer le code de l’étape 7.
En effet, dans cette étape j’ai opté pour créer ma propre classe OngletAjaxLink pour avoir la main sur la déclaration de l’évennement onclick. C’était avant que je découvre l’article Adding Javascript confirm dialog to AjaxButton.
Donc, exit la classe OngletAjaxLink. On revient au code de l’étape 6 pour PanelOnglets c’est à dire :
public class PanelOnglets extends Panel {
private WebMarkupContainer ongletsContainer;
private CompoundPropertyModel<OngletsModelObject> ongletsModel;
public PanelOnglets(String _id, CompoundPropertyModel<OngletsModelObject> _ongletsModel) {
super(_id);
// CSS
add(CSSPackageResource.getHeaderContribution(this.getClass(), this.getClass().getSimpleName() + ".css"));
this.ongletsModel = _ongletsModel;
// Repeater des onglets
ListView<String> onglets = new ListView<String>("onglet", ongletsModel.getObject().getListOnglets()) {
@Override
protected void populateItem(final ListItem<String> _item) {
String libelle = _item.getModelObject();
AjaxLink<Object> linkOnglet = new AjaxLink<Object>("linkOnglet") {
@Override
public void onClick(AjaxRequestTarget target) {
...
}
}
};
Label labelOnglet = new Label("labelOnglet", libelle);
linkOnglet.add(labelOnglet);
_item.add(linkOnglet);
}
...
}
}
Et on redéfinit la méthode IAjaxCallDecorator getAjaxCallDecorator() de l’objet AjaxLink qui nous permet de décorer le script initial avec du code javascript (via la méthode preDecorateScript). ce qui nous donne :
public class PanelOnglets extends Panel {
private WebMarkupContainer ongletsContainer;
private CompoundPropertyModel<OngletsModelObject> ongletsModel;
public PanelOnglets(String _id, CompoundPropertyModel<OngletsModelObject> _ongletsModel) {
super(_id);
// CSS
add(CSSPackageResource.getHeaderContribution(this.getClass(), this.getClass().getSimpleName() + ".css"));
this.ongletsModel = _ongletsModel;
// Repeater des onglets
ListView<String> onglets = new ListView<String>("onglet", ongletsModel.getObject().getListOnglets()) {
@Override
protected void populateItem(final ListItem<String> _item) {
String libelle = _item.getModelObject();
AjaxLink<Object> linkOnglet = new AjaxLink<Object>("linkOnglet") {
@Override
protected IAjaxCallDecorator getAjaxCallDecorator() {
return new AjaxPreprocessingCallDecorator(super.getAjaxCallDecorator()) {
@Override
public CharSequence preDecorateScript(CharSequence script) {
return "updateOnglet(" + _item.getIndex() + ");" + script;
}
};
}
@Override
public void onClick(AjaxRequestTarget target) {
...
}
}
};
Label labelOnglet = new Label("labelOnglet", libelle);
linkOnglet.add(labelOnglet);
_item.add(linkOnglet);
}
...
}
}
Voilà, le code source est donc plus cohérent et utilise pleinement les capacités du Framework!
Comme quoi en fouillant un peu, on arrive toujours à améliorer son code!
Une fois de plus, j’ai mis à jour le résultat étape par étape et voilà le code source qui remplace celui de l’étape 7 initiale (sous la forme d’un projet Eclipse, il vous faudra aussi maven pour la gestion des dépendances).
Imprimer cet article
juil 22
Suite à la première remarque de Grégo dans son commentaire, j’ai modifié quelque peu l’étape 5 pour tenter d’avoir le fonctionnement suivant : Lors du clic sur l’onglet, le dit onglet s’active directement et ce n’est que le panel de contenu qui se met à jour via Ajax.
Pour cette 7ème étape j’ai, pour des raisons pratiques, utilisé jQuery pour la partie javascript.
Read the rest of this entry »
juil 21
En furetant un petit peu sur le Wiki de Wicket, j’ai découvert cette petite astuce qui concerne le busy indicator
Le ptits gars de Wicket ont très bien fait les choses en pensant à ajouter des fallbacks avant et après leur appel ajax. Ce qui nous donne ce bout de code javascript :
window.onload = setupFunc;
function setupFunc() {
hideBusysign();
Wicket.Ajax.registerPreCallHandler(showBusysign);
Wicket.Ajax.registerPostCallHandler(hideBusysign);
Wicket.Ajax.registerFailureHandler(hideBusysign);
}
Il ne nous reste donc plus qu’a faire en sorte d’utiliser cela.
Read the rest of this entry »
juil 20
Dans ce 5ème article de notre série « Amusons nous avec Wicket & Ajax : Onglets dynamiques », nous allons tenter de mettre un peu d’ordre dans le code qu’on à écrit dans les étapes précédentes.
Premièrement nous allons nous occuper du « stockage » des informations pertinentes, puis nous allons rendre nos onglets autonomes (pour pourquoi pas les utiliser dans un autre projet).

Read the rest of this entry »
Recent Comments