Vues et gestionnaire de vues

La classe View

La vue (classe View) dans JMap est la composante graphique responsable de l'affichage de la carte. Les méthodes de cette classe permettent de contrôler la carte (zoom, déplacement, etc.), de demander son rafraîchissement, de renseigner sur l'échelle, etc.

Le tableau suivant présente les principales méthodes de la classe View.

Navigation

zoom(double)

Effectue un zoom au centre de la carte en utilisant le facteur de grossissement spécifié. Un facteur de 2 produit une carte 2 fois plus rapprochée. Un facteur de .5 produit une carte 2 fois plus éloignée. Un rafraîchissement de la carte doit suivre.

zoom(Rectangle)

Effectue un recadrage de la carte autour du rectangle spécifié. Un rafraîchissement de la carte doit suivre.

zoomExtent()

Effectue un recadrage de la carte de manière à afficher l'étendue totale des données. Un rafraîchissement de la carte doit suivre.

moveTo(double, double)

Recentre la carte autour de la coordonnée spécifiée. L'échelle demeure inchangée. Un rafraîchissement de la carte doit suivre.

moveTo(Point)

Recentre la carte autour de la coordonnée spécifiée. L'échelle demeure inchangée. Un rafraîchissement de la carte doit suivre.

pan(int, int)

Déplace la carte en x et en y selon les valeurs spécifiées en coordonnées d'écran (DC). Un rafraîchissement de la carte doit suivre.

setScale(double)

Modifie l'échelle de la carte selon la valeur spécifiée. Un rafraîchissement de la carte doit suivre.

Affichage

refresh()

Rafraîchit la carte. Après tout appel à des méthodes modifiant l'état de la carte, celle-ci doit être rafraîchie pour que les changements deviennent visibles.

addMarker(Point, String, Style)

Ajoute un marqueur (symbole indiquant une localisation) sur la carte à la coordonnée spécifiée et avec le message et l'apparence spécifiés.

removeMarker(long)

Enlève de la carte le marqueur spécifié.

clearMarkers()

Enlève tous les marqueurs présents sur la carte.

getDCViewBounds()

Retourne l'étendue de la carte en coordonnées d'écran (DC).

getWCViewBounds()

Retourne l'étendue de la carte en coordonnées terrain (WC).

getTransform()

Retourne la transformation de la vue. Cette transformation est utilisée pour la conversion des coordonnées entre les systèmes DC et WC.

getViewOverlay()

Retourne l'overlay de la vue. L'overlay est une couche spéciale servant à l'affichage de données volatiles, souvent utilisée pour réaliser des animations fluides, telles que le déplacement d'objets, du dessin, etc.

getScaleFactor()

Retourne le facteur d'échelle courant de la vue sous la forme du dénominateur (1 : dénominateur).

getViewState()

Retourne l'instance de la classe ViewState associée à cette vue. Voir plus bas pour plus d'informations sur ce sujet.

getZoomLevel()

Retourne la distance horizontale courante de la vue en coordonnées terrain (WC).

Autres

getLayerManager()

Retourne l'instance du gestionnaire de couches (LayerManager) associé à la vue.

getMapProjection()

Retourne la projection cartographique (Projection) des données de la carte.

getMapUnit()

Retourne l'unité (JMapUnit) des données de la carte.

removePopupMenuAction(Action)

Enlève une action du menu contextuel de la vue.

removePopupMenuItem(JMenuItem)

Enlève un item du menu contextuel de la vue.

addPopupMenuAction(Action)

Ajoute une action au menu contextuel de la vue.

addPopupMenuItem(JMenuItem)

Ajoute un item au menu contextuel de la vue.

addViewEventListener(ViewEventListener)

Permet de s'enregistrer pour écouter les événements générés par la vue.

removeViewEventListener(ViewEventListener)

Permet de cesser d'écouter les événements générés par la vue.

setCurrentTool(Tool)

Remplace l'outil actif de la vue par l'outil spécifié en paramètre.

 

Les événements de la classe View

La vue dans JMap génère des événements dans plusieurs situations. Pour recevoir ces événements, vous devez enregistrer un listener sur la vue en questions. Notez que pour recevoir les événements générées par l'ensemble des vues ouvertes, il est préférable d'enregistrer un listener sur le gestionnaire de vues. Voir plus bas pour plus d'informations à ce sujet.

Pour recevoir les événements d'une vue, vous devez implémenter l'interface ViewEventListener et l'enregistrer auprès de la vue en utilisant la méthode addViewEventListener() tel que montré dans l'exemple suivant.

 

  View view = ...
 
  view.addViewEventListener(new ViewEventListener()
  {
    @Override
    public void viewToolChangedOccurred(ViewToolChangedEvent e)
    {
    }
 
    ...      
  });

 

Notez qu'il existe aussi un adaptateur (ViewAdapter) qui simplifie le développement du listener.

Le tableau suivant présente les événements générés par la classe View.

Événements de la vue

viewChangedOccurred (ViewChangedEvent)

Lancé après un changement d'état de la vue suite à une opération de navigation (zoom, déplacement, etc.).

viewToolChangedOccurred (ViewToolChangedEvent)

Lancé quand l'outil actif sur la vue est remplacé par un autre outil.

viewRedrawOccurred (ViewRedrawEvent)

Lancé quand la vue se redessine, en tout ou en partie. Les éléments des couches sont redessinés.

viewRepaintOccurred (ViewRepaintEvent)

Lancé quand la vue est repeinte, en tout ou en partie. L'image de la carte est simplement rafraîchie, sans que les éléments des couches soient redessinés.

viewStaticElementChanged (ViewStaticElementEvent)

Lancé quand des éléments statiques (flèche du nord, échelle graphique, etc.) sont ajoutés ou enlevés de la vue.

viewPopupMenuShowing(ViewPopupMenuShowingEvent)

Lancé juste avant que le menu contextuel de la vue s'affiche. Permet de modifier le contenu du menu avant que ce dernier soit présenté à l'utilisateur.

viewReadyOccurred(ViewReadyEvent)

Lancé quand la vue devient prête à l'utilisation, c'est-à-dire après qu'elle soit affichée une première fois.

 

Pour plus d'information sur les événements en Java, consultez le tutoriel Java.

La classe ViewState

La classe ViewState contient certaines propriétés d'une vue qui définissent son état à un instant donné (échelle, étendue, transformation, etc.). Plusieurs méthodes dans L'API de JMap prennent en paramètre une instance de ViewState. Il est possible d'obtenir l'état d'une vue en appelant la méthode getViewState() de la classe View.

La classe ViewManager

Le gestionnaire de vues (classe ViewManager) est responsable de gérer une ou plusieurs vues qui sont présentes dans l'application. La classe possède des méthodes qui permettent d'effectuer des opérations sur l'ensemble des vues de l'application et pour connaître en tout temps, quelle vue est la vue active (celle qui a le focus).

Le tableau suivant présente les principales méthodes de la classe ViewManager.

Méthodes les plus utilisées de la classe ViewManager

addViewEventListener(ViewEventListener)

Permet de s'enregistrer pour écouter les événements générés par la vue active.

addViewManagerEventListener(ViewManagerEventListener)

Permet de s'enregistrer pour écouter les événements générés par le gestionnaire de vues (voir plus bas).

getActiveView()

Retourne la vue active, c'est-à-dire la vue qui a le focus.

getLayerManager()

Retourne le gestionnaire de couches de la vue active.

getView(String)

Retourne la vue qui porte le nom spécifié en paramètre.

getViews()

Retourne la liste complète des vues présentes dans le gestionnaire de vues.

refresh()

Effectue un rafraîchissement sur l'ensemble des vues présentes dans le gestionnaire de vues.

removeViewEventListener(ViewEventListener)

Permet de cesser d'écouter les événements générés par la vue active du gestionnaire de vues.

removeViewManagerEventListener(ViewManagerEventListener)

Permet de cesser d'écouter les événements générés par le gestionnaire de vues.

setCurrentTool(Tool)

Remplace l'outil actif de la vue active par l'outil spécifié en paramètre.

 

Les événements de la classe ViewManager

Le gestionnaire de vues génère des événements associés à l'état des vues qui lui sont associées. Pour recevoir ces événements, vous devez implémenter l'interface ViewManagerEventListener et l'enregistrer auprès du gestionnaire de vues en utilisant la méthode addViewManagerEventListener() tel que montré dans l'exemple suivant.

 

  View view = ...
  ViewManager viewManager = view.getLayerManager();
 
  viewManager.addViewManagerEventListener(new ViewManagerEventListener()
  {
    @Override
    public void viewAdded(ViewAddedEvent e)
    {
    }
 
    ...      
  });

 

Notez qu'il existe aussi un adaptateur (ViewManagerAdapter) qui simplifie le développement du listener.

Le tableau suivant présente les événements générés par la classe ViewManager.

Événements du gestionnaire de vues

viewAdded(ViewAddedEvent)

Lancé quand une vue est ajoutée au gestionnaire de vues

viewActivated (ViewActivatedEvent)

Lancé quand une vue a été activée, c'est-à-dire qu'elle a reçu le focus.

viewDeactivated (ViewDeactivatedEvent)

Lancé quand une vue a été désactivée, c'est-à-dire qu'elle a perdu le focus au profit d'une autre vue.

viewRemoved(ViewRemovedEvent)

Lancé quand une vue est enlevée du gestionnaire de vues.

Il est aussi possible d'enregistrer un listener auprès du gestionnaire de vues afin de recevoir les événements générés par l'ensemble des vues associées au gestionnaire de vues. Cela peut être plus pratique que d'enregistrer un listener sur chaque vue séparément. Pour ce faire, utilisez la méthode addViewEventListener de la classe ViewManager.

La classe ViewUtil

La classe ViewUtil offre des méthodes utiles pour exploiter la vue.

Le tableau suivant présente les méthodes de la classe ViewUtil les plus fréquemment utilisées.

Méthodes les plus utilisées de la classe ViewUtil

mailMap(View, JMapSrvConnection, int, MailMessage)

Envoie une image de la carte par courriel aux destinataires définis dans l'objet de type MailMessage passé en paramètre.

makeImage(View, int)

Fabrique et retourne une image de la carte telle qu'affichée dans la vue. La largeur (en pixels) de l'image à fabriquer est passée en paramètre.

saveAs(View)

Enregistre une image de la carte sur le disque dur. Une fenêtre permettant de sélectionner l'emplacement du fichier est présentée à l'utilisateur.