2010-04-22 11 views
5

Tengo dos complementos, por ejemplo, com.site.plugin.core y com.site.plugin.ui.
Me gustaría separar la parte del núcleo de la parte UI, por lo que en el complemento com.site.plugin.ui creé la página de Preferencias donde definí algunas preferencias, que deberían ser utilizadas por com.site.plugin.core. Reviso el artículo en Eclipse site, pero está bastante desactualizado, y el error vinculado tampoco proporciona mucha información.
Entonces, ¿es posible hacer esto usando el mecanismo estándar de Eclipse, o necesito usar API directa de bajo nivel a través del paquete org.eclipse.core.runtime.preferences?¿Cómo puede el complemento de dos eclipses usar el mismo almacén de preferencias?

Respuesta

5

Creo que la interfaz de usuario depende de Core y no de otra manera. En este caso, se puede utilizar tienda de preferencia del núcleo en la página de preferencias del plugin de interfaz de usuario, así:

IPreferenceStore store = CorePluginActivator.getDefault().getPreferenceStore(); 
setPreferenceStore(store); 

De esta manera, la página de preferencias almacenará los valores en el complemento del núcleo. El complemento Core puede usar los valores sin depender del complemento UI.

1

Las tiendas de Prefs se encuentran por complemento. Esta es una forma de obtener un almacén de preferencias para , el complemento cuya clase de activador es ActivadorA.

IPreferenceStore store = ActivatorA.getDefault().getPreferenceStore(); 

Si desea otro plugin para referirse a la misma tienda, tal vez usted podría exponer algunas API en ActivatorA para que pueda llegar, por ejemplo,

public IPreferenceStore getSharedPrefs() { 
    return ActivatorA.getDefault().getPreferenceStore(); 
} 

El segundo complemento sería encontrar la tienda compartida al hacer esto

IPreferenceStore sharedPrefs = ActivatorA.getSharedPrefs(); 

Buena suerte.

+0

Hmmm ... Pero en este caso mi núcleo extensión debería saber sobre la parte de interfaz de usuario. No es bueno. –

+0

OK. En términos generales, ¿cuál sería una forma aceptable para que el complemento central ubique los datos compartidos, sino a través del complemento que lo crea? ¿Qué tal: una ruta de archivo ?, ¿Configuración de diálogo? una URL? – bwinspur

2

También se puede acceder a las preferencias de otros plug-ins utilizando el servicio de preferencia:

String pref = Platform.getPreferencesService().getString(
    "org.myplugin.preferences.page", "pref name", 
    "default value if pref not found", null); 
+0

Tenga en cuenta que para mí el 'org.myplugin.preferences.page' no funcionó, tuve que usar 'org.myplugin.id'. –

+0

Para mí también fue la identificación, gracias por la pista. Así, esta es la solución perfecta para mí :) – Matthias

Cuestiones relacionadas