GS-reactor ― Exemple : Lancement d’une application

Voici d’abord comment lancer une application à l’aide de la partie serveur d’applications du réacteur :

Continue reading GS-reactor ― Exemple : Lancement d’une application

GS-reactor — Exemple : Composant créé avec gs-reactor

L’exemple d’application donné ci-dessus fait appel à une classe Table, qui a été écrite pour donner un exemple relativement simple d’utilisation du framework Generic System, elle est donc moins complexe que la table utilisée dans la démonstration disponible sur genericsystem.com.
Ce composant se contente d’afficher toutes les instances d’un type donné avec les valeurs de leurs holders et des composants de leurs liens.
Nous verrons plus bas comment l’arbre de tags créé est transformé en arbre de DOM nodes affichable par le navigateur.

Continue reading GS-reactor — Exemple : Composant créé avec gs-reactor

GS-reactor avancé — Transformation de l’arbre des tags en arbre de DOM nodes, @ForEach, @Select

Afin de créer l’arbre des DOM nodes, l’arbre des tags est parcouru en profondeur. Un DOM node racine correspondant au tag racine et à un contexte racine correspondant au générique Engine est créé. Puis par défaut, pour chaque tag enfant, un DOM node enfant associé au tag enfant et au même contexte que le DOM node parent est créé. Ce comportement est toutefois modifié lorsqu’un metaBinding a été défini sur le tag enfant. Le métabinding précise quel(s) contexte(s) associer au tag enfant afin de créer un ou plusieurs DOM nodes enfants, en créant de nouveaux contextes si nécessaire.
Il existe deux sortes de métabindings : les forEach et les selects. Un seul métabinding peut être défini sur un tag donné. Un métaBinding peut servir à :

  • Démultiplier un tag en l’associant à plusieurs contextes enfants du contexte courant (forEach).
  • Afficher ou non un tag en fonction de conditions liées au contexte courant (select).
  • Créer un unique contexte enfant du contexte courant en sélectionnant une classe générique.

Les deux premières utilisations sont similaires aux forEach et if des JSP. La troisième permet d’utiliser exactement la même classe Table pour afficher les instances de types différents.

Les métabindings sont usuellement définis à l’aide des annotations @ForEach, @ForEachContext, @Select, @SelectContext ou @DirectSelect.

Continue reading GS-reactor avancé — Transformation de l’arbre des tags en arbre de DOM nodes, @ForEach, @Select

GS-reactor, annotations ― Description des annotations

@Children

Prend comme valeur un tableau de classes étendant TagImpl qui correspondent aux classes des tags enfants à instancier. Lors du lancement de l’application, cette annotation est traitée en premier afin de construire entièrement l’arborescence des tags. Puis l’arbre est parcouru afin de traiter les autres annotations.

Exemple : InstancesTable permet d’afficher les instances d’un type. Les instances de cette classe ont 3 enfants : HeaderRow qui correspond à la ligne de titre, InstanceBuilder qui permet de créer une nouvelle instance du type affiché, et enfin ContentRow qui affiche les instances du type affiché.

Continue reading GS-reactor, annotations ― Description des annotations

GS-reactor, annotations — Les paramètres path et pos, priorité des annotations

Les paramètres path et pos

Toutes les annotations définies dans le réacteur permettent de préciser des paramètres path et pos en plus des paramètres décrits ci-dessus. Ces paramètres permettent d’appliquer des commandes non seulement aux instances de la classe sur laquelle les annotations sont placées, mais aussi sur n’importe lequel de leurs descendants. Cela permet de préciser le comportement de descendants du composant que l’on écrit et d’éviter de créer une nouvelle classe à chaque fois que l’on veut modifier le comportement d’un tag.

Le paramètre path a comme valeur un tableau de classes indiquant les classes des instances du chemin à emprunter lors de la descente dans l’arbre pour aboutir au(x) tag(s) concerné(s) par l’annotation.

Il n’est pas obligatoire de préciser la classe exacte de ces tags, mais seulement une superclasse.

Continue reading GS-reactor, annotations — Les paramètres path et pos, priorité des annotations