Je commence là une série de 5 articles, pour décomposer clairement le cheminement que j’ai suivi pour réaliser de la fonctionnalité souhaitée : un système d’onglets avec chargement dynamique du contenu.

Voilà une capture du système souhaité :
ce que l'on veut
Et voilà un extrait du code source associé :

<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd" >
<head>
  <title>Onglets</title>
  <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
  <div id="menu">
    <ul class="onglets">
      <li class="onglet actif"><a href="#">Salarié</a></li>
      <li class="onglet preNonActif"><a href="#">Contrat</a></li>
      <li class="onglet lastNonActif"><a href="#">Planning</a></li>
    </ul>
    <div class="clear"></div>
  </div>
  <div id="content">
    <div>
      <p>
        <span>Panel n°1 (non dynamique)</span>
      </p>
    </div>
  </div>
</body>
</html>

Ce premier article de la série permet de poser les bases du système. Il n’y a donc rien de très compliqué dans ce qui suis.

Application

Donc on commence par écrire notre classe Application :

public class OngletsApplication extends WebApplication {
  public Class<? extends WebPage> getHomePage() {
    return PageEtape1.class;
  }
}

TemplatePage

Pour des raisons pratiques, j’utilise une TemplatePage dont voici le code java :

public class TemplatePage extends WebPage {
  public TemplatePage() {
    // Chargement automatique du fichier css portant le meme nom que la page en cours
    add(CSSPackageResource.getHeaderContribution(this.getClass(), this.getClass().getSimpleName() + ".css"));
 
    // init par défaut du title de la page
    initPageTitle("template");
  }
 
  protected void initPageTitle(String _pageTitle) {
    addOrReplace(new Label("pageTitle", "Onglets - " + _pageTitle));
  }
}

et le code html:

<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd" >
<head>
  <title wicket:id="pageTitle">[Title]</title>
</head>
<body>
  <wicket:child/>
</body>
</html>

PageEtape1

Pas grand chose de fait en java concernant cette classe PageEtape1, c’est juste pour poser les bases…

public class PageEtape1 extends TemplatePage {
  public PageEtape1() {
    super();
    initPageTitle("Etape 1");
  }
}

Et le html associé qui nous permet un peu mieux de voir ce que l’on va avoir a faire dans l’étape 2 qui va suivre :

<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd" >
<head>
</head>
<body>
  <wicket:extend>
  <div id="menu">
    <ul class="onglets">
      <li class="onglet actif"><a href="#">Salarié</a></li>
      <li class="onglet preNonActif"><a href="#">Contrat</a></li>
      <li class="onglet lastNonActif"><a href="#">Planning</a></li>
    </ul>
    <div class="clear"></div>
  </div>
  <div id="content">
    <div>
      <p>
        <span>Panel n°1 (non dynamique)</span>
      </p>
    </div>
  </div>
  </wicket:extend>
</body>
</html>

Voilà, pour l’instant rien de transcendant dans tout ça, juste peut être à noter dans la classe TemplatePage, la ligne :

...
add(CSSPackageResource.getHeaderContribution(this.getClass(), this.getClass().getSimpleName() + ".css"));
...

qui permet de charger dynamiquement un fichier css nommé comme la page (par exemple : PageEtape1.css). C’est tout con mais c’est super pratique :p

La suite très vite … Amusons nous avec Wicket & Ajax : Onglets dynamiques 2/5

Imprimer cet article Imprimer cet article

  2 Responses to “Amusons nous avec Wicket & Ajax : Onglets dynamiques 1/5”

  1. Excellent tuto, merci beaucoup ! Y a-t-il moyen de télécharger un projet contenant le source ?

  2. Merci ^^
    Je t’invite à aller à la 5ème étape où tu trouvera un lien vers un site de démo (avec les sources en ligne) et un zip de mon projet Eclipse.

 Leave a Reply

(required)

(required)


× 9 = seventy two

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

   
© 2011 NooCodeCommit Suffusion theme by Sayontan Sinha