PropertyTester在对话框中不起作用

时间:2016-02-29 11:58:35

标签: java eclipse-plugin

我有最简单的PropertyTester

public class MyPropertyTester extends PropertyTester {

public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
    System.out.println("Hello World!");
    return false;
}
}
<extension point="org.eclipse.core.expressions.propertyTesters">
    <propertyTester
       class="org.acme.project.MyPropertyTester"
       id="org.acme.project.myPropertyTester"
       namespace="org.acme.project"
       properties="property"
       type="java.lang.Object" />
</extension>

我添加到这样的处理程序中:

 <handler class="org.acme.project.MyHandler" commandId="org.acme.project.myCommand">
    <activeWhen>
       <test property="org.acme.project.property" value="true" />
    </activeWhen>
 </handler>

当在主应用程序内部单击时(即更改聚焦的工作台部件时),此处理程序会被调用。但是,一旦我打开向导或对话框,它就不再被调用了。实际上,它甚至不会被新窗口调用一次。

为什么呢?如何编写在所有应用程序窗口上都可靠的PropertyTester

1 个答案:

答案 0 :(得分:0)

选择框架使用属性测试程序来确定您的处理程序是否必须处于活动状态,是否必须出现菜单等等。

当必须像上下文菜单,工具栏,视图菜单等那样评估某种全局可访问菜单时调用它:每当选择不同的东西时,Eclipse将评估新状态并禁用/启用/删除所有可见菜单中的条目。

您在向导或对话框中选择的内容通常不会传播到选择框架(但如果您愿意,可以使用它们)。

从您的帖子中不清楚您要实现的目标,但请记住,属性测试人员使用您和其他人在plugin.xml中定义的元素,并且可能出现在任何可用的菜单中蚀。