Programming/Eclipse RCP

Preference 에서 값 읽어오기, ConfigurationScope, DefaultScope 등 NULL 값, 값 변경 불가 이슈 해결

Lawmin 2012. 5. 14. 18:37

1. IEclipsePreferences pref = new DefaultScope().getNode(Application.PLUGIN_ID);

String fontString = pref.get(preferenceName, null);

기본값만 읽어오는 코드 (org.eclipse.core.runtime.preferences 확장점의 PreferenceInitializer.initializeDefaultPreferences 에서 초기화한 것)

-> 변경 사항 저장이 안된다!


2. IEclipsePreferences pref = new ConfigurationScope().getNode(Application.PLUGIN_ID);

String fontString = pref.get(preferenceName, null);

설정값을 저장/읽기가능한 Scope

-> PreferencePage를 한번 띄우기 전엔 값이 NULL 이다.


위 두가지 문제가 있어 아래와 같이 해결하였다.


3. IPreferencesService service = Platform.getPreferencesService();

String fontString = service.getString(Application.PLUGIN_ID, preferenceName, Config.DEFAULT_GRID_FONT, null);

바뀐 값도 잘 읽어오고, 저장도 잘 된다.

(2번의 경우 원래 안되는 것은 아니고 lifecycle이나 구조에 대한 이해의 부족일 듯...)