当前位置: 首页 > 面试题库 >

强制重新评估命令启用

尉迟安民
2023-03-14
问题内容

我为eclipse打印命令添加了一个处理程序,如下所示:

  <handler
        class="org.acme.PrintHandler"
        commandId="org.eclipse.ui.file.print">
     <activeWhen>
        <with variable="activePart">
           <test property="org.acme.printable" />
        </with>
     </activeWhen>
  </handler>

哪个真的很好。但是有时,即使活动部分没有更改,命令的启用也会更改。因此,我想强制对该activeWhen零件进行重新评估。我该怎么做呢?

我尝试过这样的事情:

    ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
    Command printCommand = service.getCommand("org.eclipse.ui.file.print");
    EvaluationContext context = new EvaluationContext(null, lastEditor);
    context.addVariable(ISources.ACTIVE_PART_NAME, lastEditor);
    ExecutionEvent event = new ExecutionEvent(printCommand, Collections.EMPTY_MAP, null, context);

    // this does nothing
    printCommand.setEnabled(context);
    // this does nothing as well
    service.refreshElements("org.eclipse.ui.file.print", null);
    // this executes the command 
    // (but at least re-evaluates it's enablement before)
    printCommand.executeWithChecks(event);

问题答案:

我认为该IEvaluationService.requestEvaluation方法可以满足您的要求:

IEvaluationService evalService = (IEvaluationService) PlatformUI.getWorkbench().getService(IEvaluationService.class);

evalService.requestEvaluation("org.acme.printable");

JavaDoc说

请求此服务重新评估包含给定属性名称的属性测试器的所有已注册核心表达式。



 类似资料:
  • 我有一个使用自定义元素的表单。在组件中,我管理输入的状态(有效/无效)。在表单中,我要求用户重新输入密码,我希望如果用户输入两个正确的密码,然后修改第一个,第二个无效(得到一个红色的背景色)。 我还试图通过添加以下属性更显式地传递值:,但也不起作用。 那么,这种方法有什么问题,什么是强制重新评估第二个密码组件的好方法呢?

  • 问题内容: 我正在修改其内部html的指令。到目前为止的代码: 它起作用,除了内部html不按angular求值。我想触发的子树重估。有没有办法做到这一点? 谢谢 :) 问题答案: 你必须像你的内部html一样

  • 我正在尝试使用线性回归解决WEKA中数字属性的数字分类问题,然后我想在现有数据集上测试我的模型,并在当前测试数据集上重新评估模型。 作为评估的结果,我得到了总结: 相关系数0.9924平均绝对误差1.1017均方根误差1.2445实例总数17 但我没有这里显示的结果:http://weka.wikispaces.com/Making预言 如何让WEKA达到我需要的结果? 非常感谢。 要回答我的问题

  • 有时(例如用于测试和bechmark)我想强制执行在DataFrame上定义的转换。AFAIK调用像这样的操作并不能确保所有都被实际计算,可能只计算所有的子集(参见下面的示例) 我的解决方案是使用df将数据帧写入HDFS。写saveAsTable,但这会将我的系统与我不想再保留的表“混在一起”。 那么,触发数据帧评估的最佳方式是什么呢? 编辑: 请注意,最近还讨论了火花开发者列表:http://a

  • 问题内容: 两年前的代码必须升级到E4,现在很多东西不再起作用。其中之一是如果这样使用: 如何(重新)触发对a的求值?由于E4确实还没有准备好投入生产,因此我需要E3(兼容层)的解决方法。 相关问题但是此用户正在E4中搜索等效项,而我需要在E3中可用的等效项。 有趣的是,如果我将其替换为标签,它将起作用。在这种情况下,并工作了。 问题答案: EvaluationService在E3兼容性层中与AP

  • 假设我有几个指令:“戏剧”、“喜剧”,出于某种原因,它们有很多不同的属性,所以有一个“电影”指令并不一定有意义。有没有一种方法可以根据范围变量动态评估指令?大致如下: 它的评估结果如下: 我是Angular的新手,所以请原谅疯狂的想法。 更新:实际上我刚刚发现了一篇关于完全相同的问题/解决方案的文章:http://onehungrymind.com/angularjs-dynamic-templa