2017-06-27 1 views
0

J'ai des problèmes pour utiliser PlatformUI pour stocker mes préférences. Je voulais créer un PreferencesService pour accéder et modifier les préférences de mon plugin. J'appelle de ma Activator une fonction d'initialisation de mon service mais cela n'a aucun impact. Voici ma fonction:Plate-formeUI.getPreferenceStore() ne stockez rien

public static void initPreferences() throws NullContributionException, CoreException { 
    final IPreferenceStore store = PlatformUI.getPreferenceStore(); 
    for (String languageId : LanguageService.getLanguagesIds()) { 
     store.setDefault(languageId, true); 
     for (CheckerContainer checker : CheckerService.getCheckers(languageId)) { 
      String checkerPreferenceId = getPreferencesId(languageId, checker.getId()); 
      store.setDefault(checkerPreferenceId, true); 
      store.setDefault(checkerPreferenceId + PREF_SEVERITY_ATTRIBUTE, "Error"); 
     } 
    } 
    store.needsSaving(); 
} 

Je l'appeler de mon activateur ainsi:

@Override 
public void start(final BundleContext bundleContext) throws Exception { 
    // Initialize all preferences 
    UserPreferencesService.initPreferences(); 

    Activator.context = bundleContext; 
} 

deux vérification, en utilisant le débogueur et veryfing .metadata fichiers prefs indiquent que les modifications thèses ne sont pas prises en considération par Eclipse.

Est-ce une mauvaise pratique? Je suis en train d'éditer un vieux plugin Eclipse 3.4 qui le faisait de cette façon, mais je ne trouve pas la différence qui fait échouer mon utilisation des préférences.

Merci pour votre lecture, et peut-être pour vos réponses, Valdo

Répondre

2

Oui, cela est une mauvaise pratique. Ce magasin de préférences est réservé au poste de travail.

Vous devriez utiliser le IPreferenceStore spécifique à votre plugin. Si votre activateur s'étend AbstractUIPlugin, vous pouvez appeler la méthode AbstractUIPlugin.getPreferenceStore.

Pour initialiser les valeurs par défaut dans votre magasin de préférences, vous devez utiliser le point d'extension org.eclipse.core.runtime.preferences pour définir une classe initializer où vous définissez les valeurs par défaut.

Remarque: La méthode needsSaving renvoie juste la valeur true ou false pour vous indiquer si le magasin de préférences a été modifié - il ne définit pas cet indicateur ou ne sauvegarde pas.

Notez également que les valeurs par défaut ne sont pas écrites dans le fichier de préférences.

+0

Merci beaucoup! Vous l'avez fait fonctionner !!! J'ai aussi dû ajouter une méthode 'getDefault()' dans mon 'Activator' pour pouvoir atteindre la méthode statique' getPreferenceStore() '. – Waldo