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