Я работаю над плагином Eclipse (или фактически надстройкой для приложения на основе Eclipse), который требует определенной конфигурации для ввода пользователем.
Из документации видно, что есть два API предпочтения - один в org.eclipse.core.runtime.preferences
, расширяющий / реализующий API предпочтений OSGI , другой, специфичный для JFace, в org.eclipse.jface.preference
. Тогда у нас тоже org.eclipse.ui.preferences
.
OSGI API имеет иерархическое дерево узлов - узел предпочтений (Preferences
или IEclipsePreferences
) может иметь несколько подузлов, которые сами могут содержать как отдельные пары имя-значение, так и больше подузлов. Похоже, что это правильно для моего варианта использования - у меня есть динамическое число «групп предпочтений», каждое из которых имеет около трех строковых свойств (имя, описание, команда), которые будут приятно отображаться на эти узлы.
В JFace API такой иерархии нет, только плоский IPreferenceStore
для каждого плагина. Но он предоставляет страницы редактора предпочтений, которые затем могут быть включены в обычный диалог предпочтений (Window / Preferences) путем реализации IWorkbenchPreferencePage
и с использованием точки расширения org.eclipse.ui.preferencePages . (Мне все еще нужно реализовать часть страницы настроек самостоятельно, но, похоже, этот API обеспечивает хорошую базу для этого.)
Кажется, что API org.eclipse.ui.preferences
каким-то образом связывает оба этих API, предоставляя реализацию IPreferenceStore на основе IEclipsePreferences, но я все еще не вижу, как это использовать.
Итак, вот мой вопрос: Как я могу использовать иерархический OSGI Preferences
в диалоге настроек? Мне нужен только один уровень, но мне нужен пользователь, чтобы иметь возможность динамически добавлять новые узлы ( примерно с тремя предпочтениями каждый). (Тем не менее, эти узлы не обязательно должны иметь новые страницы предпочтений.)