Estoy trabajando en un plugin de Eclipse (o de hecho, un complemento para una aplicación basada en Eclipse) que necesita alguna configuración para ser ingresada por el usuario.Eclipse: Preferencias de OSGI frente a PreferenceStore
De su análisis de la documentación, parece que hay dos API de preferencias - uno en org.eclipse.core.runtime.preferences
, que se extienden/aplicación del OSGI prefererence API, otro, JFace específica, en org.eclipse.jface.preference
. Luego tenemos org.eclipse.ui.preferences
, también.
El API OSGI tiene un árbol de nodos jerárquica - un nodo de preferencia (Preferences
o IEclipsePreferences
) puede tener múltiples subnodos, que a su vez puede contener tanto nombre-valor pares individuales, así como más subnodos. Esto parece ser el correcto para mi caso de uso: tengo un número dinámico de "grupos de preferencias", cada uno con aproximadamente tres propiedades de cadena (nombre, descripción, comando), que se correlacionaría perfectamente con estos nodos.
La API de JFace no tiene dicha jerarquía, solo un plano IPreferenceStore
para cada complemento. Pero proporciona páginas de editor de preferencias, que luego se pueden incluir en el cuadro de diálogo de preferencias habituales (Ventana/Preferencias) implementando IWorkbenchPreferencePage
y using the "org.eclipse.ui.preferencePages" extension point. (Todavía tengo que implementar parte de la página de preferencias, pero esta API proporciona una buena base para esto, al parecer.)
Parece que la API org.eclipse.ui.preferences
de alguna manera une estas API al proporcionar una implementación de IPreferenceStore basada en la IEclipsePreferences, pero todavía no puedo ver cómo usar esto.
Así que aquí mi pregunta: ¿Cómo puedo utilizar el OSGI Preferences
jerárquico en el cuadro de diálogo de preferencias? Solo necesito un nivel, pero necesito que el usuario pueda agregar dinámicamente nuevos nodos (con aproximadamente tres preferencias cada uno). (Sin embargo, estos nodos no tienen que tener nuevas páginas de preferencias.)
Gracias, esto también es lo que he reunido hasta el momento. Estoy trabajando en este enfoque ahora. –