Outils JMap
Un outil JMap permet de fournir une interaction entre l'utilisateur et la carte au moyen de la souris. Par exemple, lors que l'utilisateur active l'outil de sélection et clique sur la carte pour sélectionner un élément, c'est la classe de l'outil de sélection qui effectue le travail. Cet outil est programmé pour effectuer une sélection à l'endroit cliqué. De même, lorsque l'utilisateur utilise l'outil de mesure de distance, c'est la classe de l'outil qui calcule et affiche la distance entre 2 points cliqués par l'utilisateur. Le développement d'outils JMap vous permet donc d'implémenter des actions personnalisées.
En général, un seul outil à la fois peut être en fonction. Pour qu'un outil devienne en fonction, il doit devenir l'outil actif d'une vue JMap. Pour se faire, il faut utiliser la méthode setCurrentTool(Tool) de la classe View ou de la classe ViewManager. Notez que le moyen utilisé pour rendre l'outil actif, tel qu'un bouton ou un item de menu, n'a aucun lien avec le fonctionnement de l'outil lui-même.
Lorsque l'utilisateur change l'outil actif (par exemple en appuyant sur un bouton), voici essentiellement le code qui est appelé.
JMapApplicationContext.getInstance().getViewManager().setCurrentTool(new MyTool());
|
Quand un outil est actif, il reçoit tous les événements de souris qui sont générés par la vue active. C'est la responsabilité de la classe de l'outil de traiter ces événements et de prendre les actions voulues.
Pour développer un nouvel outil, vous devez programmer une classe dérivée de la classe abstraite Tool et implémenter uniquement les méthodes dont vous avez besoin pour faire le travail de l'outil. Par exemple, si l'outil doit faire une action lorsque l'utilisateur effectue un clic de souris, vous devez implémenter la méthode onToolClicked().
Méthodes de la classe Tool |
|
Cette méthode est appelée lorsque l'outil devient l'outil actif d'une vue. Le code de cette méthode devrait servir, au besoin, à préparer le travail de l'outil. La vue en question est passée en paramètre à cette méthode. |
|
Cette méthode est appelée par la vue quand l'outil devient actif afin de permettre à votre outil de fournir son propre curseur de souris. Ce curseur sera visible sur la vue tant que votre outil restera l'outil actif. |
|
Cette méthode est appelée quand l'utilisateur enfonce l'un des boutons de la souris à l'intérieur de la vue. |
|
Cette méthode est appelée quand l'utilisateur relâche l'un des boutons de la souris à l'intérieur de la vue. |
|
Cette méthode est appelée après que l'utilisateur ait complété un clic de souris à l'intérieur de la vue. |
|
Cette méthode est appelée à répétition lorsque l'utilisateur déplace la souris à l'intérieur de la vue. |
|
Cette méthode est appelée à répétition lorsque l'utilisateur déplace la souris à l'intérieur de la vue, tout en maintenant un bouton enfoncé. |
|
Cette méthode est appelée lorsque l'outil devient inactif, c'est-à-dire lorsqu'un autre outil devient actif sur la vue. Le code de cette méthode pourrait servir, au besoin, à faire un travail de fermeture ou de libération de ressources. |
L'exemple de code suivant montre un outil simple qui, lorsque l'utilisateur appuie et relâche le bouton gauche de la souris sur la carte, affiche les propriétés du premier élément trouvé à la coordonnée du curseur de la souris. Seules les couches vectorielles sont considérées et la recherche se fait de la couche la plus haute vers la couche la plus basse, dans l'ordre d'affichage des couches. Notez que les autres méthodes de la classe Tool ne sont pas implémentées puisqu'elles ne sont pas requises pour le fonctionnement de l'outil.
|
Outils de dessin
Il est simple d'implémenter des outils qui dessinent sur la carte en dérivant simplement des classes des outils de dessin existantes de JMap.
En dérivant de ces classes, tout le fonctionnement de base est hérité. Les options suivantes sont disponibles:
•Modes persistent et volatile (détermine si des éléments sont créés);
•Sélection de la couche qui recevra les éléments dessinés;
•Paramètres du style des éléments dessinés (couleurs, types de trait, etc.);
•Affichage des dimensions sur la carte pendant le dessin.
Le tableau suivant présente la liste des classes des outils de dessin disponibles dans JMap. Toutes ces classes sont elles-mêmes dérivées de la classe ToolDraw.
Classes de dessin dérivées de ToolDraw |
|
Dessine une boîte (rectangle) sue la carte. |
|
Dessine un cercle sur la carte. |
|
Dessine une ligne simple sur la carte. |
|
Dessine une multiligne sur la carte. |
|
Dessine un polygone sur la carte. |
Le tableau suivant présente la liste des méthodes les plus couramment utilisées de la classe ToolDraw.
Méthodes de la classe ToolDraw |
|
Retourne l'objet de type StyleContainer qui contient les styles des différents types d'éléments (polygones, lignes, etc.) qu'il est possible de dessiner. C'est la méthode à appeler pour modifier le style des éléments qui seront dessinés par l'outil. |
|
Spécifie la couche qui va recevoir les éléments dessinés par l'outil, si les éléments sont persistants (voir méthode setPersistant(boolean) plus bas). Si aucun couche n'est spécifiée, une couche système est utilisée par défaut. |
|
Détermine si les éléments seront stockés sur une couche ou non (voir méthode setDrawLayer(VectorLayer) plus haut). S'ils ne sont pas stockés, les éléments disparaissent aussitôt l'opération de dessin terminée. |
L'exemple de code suivant montre un outil qui dérive de ToolDrawPolygon et qui hérite de toutes les capacités de dessin de celle-ci.
|