Eclipse 3.1 플러그인 이주 FAQ

  1. IPreferenceStore에 있는 여러 명시적 API
  2. IWorkbenchWindow#getShell()에 있는 여러 명시적 API

IPreferenceStore에 있는 여러 명시적 API

AbstractUIPlugin#getPreferenceStore()에서 제공하는 IPreferenceStore 동작이 변경되지 않아도 제공한 동작을 명시적으로 정의하도록 IPreferenceStore 스펙을 갱신합니다.

PropertyChangeEvents 입력

IPreferenceStore의 특성 변경 이벤트에 있는 기존값과 새 값의 유형은 해당 이벤트를 생성한 setValue 호출에서 일관된 유형으로 서로 동일해야 합니다.

예를 들어 IPreferenceStore#setValue(String name, long value)를 호출한 경우 이 메소드에서 생성된 PropertyChangeEvent의 값은 모두 java.lang.Long 유형입니다.

putValue

#putValue를 호출해도 PropertyChangedEvent는 생성되지 않습니다. 다양한 #setValue 메소드를 호출해야 생성됩니다.

OSGI 환경 설정 및 IPreferenceStore 사이의 관계

AbstractUIPlugin#getPreferenceStore()에서 제공하는 IPreferenceStore는 org.osgi.service.prefs.Preferences를 백엔드로 사용하는 ScopedPreferenceStore 인스턴스입니다. org.osgi.service.prefs.Preferences는 문자열만으로 변경 이벤트를 전달합니다.

ScopedPreferenceStoreIPreferenceStore#setValue(String name, String value) 및 고유한 PropertyChangeEvents 중 하나에서 생성된 OSGI 이벤트를 랩퍼하며 해당 리스너에 해당 이벤트를 전달합니다. IPreferenceStore#setValue의 다른 구현으로 ScopedPreferenceStore는 올바른 유형의 고유한 이벤트를 작성하며 OSGI 환경 설정의 이벤트를 전달하지 않습니다.

ScopedPreferenceStore의 리스너는 OSGI 환경 설정(인스턴스의 환경 설정을 가져오는 동안)을 통해 이벤트를 가져올 수 있으므로 변경 이벤트의 입력된 값 및 문자열 값 모두에서 준비되어야 합니다. OSGI 이벤트 유형은 항상 java.lang.String입니다.

IWorkbenchWindow#getShell()에 있는 여러 명시적 API

항상 Eclipse SDK의 기존 IWorkbenchWindows에서 널(null) org.eclipse.swt.widgets.Shell을 가져올 수 있었습니다. 이제는 이와 같은 상황이 발생하는 조건(쉘을 작성하지 않았거나 IWorkbenchWindow를 닫은 경우)을 명시적으로 정의합니다.