Intégration dans l'interface graphique
Certaines extensions client peuvent être complètement invisibles pour l'utilisateur mais la majorité des extensions s'intègrent à l'interface graphique de l'application JMap Pro. Cette intégration peut prendre plusieurs formes. C'est dans la méthode initGui() que l'extension doit faire l'initialisation de son interface graphique.
La classe JMapGuiService
La classe JMapGuiService est utilisée pour accéder aux composantes de l'interface graphique (menus, barres d'outils, etc.) et pour ajouter ou enlever des composantes. Pour faciliter l'accès aux composantes graphiques, chaque composante possède une clé unique. Cette clé doit être fournie lorsque'une composante est ajoutée ou enlevée. Pour la liste complète des clés disponibles, consultez la section Liste des composantes d'interface graphique. La classe JMapGuiFactory décrite plus bas fournit des méthodes pour créer des composantes de l'interface graphique.
Les principales méthodes de la classe JMapGuiService sont:
Méthodes les plus utiles de la classe JMapGuiService |
|
Permet d'ajouter un item à un menu existant de l'application en spécifiant la clé du menu. |
|
Permet d'obtenir un menu en utilisant sa clé. Il est ensuite possible d'utiliser l'objet retourné pour modifier le menu. |
|
Permet d'ajouter une barre d'outils à une position spécifique dans l'interface de l'application. |
|
Permet d'obtenir une barre d'outils en utilisant sa clé. Il est ensuite possible d'utiliser l'objet retourné pour modifier la barre d'outils. |
|
Permet d'ajouter une fenêtre dockable à une position spécifique dans l'interface de l'application. |
|
Permet d'enlever une fenêtre dockable en utilisant sa clé. |
|
Retourne l'instance de JMapGuiFactory. Cette classe permet de créer des composantes d'interface graphique telles que des boutons et des barres d'outils. |
La classe JMapGuiFactory
La classe JMapGuiFactory est utilisée pour créer les boutons, menus et barres d'outils compatibles avec les applications JMap. Les méthodes createButton(), createMenu(), createToolBar(), etc. sont appelées pour créer les différentes composantes correspondantes.
Exemples d'intégration
Ajout d'un bouton sur une barre d'outils existante
L'exemple de code suivant montre comment ajouter un bouton sur une barre d'outils existante. La barre d'outils est retrouvée par sa clé. Pour la liste complète des clés disponibles, consultez la section Liste des composantes d'interface graphique de JMap Pro. Notez que l'action associée au bouton n'est pas montrée dans l'exemple.
|
Ajout d'une barre d'outils
L'exemple de code suivant montre comment créer une barre d'outils à l'aide de la classe JMapGuiFactory. Notez que dans cet exemple la classe JMapApplicationActionManager est utilisée pour accéder au actions des boutons. Cette classe permet de gérer des instances uniques des actions. Ensuite, 2 boutons sont crées et ajoutés à la barre. Finalement, la barre d'outils est ajoutée à la verticale, du côté droit de l'application. Remarquez le HashMap de propriétés qui est utilisé pour placer la barre d'outils. Ce principe est utilisé avec tous les composantes pour préciser leurs caractéristiques.
|
Ajout d'une fenêtre
La méthode addDockableComponent() permet d'ajouter des composantes de type fenêtre dans l'interface. Elle prend en paramètre un HashMap de paires clé-valeur pour définir les paramètres d'affichage de la nouvelle fenêtre. L'ensemble des clés et valeurs possibles est défini dans la documentation de la méthode.
|
Ajout d'un menu
L'exemple de code suivant montre comment créer et ajouter un menu à l'interface.
|
Ajout d'un item de menu à un menu existant
L'exemple de code suivant montre comment ajouter des items aux menus existants de l'application. Remarquez qu'une clé est utilisée pour retrouver les menus existants. Pour la liste complète des clés disponibles, consultez la section Liste des composantes d'interface graphique.
|
Ajout d'un item au menu contextuel de la carte
L'exemple de code suivant montre comment ajouter une section d'items au menu contextuel de la carte. Ce dernier s'affiche quand l'utilisateur clique avec le bouton de droite sur la carte. De plus, l'item de menu n'est actif que si l'utilisateur a cliqué sur au moins un éléments d'une couche de la carte. Dans le cas contraire, l'item de menu sera désactivé.
|
Ajout d'une section à la fenêtre de paramètres des couches
Il est possible d'ajouter des sections supplémentaires dans la fenêtre des paramètres d'une couche, tel que montré dans l'image ci-dessous. Pour ce faire, vous devez implémenter votre propre classe dérivée de la classe abstraite AbstractLayerSettingsCustomPage et implémenter ses 3 méthodes abstraites. Vous devez fournir un titre et une icône pour votre section en les passant au constructeur de la super classe. Ceux-ci seront affichés dans la fenêtre des paramètres.
Section supplémentaire ajoutée pour une couche
Méthodes abstraites de la classe AbstractLayerSettingsCustomPage |
|
Dans cette méthode, vous devez fabriquer et retourner l'instance de JPanel qui affiche l'interface graphique des paramètres de votre section. C'est cette interface graphique qui s'affichera. |
|
Cette méthode est appelée lorsque l'utilisateur appuie sur OK pour confirmer les changements et fermer la fenêtre. Votre méthode doit retourner vrai seulement si les paramètres entrés sont valides. Dans le cas contraire, la fenêtre refusera de se fermer. |
|
Cette méthode est appelée lorsque l'utilisateur appuie sur OK pour confirmer les changements et fermer la fenêtre, et après l'appel de la méthode validateSetting(). Vous devez appliquer les changements de paramètres sur la couche. |
La méthode getLayer() de la classe AbstractLayerSettingsCustomPage vous permet de connaître à quelle couche les paramètres s'appliquent. Pour enregistrer votre section de paramètres, vous devez utiliser la méthode addLayerSettingsCustomPage de la classe ShowLayerSettingsAction tel que montré dans l'exemple de code source suivant.
// Obtain a reference to the ShowLayerSettingsAction instance ShowLayerSettingsAction showLayerSettingsAction = (ShowLayerSettingsAction)appContext.getApplicationActionManager() .getAction(ShowLayerSettingsAction.class);
// Add the custom panel for the Cities layer showLayerSettingsAction.addLayerSettingsCustomPage(SDKLayerSettingsPanel.class.getName(), layerCities.getId());
|
Ajout d'un bouton personnalisé sur le gestionnaire de couches
Vous pouvez ajouter des boutons associés à une couche dans le gestionnaire de couches. Ces boutons peuvent servir à déclencher des actions personnalisées spécifiques à une couche. Les boutons s'ajoutent de manières différentes dans la section hiérarchique et dans la section liste.
Exemple de bouton personalisé ajouté à une couche
L'exemple de code source suivant montre comment ajouter un bouton pour la couche Cities.
// Obtain layer instance from layer manager Layer layerCities = appContext.getViewManager().getLayerManager().getLayer("Cities");
JMapGuiService guiService = appContext.getApplication().getGuiService(); JMapGuiFactory guiFactory = guiService.getGuiFactory();
AbstractButton abstractButton = guiFactory.createButton(new ButtonAction());
// Add the button to the 'More options' of the LayerTreeBar (hierarchy) for the layer Cities guiService.getLayerTreeBar().addCustomButton(abstractButton, layerCities.getId());
// Add the button to the LayerPanel of the LayerBar (list) for the layer Cities LayerPanel layerPanel = guiService.getLayerBar().getLayerPanel(layerCities.getId()); Button button = new Button(new ButtonAction(), false, new Dimension(18, 18)); layerPanel.addCustomButton(button);
|