Sous-sections


7.4 Points d'accès aux interactions (IAPs)

Les Points d'Accès aux Interactions (nous utiliserons l'acronyme IAP pour «Interaction Access Points» en anglais) sont les nœuds spécifiques du graphe d'interaction qui établissent des points de connexion dynamiques entre le graphe d'interaction et le graphe de scène. Dans la figure 7.1, qui illustre le modèle, ce sont les nœuds du graphe d'interaction d'où partent les flèches vers le graphe de scène. Les IAPs peuvent alors être considérés comme la « colle» qui assemble dynamiquement un graphe de scène avec un graphe d'interaction pour composer un graphe combiné. Ils transmettent et reçoivent des données du graphe de scène, modifient sa structure en insérant ou supprimant des nœuds, changent les propriétés ou déclenchent des comportements spécifiques aux nœuds.

Les dispositifs IAP fournissent plusieurs manières de lier des dispositifs ICON (les périphériques d'entrée, en général) aux composants graphiques du graphe de scène. Nous en distinguons dès lors quatre classes, selon le type de liaison qu'ils permettent:


7.4.1 Dispositifs d'interaction

Les dispositifs d'interaction définissent les fonctionnalités d'une technique d'interaction applicable à une classe de nœuds du graphe de scène, et donc à une classe particulière de composants de l'interface (voir figure 7.11).

Figure 7.11: Dispositifs d'interaction. Les dispositifs d'interaction communiquent avec une classe de nœuds du graphe de scène.
\includegraphics[width=.8\textwidth]{dispoint}

Selon [Foley et al.1990], une technique d'interaction décrit «la manière de se servir d'un dispositif d'entrée» pour accomplir une tâche sur un ordinateur. Conventionnellement, les techniques d'interactions sont décrites de façon abstraite et générique, sans les lier à un périphérique d'entrée et à une tâche (ou un objet) spécifiques (c'est le style d'interaction dans la figure 7.12). Pourtant, leur implémentation concrète s'avère être fortement dépendante du couple {dispositif, tâche}, de par la rigidité des outils actuels. Il est alors souvent fastidieux d'adapter une technique d'interaction à une autre classe d'objets et à d'autres périphériques d'entrée que ceux pour lesquels elle a déjà été implémentée.

Figure 7.12: Technique d'interaction. Une technique d'interaction est définie par un dispositif d'entrée, un style d'interaction, et une tâche à réaliser. Elle est souvent implémentée d'une façon monolithique qui la contraint à un dispositif et une tâche (contour global). ICON a permis l'adaptabilité en entrée à laquelle MAGGLITE ajoute la généricité en séparant interaction et objet d'intérêt.
\includegraphics[width=.9\textwidth]{tech}

ICON a permis de séparer la gestion des entrées de la réalisation des interactions, introduisant la notion d'adaptabilité en entrée, offrant plus de flexibilité. Notre modèle permet cette même adaptabilité et flexibilité au niveau de l'interaction et de son objet d'intérêt en externalisant le style d'interaction avec les dispositifs d'interaction (voir figure 7.12).

7.4.1.1 Fonctionnement

Les classes de composants graphiques (nœuds du graphe de scène) déclarent leurs capacités et les dispositifs d'interaction sont spécialisés dans la gestion d'une ou plusieurs capacités particulières. Par exemple, une classe d'objets graphiques pouvant être déplacés signale cette capacité et toutes ses instance seront alors compatibles avec les dispositifs d'interaction permettant le déplacement d'objets. Ces dispositifs représentent donc des implémentations d'Interactions Génériques, n'étant pas liées aux objets eux-mêmes mais à leurs caractéristiques et possibilités.

Au niveau de l'implémentation de la boîte à outils, ces caractéristiques des classes de nœuds sont externalisées en implémentant des interfaces Java: l'interface Moveable, par exemple, rend compatible les futures instances avec les interactions de déplacement d'objets.

Cette modularité rend les interactions utilisables dans toutes les applications, et adaptables dynamiquement à tous types de périphériques pour composer de nouvelles techniques d'interaction. Elles peuvent aussi être étendues à d'autres classes d'objets graphiques (et donc de tâches), il suffit pour cela que ces classes implémentent les capacités compatibles.

Enfin, la dissociation des dispositifs d'entrée, objets d'intérêt et dispositifs d'interaction implique que ces derniers reçoivent les informations nécessaires à leur application par leurs canaux d'entrée. Pour cela, il présentent en général (voir figure 7.13):

  1. un slot de type booléen Use, qui lorsqu'il recevra une valeur permettra de déclencher ou d'interrompre l'interaction.
  2. un slot de type Objet id, qui recevra la liste des objets auxquels l'interaction doit s'appliquer à un instant donné. Ce slot est en général connecté en sortie d'un dispositif de sélection (Pick) présenté dans la figure 7.13(a). Il permet la sélection dans le graphe de scène des objets qui se trouvent à une position donnée (nous détaillerons le fonctionnement de ce dispositif dans la section 8.3.2 du chapitre suivant).
  3. des slots de données (entier, double, chaîne de caractères, etc.) qui recevrons toutes données utiles à l'interaction. Dans nos dispositifs exemples de la figure 7.13, qui sont des techniques de manipulation directe d'objets graphiques, ce sont les slots x et y qui recevront des valeurs de position.

Figure 7.13: Dispositifs d'interaction. La figure (a) présente un dispositif de sélection d'objets (Pick). La figure (c) présente un dispositif de Glisser-Déposer (Drag). La figure (c) présente un dispositif nommé Responsive Handle, une d'interaction originale que nous avons développée.
\begin{figure}\setcounter{subfigure}{0}
\begin{center}
\subfigure[\emph{Pick}.]...
...
\includegraphics[width=.3\textwidth]{dispohandle}}
\end{center}
\end{figure}

7.4.1.2 Utilisation

Les dispositifs d'interaction ont un vaste champ d'application. Ils permettent de factoriser et de réutiliser le noyau d'un style d'interaction. Leur réalisation se réduit à définir les propriétés des objets auxquels ils vont pouvoir s'appliquer, et à implémenter le noyau du dispositif, l'algorithme de l'interaction proprement dite. Une fois ajouté à la librairie, le dispositif est prêt à être utilisé.

MAGGLITE fournit essentiellement des dispositifs de manipulation directe tels que le dispositif Drag de la figure 7.13(b) (nous détaillons en annexe D, section D.2.1, les étapes de la conception de ce dispositif). Mais cette architecture permet aussi la réalisation de techniques de visualisation d'informations, de méthodes de saisie de texte, etc.

7.4.1.3 Exemple

Le graphe d'interaction de la figure 7.8 permet de décrire la technique d'interaction de Glisser-Déposer à partir du dispositif Drag, et de l'utiliser sur tous les objets compatibles. Dans la configuration proposée, la manipulation sera réalisée en se plaçant sur l'objet, en pressant le bouton gauche de la souris et en la déplaçant pour déplacer l'objet. Le relâchement du bouton de la souris terminera cette interaction. Toutefois, cette technique n'est pas figée, et peut être initiée par tout autre dispositif permettant de la déclencher et de la réaliser (un bouton du clavier ou une commande vocale peuvent être connectés au slot Use, des dispositifs absolus, relatifs ou même une webcam et des dispositifs adaptateurs sur les slots x et y). Enfin, cette technique de Glisser-Déposer peut être remplacée par une autre en utilisant un autre dispositif (un exemple est donné dans la section 8.4.2 qui décrit la conception d'interfaces avec MAGGLITE).

Nous avions qualifié ces dispositifs d'implémentations d'Interactions Génériques d'un point de vue du programmeur. Du point de vue de leurs utilisateurs (concepteurs d'interfaces ou utilisateurs) nous pouvons les qualifier d'Interactions Enfichables.


7.4.2 Manipulateurs

Contrairement aux dispositifs d'interaction, qui peuvent potentiellement agir sur n'importe quel objet du graphe de scène, les manipulateurs sont des dispositifs IAP liés à des instances, à des nœuds particuliers du graphes de scène (voir figure 7.14). Ces dispositifs d'instance déclenchent des commandes que sait exécuter l'unique objet graphique qu'ils contrôlent: se déplacer, se redimensionner, etc.

Figure 7.14: Dispositifs manipulateurs. Un manipulateur communique avec un nœud spécifique et unique du graphe de scène.
\includegraphics[width=.8\textwidth]{manipgraph}

7.4.2.1 Fonctionnement

Dès qu'un objet graphique est créé et ajouté au graphe de scène, il apparaît alors sous la forme d'un dispositif dans la bibliothèque du configurateur graphique d'ICON: son manipulateur, qui externalise les points d'entrée et de sortie pour interagir directement avec lui. Pour reprendre l'exemple d'un objet qui peut être déplacé, son manipulateur présentera alors des slots d'entrée move, prévus pour recevoir des coordonnées (absolues ou relatives). Les manipulateurs peuvent aussi présenter des slots de sortie, correspondants à des états que l'objet graphique peut transmettre.

Les manipulateurs sont générés dynamiquement et ajoutés à la bibliothèque des dispositifs lorsque des objets graphiques sont instanciés. Ainsi, à chaque capacité spéciale de l'objet correspond un slot d'entrée sur son manipulateur permettant de la déclencher et/ou un slot de sortie permettant d'y accéder (nous détaillerons les mécanismes de génération automatique de ces dispositifs dans l'annexe C consacrée aux extensions que nous avons apportées à ICON).

7.4.2.2 Exemple

Figure 7.15: Manipulateur. Le dispositif du périphérique d'entrée Magellan (à gauche) est connecté aux slots de déplacement du dispositif manipulateur de l'objet graphique thumbnails (à droite). Ainsi, il est possible de déplacer directement l'objet en agissant sur le dispositif d'entrée.
\includegraphics[width=.6\textwidth]{manipulator}

La figure 7.15 présente la connexion d'un dispositif d'entrée isométrique à six degrés de libertés, le Magellan, au manipulateur d'un objet graphique, Thumbnails. Les axes x et z du dispositif physique sont connectés aux slots de déplacement relatif de l'objet (dx et dy) et son axe de rotation u au slot de rotation de l'objet (rotate). Les actions sur ces axes permettent donc d'agir directement sur l'objet graphique. Les signaux de chaque canaux transitent par les dispositifs de la configuration (le graphe d'interaction) et sont transmis à l'objet (le graphe de scène) par son manipulateur (flèches bleues de la figure 7.15). Par contre, du point de vue de l'utilisateur, ce mécanisme est transparent et le périphérique physique est directement couplé, associé à l'objet graphique (flèche rouge pointillée sur la figure). Ce principe d'association directe est une manière simple et efficace de faire de la manipulation directe, en renforçant la notion de contrôle dans l'approche en flot de données.


7.4.3 Dispositifs de comportements

Figure 7.16: Dispositifs de comportement. Un dispositif de comportement est connecté en aval d'un manipulateur afin de communiquer avec le nœud correspondant du graphe de scène.
\includegraphics[width=.8\textwidth]{comportgraph}

Les dispositifs de comportement décrivent des comportements ou des états génériques (pulsation, surlignage, «collage», etc.) qui peuvent être appliqués à n'importe quel composant ou groupe de composants de la boîte à outils. Leur place et leur fonctionnement dans le modèle des graphes combinés sont très liés aux manipulateurs. En effet, les dispositifs de comportement doivent être connectés aux objets graphique par l'intermédiaire de leurs manipulateurs (voir figure 7.16). Ainsi, il est possible de spécifier lors de l'exécution de l'application quel va (vont) être le(s) comportement(s) graphique(s) d'un objet de l'interface.

Ces dispositifs présentent le double avantage d'externaliser les comportements graphiques des objets de la boîte à outil, afin de pouvoir les réutiliser simplement et dynamiquement sur tout type de composants, et de rendre leur déclenchement complètement configurable. Ainsi, en opposition aux modèles d'architectures logicielles standards qui proposent différentes classes d'objets pour différents comportements, notre proposition permet des associations dynamiques objet-comportement(s) à un niveau de granularité fin et sans avoir recours à de lourdes modifications logicielles (implémentation de nouvelles classes d'objets).

7.4.3.1 Fonctionnement

Les dispositifs de comportement ont deux slots d'entrée par défaut (voir figure 7.17(a)):
  1. un slot magglite, permettant de connecter un ou plusieurs manipulateurs;
  2. un slot booléen enable, qui active ou désactive le comportement.
À la réception d'une valeur vrai par son slot d'activation, le dispositif de comportement va alors appliquer le comportement pour lequel il a été programmé à l'objet graphique connecté à son slot magglite. Sinon, il se désactive jusqu'à une prochaine activation.
Il est évident que d'autres slots peuvent être présents dans le cas de comportements plus complexes que ceux que nous proposons à titre d'exemple.

7.4.3.2 Utilisation et exemples

Nous définissons deux modes d'utilisation des dispositifs de comportement dans des graphes d'interaction, selon la méthode choisie pour leur déclenchement:
  1. le mode direct, lorsque l'objet graphique associé ou une action sur cet objet graphique contrôle le déclenchement du comportement;
  2. le mode indirect, lorsque le déclenchement du comportement est contrôlé par un évènement non directement lié à l'objet associé.
Un objet graphique peut être connecté à plusieurs comportements avec différents modes d'activation et nous proposons aussi une notion de comportement de groupe pour connecter plusieurs objets à un même comportement.

Comportement direct
Nous parlons de comportement direct lorsque le déclenchement du comportement est contrôlé par le composant graphique qui lui est associé. La figure 7.17 présente une telle connexion. Le manipulateur de l'objet graphique étoile et le dispositif de comportement pulsation sont connectés par leurs slots id (sortie du manipulateur) et magglite (entrée du comportement). Ainsi, le comportement pulsation est associé de manière unique à l'objet graphique étoile. Le slot de déclenchement est connecté au slot de sortie du manipulateur picked.prox. Cette connexion permet de déclencher la pulsation de l'objet graphique dès que le pointeur est dans sa zone de proximité7.3.

Figure 7.17: Comportement direct. Figure(a): le manipulateur d'un composant graphique (Etoile) est connecté directement à un dispositif de comportement (pulsation). Figure (b): le comportement est déclenché lorsque le pointeur est dans la proximité du composant associé.
\begin{figure}\setcounter{subfigure}{0}
\begin{center}
\subfigure[]{
\includeg...
...degraphics[width=.4\textwidth]{comportementdirectb}}
\end{center}
\end{figure}

Comportement indirect
La notion de comportement indirect est différente du point de vue de l'action qui déclenche le comportement. Celui-ci n'est plus directement connecté à l'objet en question, mais à un autre dispositif. Ainsi, comme le montre la figure 7.18, ce peut-être un périphérique d'entrée (figure 7.18(a)), un manipulateur d'un autre objet graphique (figure 7.18(b)) ou tout autre dispositif compatible.

Figure 7.18: Comportement indirect. Figure (a): le comportement est déclenché par un périphérique d'entrée. Figure (b): le comportement est déclenché par un autre composant.
\begin{figure}\setcounter{subfigure}{0}
\begin{center}
\subfigure[]{
\includeg...
...raphics[width=.45\textwidth]{comportementindirecta}}
\end{center}
\end{figure}

Dans le premier cas, la pulsation de l'objet étoile est déclenchée lorsque le bouton gauche de la souris est pressé, dans l'autre, lorsque le pointeur est situé sur l'objet image.

Comportement de groupe
Nous avons vu jusqu'ici les dispositifs permettant l'association d'un ou plusieurs comportements à un objet unique. Nous proposons un dispositif groupe qui permet de connecter plusieurs objets graphiques pour les associer à un même comportement. Nous appelons ce mode de configuration le comportement de groupe. Ainsi, que ce soit en déclenchement direct ou indirect, tous les objets se verront attribuer le même comportement, déclenché par la même action. La figure 7.19 illustre ce principe par la connexion de trois objets graphiques à un dispositif de comportement surlignage déclenché par la sélection d'un quatrième objet (comportement indirect). Lorsque le pointeur survole cet objet, le comportement est appliqué aux trois autres (voir figure 7.19(c)).

Figure 7.19: Dispositifs de comportement. Comportement de groupe. Dans la figure (a), trois composants sont groupés et connectés à un comportement déclenché par un autre composant. Les autres figures présentent l'état des composants lorsque le comportement est inactif (b) ou actif (c).
\begin{figure}\setcounter{subfigure}{0}
\begin{center}
\subfigure[]{
\includeg...
...degraphics[width=.45\textwidth]{comportementgroupc}}
\end{center}
\end{figure}

Les exemples que nous avons présentés restent relativement simples et illustratifs. Toutefois, les dispositifs de comportement et les modes d'utilisation que nous leurs avons associés offrent de nombreuses possibilités de prototypage et de conception d'interactions avancées, particulièrement avec des objets graphiques plus évolués ou des configurations plus complexes. En plus des avantages de l'association dynamique objet(s)/comportement(s) en terme de réutilisabilité et de configurabilité, ces dispositifs permettent encore une fois de rendre les retours graphiques de l'interface modifiables et adaptables.


7.4.4 Outils internes

Les Outils Internes sont la quatrième classe de points d'accès aux interactions. Ces dispositifs représentent des outils conçus pour remplir une tâche dans un composant graphique spécifique. Leur action sur le graphe de scène peut donc être vue comme celle des manipulateurs, n'envoyant des messages qu'à un seul nœud du graphe de scène. Toutefois, leur sémantique n'est pas la même au niveau de la conception des interactions.
Un manipulateur est une représentation d'un objet, et surtout des commandes d'interaction qu'il sait exécuter. Il agit donc sur l'objet graphique concerné (déplacement, rotation, redimensionnement, activation d'états ou déclenchement de comportements). Les outils internes sont des actions applicables dans l'objet graphique, conformément aux actions que permet l'objet concerné et aux activités qu'il permet de réaliser (le dessin, par exemple).

7.4.4.1 Fonctionnement

Les outils internes doivent être assignés à un nœud compatible du graphe de scène. Dès lors, ils sont visibles dans la librairie des dispositifs du configurateur graphique. Ils sont activés lors de leur connexion dans un graphe d'interaction et n'agissent qu'à l'intérieur des limites graphiques du composant auquel ils sont attaché. Ils procurent un retour visuel de type curseur qu'ils se chargent d'installer dans le graphe de scène (voir figure 7.20), en amont du composant graphique auquel il sont attachés. Cela permet l'affichage de ce retour de l'outil au dessus du composant. Ensuite, lorsque le signal d'utilisation est déclenché sur l'outil (slot Use), la méthode d'action est appelée pour accomplir la tâche ou l'interaction programmée.

Figure 7.20: Un outil interne est attaché au composant graphique carré. Connecté dans le graphe de configuration (à gauche), son curseur est visible dans le composant (à droite).
\includegraphics[width=1.1\textwidth]{innertool}

7.4.4.2 Utilisation et exemples

Les outils internes ont été conçus pour remplir des tâches positionnelles. Ils doivent donc recevoir en entrée des valeurs de position (en coordonnées écran). Dès lors, deux méthodes de traitements sont possibles, caractérisant deux modes: le mode local et le mode global. Nous prendrons pour exemple de description de ces modes un outil interne de dessin (DrawInnerTool), permettant de tracer des traits sur le composant auquel il est ajouté.

Mode local
Les valeurs reçues par les slots d'entrées de coordonnées sont converties dans le système de coordonnées local de l'objet graphique auquel est attaché l'outil. Ce mode permet une projection complète de la portée du périphérique d'entrée connecté à l'outil sur la surface visible du composant. Dans la figure 7.21, l'outil interne de dessin est connecté à une tablette graphique en mode mode local, mode approprié aux périphériques d'entrée absolus.

Figure 7.21: Outil Interne en mode local.
\includegraphics[width=.8\textwidth]{innertoollocal}

Mode global
Dans ce mode, au contraire du mode local, l'outil n'opère aucune conversion sur les coordonnées et les interprète donc en coordonnées écran. Ainsi, la portée du dispositif d'entrée est projetée sur l'écran. L'outil n'est alors actif que lorsque les coordonnées reçues sont dans les limites de l'objet graphique auquel il est attaché. Dans le cas contraire, l'outil est inactif et les coordonnées sont transmises par ses slots de sortie, sans que son action soit déclenchée. Dans la figure 7.22, deux outils internes sont connectés l'un à l'autre en mode global.

Le premier dans la chaîne, nommé GestureZone, est attaché au composant à bord bleu et son action est de reconnaître et interpréter des gestes. Ses slots d'entrée sont connectés à la sortie d'un dispositif tablette graphique. Le second outil est un outil interne de dessin, attaché au bureau de l'application. Ses slots d'entrée sont connectés aux slots de relais de l'outil de geste (outside.use, outside.x et outside.y).

Lorsque les coordonnées écran envoyées par le dispositif tablette sont dans les frontières du composant de reconnaissance de geste, l'outil de geste attaché est activé et ne transmet aucune valeur à l'outil de dessin du bureau. Lorsque les coordonnées sont en dehors des frontière de la zone de gestes, l'outil de gestes est désactivé et il transmet les coordonnées à l'outil de dessin du bureau. L'utilisateur peut donc dessiner n'importe où sur le bureau, excepté dans la zone de gestes où ses traits sont interprétés. Cette projection de zones de l'écran sur les dispositifs d'entrée est une manière efficace de construire des interactions post-WIMP, tout spécialement avec des dispositifs tels que des tablettes, tablettes écran ou écran tactiles.

Figure 7.22: Outil Interne en mode global.
\includegraphics[width=.9\textwidth]{innertoolglobal}

La boîte à outils propose trois exemples d'outils internes: l'outil interne de dessin, l'outil interne de gomme et un outil interne générique que nous détaillerons dans le chapitre suivant. Les différents mécanismes (modes de gestion des coordonnées, retour graphique et installation de l'outil) sont implémentés dans la boîte à outil et sont donc hérités lors de la création d'un nouveau type d'outil interne. Seule l'action proprement dite de l'outil doit être implémentée (l'annexe D offre plus de détails techniques sur la création d'un outil interne).

7.4.5 Dispositif de l'application

Une dernière notion peut être assimilée à un point d'accès à l'interaction, bien que le dispositif en résultant ne réalise pas directement une connexion entre le graphe d'interaction et le graphe de scène: le dispositif de l'application.

Les dispositifs présentés précédemment permettent essentiellement de contrôler les outils, de spécifier des interactions et comportements pour l'interface au niveau des activités que permet l'application (dessin dans des composants, déplacement d'objets, affichage de données, etc.). Le dispositif de l'application ne permet pas le contrôle d'objets graphiques mais des fonctionnalités globales, c'est à dire au dessus du graphe de scène. Ainsi, il peut proposer des fonctionnalités telles que le déplacement ou le redimensionnement de l'environnement graphique global de l'application (fenêtre système), l'ouverture du configurateur graphique ou la fermeture de l'application. La figure 7.23 présente un dispositif d'application.

Figure 7.23: Dispositif de l'application. Ce dispositif, créé au démarrage de toute application MAGGLITE, permet le contrôle des fonctionnalités globales de l'application.
\includegraphics[width=.5\textwidth]{dispoapplication}

Les fonctionnalités de base qu'il propose sous forme de slots d'entrée sont communes à toutes les applications construites avec la boîte à outils: plein écran, configuration, quitter, etc. La création de ce dispositif est dynamique, lors du lancement de l'application et il est bien sur possible de lui rajouter d'autres fonctionnalités (par programmation).

Ce dispositif fournit donc, au niveau de l'application, les mêmes capacités, principes de conception et d'utilisation que ceux proposés au niveau des outils de l'application. Cela permet de proposer des interactions homogènes et d'éviter pour l'utilisateur une rupture entre les outils proposés et le contrôle global de l'application. En effet, il serait incohérent de proposer une barre de menus standard d'application WIMP (fichier, éditer, etc.) dans une application avancée basée sur le dessin et la reconnaissance de gestes, comme SVALABARD, par exemple. Le dispositif de l'application permet ce contrôle avec les mêmes interactions, et autorise de fait la suppression de tous les contrôles et widgets standards si ceux-ci ne sont pas adaptés.

stuf
2005-09-06