Définitions valides et non valides

Si vous démarrez une boîte de dialogue avec chaînage ou imbrication, il est possible de contrôler les boîtes de dialogue via un attribut type. L'attribut type est affecté à l'élément de noeud final de transition. Les valeurs valides incluent chained et nested. Si vous ne spécifiez pas cet attribut, la valeur d'attribut par défaut chained est appliquée.

L'exemple de code suivant montre les fragments pertinents des définitions valides pour la boîte de dialogue appelante dialog1 et les boîtes de dialogue appelées dialog2 et dialog3.

Exemple de code

<dialog name="dialog1">
  ...
  <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>
  ...
</dialog>
...
<dialog name="dialog2">
  ...
  <transition type="start">
      <source>
          <transition-endpoint nameref="portlet1">
              <event qname="eX"/>
          </transition-endpoint>
      </source>
      <target>
          <transition-endpoint nameref="portlet2">
              <event qname="eX"/>
          </transition-endpoint>
      </target>
  </transition>
  ...
</dialog>
... 
<dialog name="dialog3">
  ...
  <transition type="start">
      <source>
          <transition-endpoint nameref="portlet1">
              <event qname="eY"/>
          </transition-endpoint>
      </source>
      <target>
          <transition-endpoint nameref="portlet2">
              <event qname="eY"/>
          </transition-endpoint>
      </target>
  </transition>
  ...
</dialog>       

L'exemple de code suivant montre des définitions non valides car dialog2 ne possède pas de transition de lancement déclenchée par l'événement eX.

Exemple de code

<dialog name="dialog1">
  ...
  <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>
  ...
</dialog>
...
<dialog name="dialog2">
  ...
  <transition type="start">
      <source>
          <transition-endpoint nameref="portlet1">
              <event qname="eZ"/>
          </transition-endpoint>
      </source>
      <target>
          <transition-endpoint nameref="portlet2">
              <event qname="eZ"/>
          </transition-endpoint>
      </target>
  </transition>
  ...
</dialog>
... 
<dialog name="dialog3">
  ...
  <transition type="start">
      <source>
          <transition-endpoint nameref="portlet1">
              <event qname="eY"/>
          </transition-endpoint>
      </source>
      <target>
          <transition-endpoint nameref="portlet2">
              <event qname="eY"/>
          </transition-endpoint>
      </target>
  </transition>
  ...
</dialog>  
Remarque : Si les boîtes de dialogue dialog2 et dialog3 sont démarrées dans le cadre d'un chaînage ou d'une imbrication, le noeud final de transition référence par la source de la transition de lancement devient non pertinente.