xulfr.org

5.2 Plus de fonctionnalités de menu

Écrit par Neil Deakin. Traduit par Vincent S. (27/03/2004).
Page originale : http://www.xulplanet.com/tutorials/xultu/advmenu.html xulplanet.com

Dans cette section, nous allons voir comment créer des sous-menus et des menus à cocher.

Créer des sous-menus

Vous pouvez créer des sous-menus à l'intérieur d'autres menus (menus imbriqués) en utilisant des éléments existants. Souvenez-vous que vous pouvez mettre n'importe quel élément dans un menupopup. Nous avons vu comment placer des menuitem et des menuseparator dans des menupopup. Toutefois, vous pouvez créer des sous-menus en plaçant simplement l'élément menu à l'intérieur de l'élément menupopup. Cela fonctionne car l'élément menu est valide même quand il n'est pas placé directement dans une barre de menu.

L'exemple ci-dessous crée un simple sous-menu dans le menu Fichier :

Exemple 5.2.1 : Source Voir


<toolbox flex="1">
  <menubar id="sample-menubar">
    <menu id="file-menu" label="Fichier">
      <menupopup id="file-popup">
        <menu id="new-menu" label="Nouveau">
          <menupopup id="new-popup">
            <menuitem label="Fenêtre"/>
            <menuitem label="Message"/>
          </menupopup>
        </menu>
        <menuitem label="Ouvrir"/>
        <menuitem label="Sauver"/>
        <menuseparator/>
        <menuitem label="Quitter"/>
      </menupopup>
    </menu>
  </menubar>
</toolbox>

Exemple d'un sous-menu

Ajouter un menu Recherche de Fichier

Ajoutons un menu à la boîte de dialogue de recherche de fichier. Nous allons juste ajouter quelques commandes simples à un menu Fichier et à un menu Edition. C'est similaire à l'exemple ci-dessus.


<toolbox>

 <menubar id="findfiles-menubar">
  <menu id="file-menu" label="Fichier" accesskey="f">
    <menupopup id="file-popup">
      <menuitem label="Ouvrir une Recherche..." accesskey="o"/>
      <menuitem label="Enregistrer une Recherche..." accesskey="s"/>
      <menuseparator/>
      <menuitem label="Fermer" accesskey="f"/>
    </menupopup>
  </menu>
  <menu id="edit-menu" label="Edition" accesskey="e">
    <menupopup id="edit-popup">
      <menuitem label="Couper" accesskey="e"/>
      <menuitem label="Copier" accesskey="p"/>
      <menuitem label="Coller" accesskey="o" disabled="true"/>
    </menupopup>
  </menu>
 </menubar>

<toolbar id="findfiles-toolbar>

Source Voir

La boîte de dialogue de recherche de fichier avec une barre de menu

Ici nous avons ajouté deux menus contenant des commandes variées dessus. Notez que la barre de menu a été ajoutée dans un toolbox. Sur l'image, vous pouvez voir la poignée (grippy) sur la barre de menu qui peut être utilisé pour cacher la barre de menu. Les trois points après Ouvrir une Recherche et Enregistrer une Recherche sont le moyen usuel pour indiquer à l'utilisateur qu'une boîte de dialogue va s'ouvrir quand il sélectionne cette commande. Des touches de raccourcis ont été ajouté pour chaque menu et item de menu. Vous verrez dans l'image que cette lettre a été soulignée dans le texte du menu. Vous verrez aussi que la commande Coller a été désactivée. Nous supposons qu'il n'y a rien à coller.

Ajouter de coches aux menus

Beaucoup d'application ont des items de menu ayant des coches. Par exemple, une fonctionnalité qui est active a une coche placé à côté de la commande et une fonctionnalité qui est désactivée n'a pas de coche. Quand l'utilisateur sélectionne le menu, l'état de la coche est inversé. Vous voulez peut-être aussi créer des bouttons radio sur les items de menu.

Les coches sont crées de manière similaire aux éléments checkbox et radio. Cela implique l'utilisation de deux attributs, type pour indiquer le type de coche et name pour grouper les commandes ensemble. L'exemple ci-dessous crée un menu avec un item coché.

Exemple 5.2.2 : Source Voir


<toolbox>
  <menubar id="options-menubar">
    <menu id="options_menu" label="Options">
      <menupopup>
        <menuitem id="backups" label="Faire des sauvegardes" type="checkbox"/>
      </menupopup>
    </menu>
  </menubar>
</toolbox>

L'attribut type ajouté est utilisé pour rendre l'item de menu cochable. En mettant sa valeur à checkbox, l'item de menu peut être coché et décoché en le selectionnant.

En plus des coches standards, vous pouvez créer des coches de style radio en mettant type à la valeur radio. Une coche radio est utilisé quand vous voulez un groupe d'item de menu où un seul de ces items peut être coché à la fois. Un exemple peut être un menu de police de caractère où une seule police peut être sélectionnée à la fois. Quand un autre item est sélectionné, l'item choisi précédement est décoché.

Pour grouper plusieurs items de menu ensemble, vous devez placer un attribut name sur chacun d'eux. Mettre pour valeur la même chaîne de caractère. L'exemple ci-dessous démontre cela :

Exemple 5.2.3 : Source Voir


<toolbox>
  <menubar id="planets-menubar">
    <menu id="planet-menu" label="Planète">
      <menupopup>
        <menuitem id="jupiter" label="Jupiter" type="radio" name="ringed"/>
        <menuitem id="saturn" label="Saturne" type="radio" name="ringed"/>
        <menuitem id="uranus" label="Uranus" type="radio" name="ringed"/>
        <menuitem id="earth" label="Terre" type="radio" name="inhabited"/>
      </menupopup>
    </menu>
  </menubar>
</toolbox>

Si vous essayez cet exemple, vous verrez que sur les trois premiers items, un seul peut être coché à la fois. Ils sont groupé ensemble car ils ont le même nom. Le dernier item de menu, Terre, ne fait pas partie du groupe car il a un nom différent. Pourtant, c'est un bouton radio.

Bien sûr, les items groupés doivent tous être dans le même menu. Ils n'ont pas à être placé les uns à côté des autres, bien que cela n'ait pas autant de sens s'il ne le sont pas.


Par la suite, nous allons voir comment créer des menus surgissants.