Programy obsługi sił Eclipse używające aktywnegoPo ponownej ocenie

Spojrzałem na to pytanieEclipse zmusza handlarzy do ponownej oceny i odpowiedź, którą podał Paul Webster. Dlaczego to nie działa przy użyciuactivePodczas element w treserze? Będzie działać tylko wtedy, gdy zmienię następujący plug-in.xml, aby użyćwłączony, gdy element. Moje konkretne polecenie nie powinno już być włączone po uruchomieniu polecenia.

<handler
    commandId="org.eclipse.jpt.jpa.ui.xmlFileUpgradeToLatestVersion"
    class="org.eclipse.jpt.jpa.ui.internal.commands.UpgradeXmlFileVersionHandler">
        <activeWhen>
            <iterate ifEmpty="false">
                <or>
                    <adapt type="org.eclipse.jpt.jpa.core.context.XmlFile">
                        <test property="org.eclipse.jpt.jpa.core.isNotLatestSupportedVersion"/>
                    </adapt>
                    <adapt type="org.eclipse.jpt.common.core.resource.xml.JptXmlResource">
                       <test property="org.eclipse.jpt.jpa.core.isNotLatestSupportedVersion"/>
                    </adapt>
                </or>
            </iterate>
        </activeWhen>
</handler>

Pod koniec mojej procedury obsługi dzwonię:

IEvaluationService service = (IEvaluationService) activeWorkbenchWindow.getService(IEvaluationService.class);
service.requestEvaluation("org.eclipse.jpt.jpa.core.isNotLatestSupportedVersion");

Aktualizacja: Zrobiłem więcej badań i widzę regresję w 4.2.1 w porównaniu z 3.8.1. Nawet raz przełączę się na używaniewłączony, gdy i użyj wywołania requestEvaluation, nadal widzę polecenie w szybkim dostępie. Używam polecenia przez szybki dostęp, a następnie natychmiast używam szybkiego dostępu i widzę, że polecenie nadal tam jest i otrzymuję NotEnabledException, jeśli go kliknę. Działa to poprawnie z 3.8.1.

To konkretne polecenie nie otwiera okna dialogowego, ale dodałem okno dialogowe potwierdzenia, a teraz moje polecenie zostanie usunięte z szybkiego dostępu! I to nawet bez użycia IValuationService.requestEvaluation. Czy zmiana fokusu powoduje, że program obsługi zostanie ponownie oceniony?

questionAnswers(0)

yourAnswerToTheQuestion