Manipuladores de força do Eclipse usando activeWhen para reavaliar

Eu olhei para esta questãoManipuladores de força Eclipse para reavaliar e a resposta que Paul Webster forneceu. Por que isso não funciona usando oativoQuando elemento no manipulador? Só funcionará se eu alterar o plug-in.xml a seguir para usar oenabledWhen elemento. Meu comando específico não deve mais ser ativado depois que o comando for executado.

<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>

No final da minha execução do manipulador eu chamo:

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

Atualizar: Eu fiz mais algumas investigações e vejo uma regressão em 4.2.1 em comparação com 3.8.1. Mesmo quando eu mudo para usarenabledWhen e usar a chamada para requestEvaluation, ainda estou vendo o comando no acesso rápido. Eu uso o comando via acesso rápido, em seguida, imediatamente uso o acesso rápido novamente e vejo o comando ainda lá e recebo um NotEnabledException se eu clicar nele. Isso funciona bem com o 3.8.1.

Este comando em particular não abre um diálogo, mas eu adicionei um diálogo de confirmação e agora meu comando é removido do acesso rápido! E isso sem usar o IValuationService.requestEvaluation. A mudança de foco faz com que o manipulador seja reavaliado?

questionAnswers(0)

yourAnswerToTheQuestion