Informations Générales   Screenshots   Download   Modèle dynamique   Modèle statique   Manuel utilisateur   API 

Modèle dynamique

Gestion du XML

Nous utilisons l'interface SAX pour parser nos documents. Chaque objets est responsable de son chargement ou de sa sauvegarde en XML. (Il n'y a pas de super-objet qui crée toute la scène)

SAX utilise une programmation événementielle, à chaque début de balise SAX nous envoie un événement (StartElement). Cet événement est associé avec le nom de la balise et ses attibuts.

Nous utilisons une pile pour représenter l'arbre XML, les méthodes add et set sont toujours appliquées sur le sommet de pile. La DTD nous garantie que l'on ne va pas demander n'importe quoi aux objets.

Interactions avec l'utilisateur

Dans ce premier scénario, l'utilisateur clique sur un objet visible. Cet événement est transmis à un objet MmGUICallback. Ce dernier décide des actions à mettre en oeuvre.



Il existe plusieurs modes de déplacement dans jMm :
Mode réel
Ce mode indique aux objets si leur comportement doit être réel ou pas. En effet dans un mode non réaliste, un objet draggé est obligé de bouger, c'est un mode de mise au point. Tous les composants de l'objet sont déplacés de la même façon. L'attribut MmState.deplace est surchargé.

Mode Multiple
Ce mode indique aux objets que leur déplacement est complétement libre, le MouseMotionListener ne fait plus bouger le MmObject, mais juste le MmGUIObject.

Gestion des librairies

Pour pouvoir mettre en place la gestion des librairies, nous avons ajouté une balise mmlib. Comme le chargement de nouveau élément est dynamique, la dtd seule ne nous assure plus l'unicité des id dans le systéme. En effet si l'utilisateur décide de charger plusieurs fois le même élément, cela risque de provoquer des conflits de id.
Nous avons donc mis en place un gestionnaire dynamique d'indentifiant. L'objet s'enregistre auprès de ce gestionnaire qui lui indique l'identifiant qu'il peut prendre dans cette session. Ce gestionnaire assure une convertion entre les identifiants de la librairie (interne) et ceux qui seront utilisé dans le Micro Monde.


Eric Bollengier eric@deesse
Fabien Grumelard fgrum@deesse
*SOURCEFORGE*