F. de Coligny - 21.11.2003
Ce document traite de la sélection générique d'objets (arbres, cellules de terrain…) dans les visualiseurs de peuplements Capsis. Le système décrit ici s'appuie sur les extensions de type ObjectViewer qui représentent graphiquement l'objet qu'on leur passe en paramètre. On se limite au fonctionnement interactif de Capsis (pilote gui).
Les ObjectViewers sont des extensions graphiques qui représentent un objet dont on leur passe la référence. Ils utilisent le système standard de compatibilité des extensions (la méthode matchWith () fait des tests sur l'objet candidat). Ils peuvent selon les cas représenter un seul objet (fig. 1a) ou une liste d'objets (fig. 1b) passés dans une Collection.
Fig. 1a. Un ObjectViewer : Proportion des espèces dans une unité d'analyse du module Ventoux (S. Chalon)
Pour invoquer un ObjectViewer sur un objet dans Capsis, il faut exprimer la demande au travers de l'interface graphique. Plusieurs possibilités :
Fig. 1b. Sélection de plusieurs cellules dans un CellInspectorViewer
Pour faciliter la sélection en s'appuyant sur les ObjectViewers, on peut utiliser le composant OVChooser. Il se présente sous la forme d'un combo box proposant la liste des ObjectViewers compatibles avec la totalité des éléments sélectionnables par l'outil.
Fig. 2. OVChooser simple : un combo box proposant des ObjectViewers
L'OVChooser peut être affiché avec plus ou moins de fonctionnalités (fig. 2 et 3) en fonction des capacités du Visu associé. Le bouton de sélection est ainsi inutile dans les visualiseurs cartographiques qui déclenchent la sélection par une action de la souris
Fig. 3. OVChooser désactivable avec bouton pour déclencher la sélection
Quand l'utilisateur choisit un ObjectViewer dans le combo box, il détermine un mode de sélection courant. Une sélection dans le visualiseur associé à l'OVChooser déclenche l'ouverture d'un ObjectViewer du type choisi, représentant les objets sélectionnés.
Le visualiseur graphique Simple (SVSimple) montre un peuplement spatialisé sous la forme d'une carte vue de dessus. Il autorise le zoom, la translation et la sélection (voir aide en ligne). Le système de sélection s'appuie sur un OVChooser (fig. 4).
Fig. 4. Une sélection à la souris dans le Visu Simple ouvre un ObjectViewer du type de la sélection courante dans le combo box OVChooser. Ici, sélection multiple d'arbres. Les éléments sélectionnés ont un rendu particulier dans le Visu (ici une cible rouge)
Les fonctionnalités offertes sont les suivantes :
Fig. 5. Sélection multiple d'arbres dans le Visu Mountain (SVMountain), sous classe du Visu Simple
Le SVSimple est souvent sous-classé par les modélisateurs, le mode de sélection est hérité (fig. 5).
Le Visu Explorateur (SVController) est compatible avec les modèles qui gèrent une liste d'arbres (modèles spatialisés ou modèles indépendant des distances). Il présente une table contenant une ligne par arbre du peuplement sur lequel il est synchronisé. Il autorise l'application rapide de groupes et la sélection (fig. 6) d'un ou plusieurs arbres de la table pour visualisation avec un ObjectViewer.
Fig. 6. Sélection dans le Visu Explorateur. Désignation des lignes dans la table, puis action sur le bouton de sélection de l'OVChooser. Le visualiseur d'arbre reconnait une structure de données additionnelle AMAPsim et représente des couches de houppier
L'inspecteur est un outil très utilisé dans Capsis, on le retrouve sous plusieurs formes : inspecteur générique du menu général “Outil” (Inspector, démarre sur la classe Engine du noyau Capsis), Visu inspecteur (SVInspector) synchronisable sur une étape de projet (fig. 7) comme le Visu Simple et l'Explorateur, ObjectViewer inspecteur de cellule (CellInspectorViewer), d'arbre (TreeInspectorViewer), ou de tout autre type d'objet (InspectorViewer).
Fig. 7. Sélection à partir d'un Visu Inspecteur. La loupe de la barre d'outil permet de choisir un ObjectViewer pour l'objet courant dans l'inspecteur
Pour hériter des fonctionnalités de sélection offertes par l'OVChooser dans un visualisateur cartographique sous classes de SVSimple, il faut éviter de redéfinir les méthodes suivantes :
En revanche, il est possible de modifier l'aspect des arbres / cellule ou d'ajouter des fonctionnalités au Visu Simple en redéfinissant certaines méthodes dans une sous classe :