2011-05-21 10 views
6

Utworzony element menu w menu "Plik" jako polecenie. Dla tego polecenia istnieje program obsługujący interfejs IHandler. Ten przewodnik zawiera metodę isEnabled. Próbuję użyć tej metody, aby włączyć/wyłączyć mój element menu, ale ta metoda jest wywoływana tylko raz, gdy klikam menu "Plik". Po kliknięciu na drugi, trzeci itd., Metoda isEnabled nie jest wywoływana ponownie, nawet jeśli wcześniej zmieniłem stan strony (edytuj otwieranie/zamykanie).Zaktualizuj element menu Eclipse włączony

Co należy zrobić? Może ta metoda nie jest przeznaczona do kontrolowania pozycji menu?

Odpowiedz

3

Czy jesteś podklasy org.eclipse.core.commands.AbstractHandler? Powinieneś użyć setBaseEnabled(boolean), aby zaktualizować stan swojego handlera (który zaktualizuje twoje polecenie).

Umożliwia zmianę stanu włączonego w programie obsługi tak długo, jak zwolnisz także HandlerEvent. Zwykle łatwiej jest zadzwonić pod numer setBaseEnabled(boolean), który uruchomi wydarzenie.

2

Jeśli próbujesz włączyć/wyłączyć menu, powinieneś użyć wyrażeń podstawowych. Ja już wyjaśniono, jak to zrobić w tej odpowiedzi:

Eclipse RCP menus & actions: Configure or code?

część, że jesteś zainteresowany rozpoczęciem z:

Do aktywacji/dezaktywacji menu [... ]

Mam nadzieję, że tego właśnie szukasz.

+0

Co zrobić, jeśli mam uchwyt do MenuManager, jak mogę programowo włączyć/wyłączyć element menu? – Neel

+1

@Neel (w powyższym przykładzie) powinieneś zadzwonić do CommandState.setNotLoaded(), która zmieni wartość zmiennej "myapp.commands.sourceprovider.active" na NOT_LOADED, która z kolei zostanie wykryta przez warunek w module obsługi . Warunek w procedurze stwierdza, że ​​jeśli "myapp.commands.sourceprovider.active" nie jest równe PLAYING lub PAUSED, przycisk powinien być nieaktywny (tak wyłączony). W skrócie, użyj klasy provider (tutaj, CommandState), aby zmienić wartość zmiennej, która wyzwala procedurę obsługi. –

Powiązane problemy