OOUI/Fenêtres

This page is a translated version of the page OOUI/Windows and the translation is 100% complete.

Un objet Window est un conteneur pour les éléments d'une fenêtre fille. Chaque fenêtre est gérée par un WindowManager qui est utilisé pour ouvrir et fermer la fenêtre et contrôler son aspect. La taille des fenêtres est indiquée en utilisant un nom symbolique ('small', 'medium', 'large', ou 'full') interprété par le gestionnaire de fenêtres. Si la taille demandée n'est pas reconnue, le gestionnaire de fenêtres choisira une valeur de repli sensible.

Les fenêtres OOUI comprennent les classes Dialog (dialogues base), ProcessDialog (dialogues de processus), et MessageDialog (choix d'actions). Pour les cas d'utilisation simples, plusieurs fonctions pratiques existent. Voir les Messages simples.

Notez que les fenêtres répondent à la taille de l'équipement qui les affiche et qu'elles s'ajustent dynamiquement en conséquence. C'est pourquoi la taille du dialogue doit être considérée comme une approximation plutôt qu'une spécification exacte.

Cycle de vie des fenêtres

Les fenêtres gérées sont mutuellement exclusives. Une nouvelle fenêtre ne peut pas être ouverte tant que la fenêtre actuelle a l'état opened. Les fenêtres elles-mêmes sont persistantes et — plutôt que d'être détruites à la fermeture — elles peuvent être réinitialisées avec des données pertinentes et réutilisées.

Le cycle de vie d'une fenêtre est représenté par l'objet WindowInstance. Cet objet possède quatre propriétés contenant des promesses; elles représentent les étapes primaires du cycle : 'opening', 'opened', 'closing', et 'closed'.

  • La promesse opening est satisfaite après que la fenêtre a comenncé à s'ouvrir (ceci peut être retardé si une autre fenêtre est encore en train de se fermer), avec la valeur de 'data' passée lors de l'appel de openWindow().
  • La promesse opened est satisfaite après que la fenêtre soit effectivement ouverte, avec la valeur de 'data' passée lors de l'appel de openWindow().
  • La promesse closing est satisfaite après que la fenêtre ait comenncé se fermer, avec la valeur de 'data' passée lors de l'appel de closeWindow().
  • La promesse closed est satisfaite après que la fenêtre soit fermée, avec la valeur de 'data' passée lors de l'appel de closeWindow().

Voir le Traitement des dialogues pour les exemples donnant l'enchaînement des promesses dans la pratique.

Pour la compatibilité arrière, les objets WindowInstance renvoyés par openWindow() et closeWindow() sont étendus avec les propriétés Promise-like. Ceci sera supprimé à l'avenir.

Avant que la fenêtre ne soit ouverte pour la première fois (et uniquement avant la première fois), la méthode initialize() est appelée. La méthode initialize() est utilisée pour remplir la fenêtre avec un contenu persistant et peut ainsi servir de cache. Une fenêtre contenant une liste de 250 langues peut être remplie avec cette liste durant l'initialisation par exemple, et si la fenêtre est ensuite réouverte, cette liste n'aura pas besoin d'être rechargée.

 

Étapes

Ouverture en cours

Le palier d'ouverture commence quand on utilise la méthode openWindow() (du gestionnaire de fenêtre) ou la méthode open() (de la fenêtre) pour ouvrir la fenêtre. La promesse 'opening' de WindowInstance a été tenue. Pour la compatibilité arrière, le gestionnaire de fenêtre émet un événement 'opening' avec une promesse qui sera résolue avec la promesse 'opened' lorsque la fenêtre aura été paramétrée et qu'elle sera prête et ouverte.

Le gestionnaire de fenêtre appelle ensuite la méthode getSetupDelay() qui récupère le nombre de millisecondes qu'il faut attendre avant d'appeler la méthode getSetupProcess() de la fenêtre et exécuter le résultat. La méthode getSetupProcess() assemble un processus pour définir la fenêtre à l'aide des données passées à la fonction d'ouverture. A chaque fois qu'une fenêtre est réutilisée, elle peut être remplie avec de nouvelles données. Lorsque la configuration est terminée, une notification de progrèssion 'setup' est émise par la promesse qui a fait l'ouverture.

Le gestionnaire de fenêtre appelle ensuite la méthode getReadyDelay() qui récupère le nombre de millisecondes à attendre entre la fin de la configuration et l'appel de la méthode getReadyProcess() de la fenêtre et exécute le résultat. Une notification de progression 'ready' est ensuite émise par la promesse d'ouverture de la compatibilité arrière.

Ouverte

Lorsque la fenêtre est configurée et prête, la promesse 'opened' de WindowInstance est tenue, et la promesse de la compatibilité arrière 'opening' est tenue avec la promesse de compatibilité arrière 'opened'. La fenêtre est maintenant ouverte.  A ce moment, vous pouvez placer le focus à l'intérieur de la fenêtre.

Fermeture en cours

Le palier de fermeture commence quand la méthode closeWindow() du gestionnaire de fenêtre ou la méthode close() de la fenêtre sont utilisées pour fermer une fenêtre. La promesse 'closing' de WindowInstance a été tenue. Pour la compatibilité arrière, le gestionnaire de fenêtre émet un événement 'closing' et la promesse de compatibilité arrière 'opened' est résolue avec une promesse de compatibilité arrière 'closing'.

Le gestionnaire de fenêtre appelle la méthode getHoldDelay() qui récupère le nombre de millisecondes à attendre avant d'appeler la méthode getHoldProcess() de la fenêtre et exécute le résultat. Il est rarement utile de redéfinir cette méthode, bien que cela soit possible si une fenêtre demande un certain temps avant de disparaître et que vous souhaitez désactiver ses contrôles entre temps. Quand le processus 'hold' est terminé, une notification de progression 'hold' est émise par la promesse de fermeture de la compatibilité arrière.

Le gestionnaire de fenêtre appelle ensuite la méthode getTeardownDelay() qui récupère le nombre de millisecondes à attendre entre la fin du processus 'hold' et l'appel de la méthode getTeardownProcess() de la fenêtre et exécute le résultat. Une notification de progression 'teardown' est émise par la promesse de fermeture de la compatibilité arrière.

Fermée

Une fois que la fenêtre est détruite, la promesse 'closed' de WindowInstance est résolue, la promesse de compatibilité arrière de fermeture est tenue. Toute donnée passée à la méthode close() sera passée en tant que valeur de résolution à la promesse 'closed' de WindowInstance et à la promesse de fermeture de la compatibilité arrière. La fenêtre est maintenant fermée.

Notes

Notez que chaque processus (tel 'setup', 'ready', 'hold', 'teardown') s'exécute en série pour permettre aux processus asynchrones de se terminer. Toujours supposer que les processus des fenêtres s'exécutent de manière asynchrone. Voir les Processus et erreurs pour plus de détails à propos des processus.

Fermer une fenêtre sans données va la fermer sans faire de modifications, en annulant principalement le processus.

WindowManager peut aussi être configuré pour empêcher toute interaction en dehors de la fenêtre (en mettant l'option modal à true). La liste complète des méthodes prises en charge ainsi que les options de configuration, sont décrites dans la documentation du code.

Exemple d'utilisation de WindowInstance

instance = windowManager.openWindow( ... );
instance.opening.then( function () {
    // code exécuté après que la fenêtre ait commencé à s'ouvrir
} );
instance.opened.then( function () {
    // code exécuté après que la fenêtre soit ouverte
} );
instance.closing.then( function () {
    // code exécuté après que la fenêtre ait commencé à se fermer
} );
instance.closed.then( function ( data ) {
    // code exécuté après que la fenêtre soit fermée
} );

Si vous voulez simplement ouvrir une fenêtre et attendre qu'elle soit fermée, utilisez :

windowManager.openWindow( ... ).closed.then( function ( data ) {
    // code exécuté après que la fenêtre soit fermée
} );