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.