Chaînage et imbrication de boîtes de dialogue

Des boîtes de dialogue peuvent démarrer d'autres boîtes de dialogue. Une boîte de dialogue qui démarre une autre boîte de dialogue est appelée boîte de dialogue appelante et la boîte de dialogue démarrée est appelée boîte de dialogue appelée. Deux options sont disponibles pour exécuter cette action, le chaînage et l'imbrication.

Avec l'option de chaînage de boîte de dialogue, une boîte de dialogue peut démarrer une autre boîte de dialogue de sorte que la boîte de dialogue appelante s'arrête après le début de la boîte de dialogue appelée. C'est pourquoi, une fois la boîte de dialogue appelée démarrée, il n'y a plus de moyen de revenir à la boîte de dialogue appelante. Ainsi, sur un site de voyage, vous pouvez configurer la réservation de vol ou la boîte de dialogue appelante pour qu'elle se termine après que la location de véhicule ou la boîte de dialogue appelée a démarré. Une fois la boîte de dialogue de location de véhicule commencée, l'utilisateur ne peut plus revenir à la boîte de dialogue de réservation de vol.

Avec l'option d'imbrication de boîte de dialogue, une boîte de dialogue peut démarrer une autre boîte de dialogue, mais la boîte de dialogue appelante ne s'arrête pas après le début de la boîte de dialogue appelée. C'est pourquoi vous pouvez passer de l'une de ces boîtes de dialogue imbriquées à l'autre. Ainsi, sur un site de voyage, vous pouvez configurer la réservation de vol ou la boîte de dialogue appelante pour qu'elle passe en pause après que la location de véhicule ou la boîte de dialogue appelée a démarré. Une fois la boîte de dialogue de location de véhicule commencée, l'utilisateur peut revenir à la boîte de dialogue de réservation de vol et passer de l'une à l'autre.

Dans ces deux options, la boîte de dialogue appelante fait référence à la boîte de dialogue à appeler en tant que cible. La boîte de dialogue appelée démarre avec l'événement émis par la boîte de dialogue appelante.

Une boîte de dialogue appelée peut démarrer uniquement en déclenchant l'une de ses transitions de lancement et se terminer uniquement en déclenchant l'une de ses transition de fin. Dans l'exemple de code suivant, dialog2 doit comporter une transition de lancement, laquelle est déclenchée par l'émission d'un événement eX. dialog3 doit comporter une transition de lancement, laquelle est déclenche par un événement eY.


...
<transition type="chained">
    <source>
        <transition-endpoint nameref="portlet1">
            <event qname="e1a"/>
        </transition-endpoint>
    </source>
    <target>
        <transition-endpoint nameref="dialog2">
            <event qname="eX"/>
        </transition-endpoint>
    </target>
</transition>
...
<transition type="nested">
    <source>
        <transition-endpoint nameref="portlet1">
            <event qname="e1b"/>
        </transition-endpoint>
    </source>
    <target>
        <transition-endpoint nameref="dialog3">
            <event qname="eY"/>
        </transition-endpoint>
    </target>
</transition>