2010-04-22 10 views
5

Mam dwie wtyczki, na przykład com.site.plugin.core i com.site.plugin.ui.
Chciałbym oddzielić część rdzeni od części UI, więc na stronie plugin com.site.plugin.ui utworzyłem stronę Preferencje, w której zdefiniowałem niektóre preferencje, które powinny być używane przez com.site.plugin.core. Sprawdzam artykuł pod numerem Eclipse site, ale jest on dość nieaktualny, a powiązany błąd również nie dostarcza wielu informacji.
Czy można to zrobić za pomocą standardowego mechanizmu Eclipse, czy też potrzebuję bezpośredniego interfejsu API niskiego poziomu za pośrednictwem pakietu org.eclipse.core.runtime.preferences?W jaki sposób wtyczka Zaćmienie może korzystać z tych samych ustawień preferencji?

Odpowiedz

5

Wierzę, że interfejs użytkownika zależy od Rdzenia, a nie w inny sposób. W tym przypadku można użyć preferencji sklep rdzenia w stronie preferencji UI pluginu, tak:

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

W ten sposób strona preferencji będzie przechowywać wartości w wtyczce podstawowej. Wtyczka Core może korzystać z wartości bez zależności od wtyczki UI.

1

W każdym dodatku znajdują się sklepy z preferencjami. Jest to jeden ze sposobów uzyskania magazynu prefs dla wtyczki, której klasą aktywatora jest ActivatorA.

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

Jeśli chcesz inny plugin do odnoszą się do tego samego sklepu, być może można odsłonić trochę api na ActivatorA na to, aby się tam dostać, na przykład

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

Drugi plugin będzie znaleźć wspólny sklep wykonując tę ​​

IPreferenceStore sharedPrefs = ActivatorA.getSharedPrefs(); 

powodzenia.

+0

Hmmm ... Ale w tym przypadku mój rdzeń plugin powinien wiedzieć o części UI. To nie jest dobre. –

+0

OK. Ogólnie rzecz ujmując, jaki byłby akceptowalny sposób, aby rdzeniowa wtyczka zlokalizowała udostępnione dane, jeśli nie za pomocą wtyczki, która je tworzy. Co powiesz na: ścieżkę do pliku ?, Ustawienia dialogowe? adres URL? – bwinspur

2

Można również uzyskać dostęp do preferencji w innych wtyczek w serwisie: biseksualny

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

Należy zauważyć, że dla mnie "org.myplugin.preferences.page" nie działa, musiałem użyć "org.myplugin.id". –

+0

Dla mnie był to również identyfikator, dzięki za podpowiedź. W ten sposób jest to idealne rozwiązanie dla mnie :) – Matthias

Powiązane problemy