Правильная инициализация и получение предпочтений в подключаемом модуле Eclipse на основе Xtext

Я пишу плагин Eclipse, используя Xtext 2. Я предоставил свои собственные предпочтения, написав свой собственный класс RootPreferencePage :

package org.grammaticalframework.eclipse.ui.editor.preferences;
import org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage;
public class GFLanguageRootPreferencePage extends LanguageRootPreferencePage {
    @Override
    protected void createFieldEditors() {
        addField(new StringFieldEditor("PREF", "&Label:", getFieldEditorParent()));
    }
    @Override
    public void init(IWorkbench workbench) {
        getPreferenceStore().setDefault("PREF", "default-value");
    }
}

и привязать его к модулю пользовательского интерфейса как обычно:

public Class bindLanguageRootPreferencePage() {
    return org.grammaticalframework.eclipse.ui.editor.preferences.GFLanguageRootPreferencePage.class;
}

Это отлично работает; Я могу сохранить настройку, закрыть и снова открыть Eclipse, снова перейти в окно настроек и увидеть сохраненное мной значение. Однако проблема заключается в том, что я пытаюсь получить значения предпочтений программно. Я использую следующий фрагмент кода:

IPreferencesService prefs = Platform.getPreferencesService();
String s = prefs.getString(QUALIFIER, "PREV", "fallback", null);

Это отлично работает, когда я нахожусь в том же экземпляре Eclipse, но после перезапуска Eclipse моя попытка получить предпочтение программно терпит неудачу. Самое смешное, что я знаю, что мои настройки правильно сохранены, проверяя в окне настроек.

Я предполагаю, что это проблема с областью предпочтений , как описано здесь и здесь , но я не могу понять, что я делаю неправильно в моем программном поиске значений предпочтений.

ОБНОВЛЕНИЕ

С тех пор я заметил, что когда я удаляю вызов setDefault (...) из метода init () , все работает полностью правильно. То есть я могу без проблем устанавливать предпочтения через пользовательский интерфейс, перезагружать Eclipse и получать эти значения программно.

Итак, теперь проблема заключается в том, что мне нужно найти правильное место для моего вызова setDefault (...) . Основываясь на этой же статье , я расширил точку расширения следующим образом:


    
    

и с классом реализации:

package org.grammaticalframework.eclipse.ui.editor.preferences; 
public class GFPreferenceInitializer extends AbstractPreferenceInitializer {
    @Override
    public void initializeDefaultPreferences() {
        IPreferenceStore store = GFActivator.getInstance().getPreferenceStore();
        store.setDefault("PREV", "default-value");
    }
}

Этот код выполняется, но по какой-то причине, когда я открываю свои настройки и нажмите «Восстановить значения по умолчанию», поля просто станут пустыми ... значения по умолчанию, которые я пытаюсь установить / инициализировать, похоже, не попадают в окно настроек, поэтому я снова застрял!

6
задан John J. Camilleri 2 November 2011 в 08:46
поделиться