II. Boîtes à outils d’interacteurs plastiques
II.3. A. UBIT
Considérant les BàO « classiques », E. Lecolinet constate que [65-66 Lecolinet 1999 et
2003] :
• Les BàO sont artificiellement figées. Seules les IHM de type WIMP sont
faciles à réaliser. Elles posent des contraintes qui n’ont plus lieu d’être.
• Il existe une séparation artificielle entre les IHM WEB et non WEB. Il n’y a
pas de raison que la programmation d’une IHM pour le WEB soit si
différente. Cette séparation s’explique par des raisons historiques. Elle doit
être surmontée.
• De nombreuses personnes se disent, et sont, capables de coder de petites
IHM en HTML. Inversement, très peu s’estiment, et sont capables, de coder
des IHM à l’aide des BàO classiques (SWING, QT…).
Le but d’UBIT est de dépasser ces divisions et de permettre au programmeur de
facilement définir de nouveaux widgets. Je ne m’intéresse pas ici aux différences entre
UBIT et les BàO classiques, mais aux caractéristiques d’UBIT qui pourraient faciliter le
développement d’IHM plastiques. Je repére le contexte généralisé, l’héritage, la notion
de style et la structure en Directed Acyclic Graph (DAG).
Propriétés utiles pour la plasticité
Une IHM UBIT (comme d’ailleurs une IHM SWING ou HTML) peut être vue comme
un graphe orienté où chaque nœud représente un élément d’interface et chaque relation
entre deux nœuds représente la notion « contient ». L’affichage de l’interface se fait
relativement au parcours de ce graphe. Chaque nœud est affiché en fonction de son père
et en fonction d’un contexte graphique courant. Par exemple, si le contexte graphique
courant indique que la couleur est noire, alors un texte sera affiché en noir. Cette notion
de contexte graphique vient du monde de la synthèse d’image et des graphes de scène.
Ce contexte est généralement réduit à une transformation spatiale, la couleur, la texture,
etc. UBIT propose de généraliser cette notion en y incorporant potentiellement
n’importe quelle information, par exemple la fonte, mais aussi des informations
spécifiques à une application. La Figure II-26 illustre le rendu d’un graphe UBIT
représentant un bouton.
Figure II-26 : Graphe UBIT représentant un bouton. Des éléments du graphe comme "bold" ou "blue" modifient le contexte ainsi le texte « Image » est-il affiché en bleu gras.
Les informations de style (fonte, couleur, etc.) placées dans le contexte sont transmises
lors du parcours du graphe UBIT. Ainsi, pour modifier la fonte utilisée par défaut dans
toute l’application, il suffit d’ajouter une information de style dans le contexte
généralisé du noeud racine de l’application.
Un style global peut être donné en spécifiant des valeurs pour la fonte, la couleur du
texte, la couleur de fond, etc. Ces valeurs sont transmises aux descendants. Le style peut
être surchargé à n’importe quel niveau du graphe. Cette façon de faire est à rapprocher
des langages de style existants, par exemple, CSS pour le Web. Le style donné peut
n’être limité qu’à des informations de mise en forme de type couleurs ou fonte, mais il
est aussi possible de l’utiliser pour réaliser des modifications plus complexes, comme
des zooms sémantiques (l’interface change en fonction du zoom).
Cette notion de style, de contexte généralisé, permet de modifier l’apparence d’une
IHM. Couplé à une structure en DAG, elle permet de réaliser des vues multiples
synchronisées.
Alors que les BàO classiques imposent une structure d’arbre au graphe de widgets,
UBIT, s’inspirant des BàO 3D (graphe de scènes) et de certaines BàO 2D ([47 Fresco]
[73 Linton 1994], [80 OpenInventor], [58 Jazz] [12 Bederson 2000], etc.) propose
d’utiliser une structure en DAG. Cela permet à un élément d’avoir plusieurs pères et
donc d’être partagé (Figure II-27).
Figure II-27 : a) Structure en DAG (Directed Acyclique Graph). Les numéros représentent le nombre de fois que le nœud sera affiché. b) Une même interface affichée deux fois, avec différents facteurs de zoom.
Le facteur de zoom est un élément du contexte.
La partage permet de réaliser facilement des vues multiples : il suffit d’hériter de
plusieurs pères. Les différences entre les vues seront assurées par des contextes
différents. Par exemple, le même bouton pourra être affiché deux fois, à des endroits
différents et avec une couleur de fond différente (Figure II-28). Ce même principe peut
être appliqué à la réalisation de vues radars, à la réplication d’interfaces, etc.
Root Frame 1 fond gris Frame 2 Fond blanc Bouton text OK OK OK
Figure II-28 : Exemple de vue multiple affichée selon différents styles propagés par le contexte généralisé. A gauche, le graphe montre un bouton ayant deux frames pour pères, chacune redéfinit la couleur
courante. A droite, le résultat.
L’utilisation de cette structure de DAG permet de réaliser une certaine forme de
polymorphisme La Figure II-29 montre l’utilisation de nœuds « Conditions » qui sont
mutuellement exclusifs (un et un seul est vrai à la fois). Les conditions portent sur le
contexte généralisé, par exemple la place disponible, les préférences utilisateur, des
informations propres à l’application, etc. Si la condition est fausse, le sous DAG n’est
pas affiché. Seule une forme est donc affichée à un instant donné. Les conditions I et N
accèdent au même sous DAG : celui-ci sera affiché différemment en fonction des
contextes I et N.
Widget Root Condition 1 Condition I (contexte I) … Forme 1 Condition N (contexte N) Forme paramétriqueFigure II-29 : Exemple de réalisation de widget polymorphe.
Conclusion
UBIT permet de réaliser des IHM extrêmement flexibles, ne se limitant pas aux IHM
standardisées (SWING, TK…). Cela facilite l’innovation. La notion de style, de
contexte généralisé est un pas en direction d’une harmonisation entre les conceptions
d’IHM Web et non Web. L’objectif est d’allier la facilité de développement en HTML
et la puissance des BàO classiques. UBIT fournit des éléments extrêmement modulaires.
La création de nouveaux widgets revient à construire des brickgets, assemblages de
bricks. De nouvelles bricks peuvent être ajoutées par programmation, par exemple pour
fournir un canevas 3D. Enfin, la structure en DAG permet de réaliser de façon aisée des
vues multiples et offre une façon simple pour réaliser des widgets polymorphes.
Si UBIT est une BàO d’interacteurs innovante, elle reste au niveau CUI/FUI. Il n’y a
pas de modélisation de l’interface au niveau tâche utilisateur par exemple.
Tableau II-8 : Grille d'analyse pour UBIT.