Eclipse 4

Gérer les pages de préférences avec Eclipse 4

Les pages de préférences dans Eclipse 4

Si vous avez fait des pages de préférence avec Eclipse 3, vous avez du utiliser le point d’extension org.eclipse.ui.preferencePages qui permet de déclarer hiérarchiquement les pages et de les voir s’afficher dans le dialogue de préférence.

En Eclipse 4 pur, ce point d’extension n’est plus disponible car il fait partie de org.eclipse.ui. et l’implémentation de IPreferenceStore que l’on utilise est également indisponible (la classe ScopedPreferenceStore est dans le package org.eclipse.ui.preferences qui dépend de org.eclipse.ui).

Il faut aussi savoir que le dialogue de préférences est fourni par JFace (PreferenceDialog) et qu’il a besoin d’une instance de PreferenceManager pour s’initialiser.

J’ai donc  développé un plugin pour résoudre tout ça, puisqu’il n’y a pas d’implémentation dans la plate forme.

Le plugin est disponible sur github à cet endroit et sur repository P2 d’OPCoach

Il vous fournit les fonctionnalités suivantes :

Cette solution vous permet d’écrire vos pages de préférences simplement sans faire dépendre votre plugin de org.eclipse.ui.  L’injection dans les champs de vos pages est également appliquée (si vous en avez besoin).

Pour récupérer vos valeurs de préférence, vous pouvez toujours les injecter avec l’annotation @Preference.

Pour intégrer ce plugin dans votre développement, il faut :

  • ajouter la feature e4 preferences dans votre Target Platform (voir le lien sur GitHub) ou le fichier de Target Platform (en fin de ce fichier)
  • ajouter une dépendance de votre plugin sur com.opcoach.e4.preferences
  • étendre le point d’extension com.opcoach.e4.preferences.e4PreferencePages pour ajouter vos pages
  • Si vous êtes en mode Eclipse 4 pur, ajouter, dans le plugin contenant votre modele d’application, la dépendance sur le plugin com.opcoach.e4.preferences.mainmenu qui se chargera d’ajouter la commande pour ouvrir le dialogue de préférences.
  • Si vous êtes en mode mixte (couche de compatibilité) il n’y a rien à faire, vos pages E4 et E3 seront affichées ensemble
  • éventuellement écrire une extension de com.opcoach.e4.preferences.e4PreferenceStoreProvider extension pour surcharger la gestion par défaut du PreferenceStore

Le projet d’example sur github montre comment l’utiliser. 

N’hésitez pas à commenter ce post si vous avez des remarques.

Commentaires Utilisateurs


  1. Psyko
    28 juillet 2015

    Merci pour le lien du bug.
    Après un peu de recherche, l’annoation @Preference est liée à l’InstanceScope. J’utilise le ConfigurationScope… Il va falloir faire la gymnastique entre les deux.


  2. OPCoach
    28 juillet 2015

    Bonjour,
    Oui l’annotation @Preference fonctionne toujours normalement avec ce plugin.
    En ce qui concerne la prise en compte dans Eclipse 4 il y a des travaux de prévus pour la prochaine version concernant la gestion des dialogues et des wizards qui devraient être gérés hiérarchiquement dans l’application model. Ces travaux sont principalement décrits dans le bug 460826.
    Olivier


  3. Psyko
    28 juillet 2015

    Bonjour,

    Merci pour cette astuce. A priori, toujours rien du coté de e4 pour un support officiel… Avec votre solution, l’injection via le @Preference fonctionne-t-elle aussi lors de la mise à jour d’une des préférences ?
    Je n’arrive pas à le reproduire de mon côté.
    Merci,


  4. OPCoach
    17 avril 2014

    Ce plugin est à ses débuts. Ce serait bien, sur le github, d’ajouter une issue sur le projet pour qu’on en discute.On peut tout à fait faire évoluer ce point en envisageant une API de PreferenceStoreProvider, par exemple, dans l’extension pour éventuellement en définir un autre… Je suis ouvert à toute évolution dans ce sens.


  5. SwEB
    17 avril 2014

    Je noterai un petit bémol dans ce plugin après une utilisation un peu détournée de l’exemple où les préférences ne sont pas définies dans le plugin qui affiche la page de préférence.
    Impossible de définir dans la page de préférence un autre PreferenceScope puisque celui-ci est écrasé par l’E4PreferenceRegistry (forcé au scope du plugin qui définit la page de préférence)


  6. OPCoach
    11 avril 2014

    Merci pour ces encouragements.
    Pour information, la gestion des dialogues dans l’application model semble partir dans tous les sens, et je pense que je vais tenter de proposer, la semaine prochaine, l’intégration de ce plugin dans la plateforme.


  7. Sweb
    11 avril 2014

    Voilà un post (en français qui plus est) de très bonne facture ! Un vrai plaisir de trouver des moyens de commencer une application Eclipse4 tout en gardant la puissance de certaines features Eclipse3 mais avec le minimum d’interconnexion !
    Merci pour cet excellent travail !

Laisser un commentaire