La plupart des systèmes d’exploitation disposent d’une barre des tâches, comme le Dock de Mac OS X, pouvant contenir une icône en vue de représenter une application. Adobe® AIR® dispose d’une interface permettant d’interagir avec l’icône de la barre des tâches de l’application par le biais de la propriété
NativeApplication.nativeApplication.icon
.
A propos des icônes de la barre des tâches
AIR crée l’objet
NativeApplication.nativeApplication.icon
automatiquement. Selon le système d’exploitation, le type d’objet est soit DockIcon soit SystemTrayIcon. Les propriétés
NativeApplication.supportsDockIcon
et
NativeApplication.supportsSystemTrayIcon
vous permettent de déterminer les sous-classes InteractiveIcon prises en charge par AIR sur le système d’exploitation actuel. La classe de base InteractiveIcon fournit les propriétés
width
,
height
et
bitmaps
, qui vous permettent de modifier l’image utilisée pour l’icône. En revanche, l’accès aux propriétés spécifiques à l’objet DockIcon ou SystemTrayIcon sur le mauvais système d’exploitation génère une erreur d’exécution.
Pour définir ou modifier l’image utilisée pour une icône, créez un tableau contenant une ou plusieurs images, puis affectez-le à la propriété
NativeApplication.nativeApplication.icon.bitmaps
. La taille des icônes de la barre des tâches peut varier d’un système d’exploitation à l’autre. Pour éviter la dégradation de l’image provoquée par la mise à l’échelle, vous pouvez ajouter plusieurs tailles d’image au tableau
bitmaps
. Si vous fournissez plusieurs images, AIR sélectionne la taille la plus proche de la taille d’affichage actuelle de l’icône de la barre des tâches et, le cas échéant, met ces images à l’échelle. Dans l’exemple suivant, l’image d’une icône de la barre des tâches est définie à l’aide de deux images :
NativeApplication.nativeApplication.icon.bitmaps =
[bmp16x16.bitmapData, bmp128x128.bitmapData];
Pour modifier l’image d’une icône, affectez un tableau contenant la ou les nouvelles images à la propriété
bitmaps
. Vous pouvez animer l’icône en modifiant l’image en réponse à un événement
enterFrame
ou
timer
.
Pour supprimer l’icône de la zone de notification sous Windows et Linux, ou pour restaurer l’apparence de l’icône par défaut sous Mac OS X, définissez
bitmaps
sur un tableau vide :
NativeApplication.nativeApplication.icon.bitmaps = [];
Icônes du Dock
AIR prend en charge les icônes du Dock lorsque la propriété
NativeApplication.supportsDockIcon
est définie sur
true
. La propriété
NativeApplication.nativeApplication.icon
représente l’icône de l’application sur le Dock (et non l’icône de la fenêtre).
Remarque :
AIR ne permet pas de modifier les icônes de fenêtre sur le Dock sous Mac OS X. Par ailleurs, les modifications apportées à l’icône du Dock de l’application ne sont appliquées que lorsqu’une application est en cours d’exécution ; l’icône retrouve son aspect normal lorsque vous quittez l’application.
Menus d’icônes du Dock
Vous pouvez ajouter des commandes au menu du Dock standard en créant un objet NativeMenu contenant les commandes, puis en l’affectant à la propriété
NativeApplication.nativeApplication.icon.menu
. Les éléments du menu s’affichent au-dessus des options de menu de l’icône du Dock standard.
Rebond de l’icône du Dock
Vous pouvez faire rebondir l’icône du Dock en appelant la méthode
NativeApplication.nativeApplication.icon.bounce()
. Si vous définissez le paramètre
bounce() priority
sur informational, l’icône rebondit une fois. Si vous définissez ce paramètre sur critical, l’icône rebondit jusqu’à ce que l’utilisateur active l’application. Les constantes du paramètre
priority
sont définies dans la classe NotificationType.
Remarque :
l’icône ne rebondit pas si l’application est déjà active.
Evénements de l’icône du Dock
Lorsque vous cliquez sur l’icône du Dock, l’objet NativeApplication distribue un événement
invoke
. Si l’application n’est pas en cours d’exécution, le système lance l’application. Sinon, l’événement
invoke
est renvoyé à l’occurrence de l’application en cours d’exécution.
Icônes de la barre d’état système
AIR prend en charge les icônes de la barre d’état système lorsque la propriété
NativeApplication.supportsSystemTrayIcon
est définie sur
true
, ce qui n’est actuellement le cas que sous Windows et la plupart des distributions Linux. Sous Windows et Linux, les icônes de la barre d’état système s’affichent dans la zone de notification de la barre des tâches. Par défaut, aucune icône n’est affichée. Pour afficher une icône, affectez un tableau contenant des objets BitmapData à la propriété
bitmaps
de l’icône. Pour modifier l’image d’une icône, affectez un tableau contenant les nouvelles images à la propriété
bitmaps
. Pour supprimer l’icône, définissez la propriété
bitmaps
sur
null
.
Menus de l’icône de la barre d’état système
Vous pouvez ajouter un menu à l’icône de la barre d’état système en créant un objet NativeMenu, puis en l’affectant à la propriété
NativeApplication.nativeApplication.icon.menu
(le système d’exploitation ne fournit aucun menu par défaut). Pour accéder au menu de l’icône de la barre d’état système, cliquez sur l’icône avec le bouton droit de la souris.
Info-bulles de l’icône de la barre d’état système
Pour ajouter une info-bulle à une icône, définissez la propriété tooltip :
NativeApplication.nativeApplication.icon.tooltip = "Application name";
Evénements de l’icône de la barre d’état système
L’objet SystemTrayIcon référencé par la propriété NativeApplication.nativeApplication.icon distribue un événement ScreenMouseEvent pour les événements
click
,
mouseDown
,
mouseUp
,
rightClick
,
rightMouseDown
et
rightMouseUp
. Vous pouvez utiliser ces événements, ainsi que le menu d’une icône, pour autoriser les utilisateurs à interagir avec votre application lorsque celle-ci ne dispose pas de fenêtres visibles.
Exemple : Création d’une application ne disposant d’aucune fenêtre
L’exemple suivant crée une application AIR qui dispose d’une icône de la barre d’état système, mais d’aucune fenêtre visible. (Ne définissez pas la propriété
visible
de l’application sur
true
dans le descripteur d’application, sous peine que la fenêtre ne soit visible au démarrage de l’application.)
package
{
import flash.display.Loader;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.NativeWindow;
import flash.display.Sprite;
import flash.desktop.DockIcon;
import flash.desktop.SystemTrayIcon;
import flash.events.Event;
import flash.net.URLRequest;
import flash.desktop.NativeApplication;
public class SysTrayApp extends Sprite
{
public function SysTrayApp():void{
NativeApplication.nativeApplication.autoExit = false;
var icon:Loader = new Loader();
var iconMenu:NativeMenu = new NativeMenu();
var exitCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Exit"));
exitCommand.addEventListener(Event.SELECT, function(event:Event):void {
NativeApplication.nativeApplication.icon.bitmaps = [];
NativeApplication.nativeApplication.exit();
});
if (NativeApplication.supportsSystemTrayIcon) {
NativeApplication.nativeApplication.autoExit = false;
icon.contentLoaderInfo.addEventListener(Event.COMPLETE, iconLoadComplete);
icon.load(new URLRequest("icons/AIRApp_16.png"));
var systray:SystemTrayIcon =
NativeApplication.nativeApplication.icon as SystemTrayIcon;
systray.tooltip = "AIR application";
systray.menu = iconMenu;
}
if (NativeApplication.supportsDockIcon){
icon.contentLoaderInfo.addEventListener(Event.COMPLETE,iconLoadComplete);
icon.load(new URLRequest("icons/AIRApp_128.png"));
var dock:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
dock.menu = iconMenu;
}
}
private function iconLoadComplete(event:Event):void
{
NativeApplication.nativeApplication.icon.bitmaps =
[event.target.content.bitmapData];
}
}
}
Remarque :
si vous utilisez le composant WindowedApplication de Flex, vous devez définir l’attribut
visible
de la balise WindowedApplication sur
false
. Cet attribut prime sur le paramètre défini dans le descripteur d’application.
Remarque :
dans cet exemple, nous supposons qu’il existe des fichiers image nommés
AIRApp_16.png
et
AIRApp_128.png
dans un sous-répertoire
icons
de l’application. (Les fichiers d’icône d’exemple, que vous pouvez copier dans le dossier de votre projet, sont inclus dans le kit de développement AIR.)
Icônes et boutons de la barre des tâches de la fenêtre
Les icônes des fenêtres s’affichent normalement dans une zone de la fenêtre, appelée barre des tâches ou Dock, pour permettre aux utilisateurs d’accéder aisément à l’arrière-plan ou aux fenêtre minimisées. Le Dock de Mac OS X affiche l’icône correspondant à votre application, ainsi qu’une icône pour chaque fenêtre minimisée. Les barres des tâches de Microsoft Windows et Linux affichent un bouton contenant l’icône et le titre du programme de chaque fenêtre standard dans votre application.
Mise en surbrillance du bouton de la fenêtre dans la barre des tâches
Lorsqu’une fenêtre se trouve dans le chrome, vous pouvez informer l’utilisateur qu’un événement important ayant trait à la fenêtre s’est produit. Sous Mac OS X, vous pouvez informer l’utilisateur en faisant rebondir l’icône de l’application du Dock (comme décrit à la section
Rebond de l’icône du Dock
). Sous Windows et Linux, vous pouvez mettre en surbrillance le bouton de la barre des tâches de la fenêtre en appelant la méthode
notifyUser()
de l’occurrence de NativeWindow. Le paramètre
type
transmis à la méthode détermine l’urgence de la notification :
-
NotificationType.CRITICAL
: l’icône de la fenêtre clignote jusqu’à ce que l’utilisateur ramène la fenêtre au premier plan.
-
NotificationType.INFORMATIONAL
: l’icône de la fenêtre est mise en surbrillance et change de couleur.
Remarque :
sous Linux, seul le type de notification informationnel est pris en charge. La transmission de la valeur du type à la fonction
notifyUser()
a le même effet.
L’instruction suivante met en surbrillance le bouton de la barre des tâches d’une fenêtre :
stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
L’appel de la méthode
NativeWindow.notifyUser()
d’un système d’exploitation qui ne prend pas en charge la notification au niveau de la fenêtre n’a aucun effet. Utilisez la propriété
NativeWindow.supportsNotification
pour déterminer si la notification de fenêtres est prise en charge.
Création de fenêtres sans icônes ni boutons dans la barre des tâches
Sous Windows, les fenêtres de type
utilitaire
ou
légère
ne s’affichent pas dans la barre des tâches. Les fenêtres invisibles n’apparaissent pas non plus dans la barre des tâches.
Etant donné que la fenêtre initiale est nécessairement de type
normale
, pour créer une application dont aucune fenêtre ne s’affiche dans la barre des tâches, vous devez fermer la fenêtre initiale ou la laisser invisible. Pour fermer toutes les fenêtres de votre application sans quitter l’application, définissez la propriété
autoExit
de l’objet NativeApplication sur
false
avant de fermer la dernière fenêtre. Pour simplement éviter que la fenêtre initiale soit visible, ajoutez
<visible>false</visible>
à l’élément
<initalWindow>
du fichier descripteur d’application (et ne définissez pas la propriété
visible
sur
true
, ni n’appelez la méthode
activate()
de la fenêtre).
Dans les nouvelles fenêtres ouvertes par l’application, définissez la propriété
type
de l’objet NativeWindowInitOption transmis au constructeur de fenêtres sur
NativeWindowType.UTILITY
ou sur
NativeWindowType.LIGHTWEIGHT
.
Sous Mac OS X, les fenêtres minimisées apparaissent sur la barre des tâches du Dock. Vous pouvez désactiver l’affichage de l’icône minimisée en masquant la fenêtre au lieu de la minimiser. L’exemple suivant écoute un événement de changement
nativeWindowDisplayState
et l’annule si la fenêtre est minimisée. Le gestionnaire définit la propriété
visible
de la fenêtre sur
false
:
private function preventMinimize(event:NativeWindowDisplayStateEvent):void{
if(event.afterDisplayState == NativeWindowDisplayState.MINIMIZED){
event.preventDefault();
event.target.visible = false;
}
}
Sous Mac OS X, si une fenêtre est minimisée sur le Dock lorsque vous définissez la propriété
visible
sur
false
, l’icône du Dock n’est pas supprimée. L’utilisateur peut toujours cliquer sur l’icône pour faire réapparaître la fenêtre.
|
|
|