2009-09-12 16 views
6

Często miałem ten problem i nie znalazłem jeszcze rozwiązania: za każdym razem, gdy piszę nową aplikację opartą na RCP Eclipse i dołączam wtyczki z platformy Eclipse, "dziedziczę" składki UI od niektórych z nich te wtyczki.Wyłączanie wkładów wtyczek w aplikacji Eclipse RCP

Większość tych wpisów (wpisy w menu, skróty klawiaturowe, strony właściwości) jest przydatna, ale czasami wolałbym wyłączyć niektóre z nich, ponieważ naprawdę ich nie potrzebuję i mogą one wprowadzić użytkowników w błąd.

Czy ktoś wie o urzędowym lub praktycznym sposobie wyłączania/blokowania wybranych wkładów w aplikacji Eclipse RCP?

+0

Nie sądzę, że removeContributionFactory() służy do wyłączania * całości * wkładu, ale jest raczej mechanizmem "dispose" używanym do wyrejestrowania jednego widoku/dodania menu, a ja chciałem go użyć do jawnego usunięcia składki pochodzące z * innych * wtyczek. – VonC

+0

A więc jest: a/nie * dokładnie * czego szukasz, b/nie jest łatwe, ponieważ musisz wykryć te opinie i je usunąć. Ale to jest to, co do tej pory osiągnąłem. – VonC

+0

ponowne przeczytanie komentarza: nie, nie wyłączasz * wszystkich * wkładów (z * wszystkich * innych wtyczek), ale możesz skończyć wyłączając wszystkie składki z jednej zewnętrznej wtyczki. – VonC

Odpowiedz

3

Jedyną metodą, która zbliża się do zrobienia, że ​​byłoby:

IMenuService::removeContributionFactory()

Paul Webster został nazywając dla IMenuService::addOverride() aby zmienić widoczność menu, zapobiegając żadnego wkładu, ale ten pomysł nie ma został już zintegrowany.

Możesz zobaczyć przykład usunięcia wkładu w tej klasie org.eclipse.ui.tests.menus.MenuBuilder;

public static void removeMenuContribution() { 
    if (!PlatformUI.isWorkbenchRunning()) { 
     return; 
    } 
    IMenuService menuService = (IMenuService) PlatformUI.getWorkbench() 
      .getService(IMenuService.class); 
    if (menuService==null) { 
     return; 
    } 
    menuService.removeContributionFactory(viewMenuAddition); 
    viewMenuAddition = null; 
    menuService.removeContributionFactory(viewToolbarAddition); 
    viewMenuAddition = null; 
} 
+0

Dzięki! Ale czy mam rację - wyłączam w ten sposób składki * all *? Nie ma możliwości wyłączenia poszczególnych wkładów, być może zidentyfikowanych przez ich identyfikatory? –

0

transformacje Equinox mogą być również wykorzystywane do dostarczania transformacje XLST które usuwają niechciane składki UI.

Powiązane problemy