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?