bre*_*ine 5 eclipse eclipse-plugin eclipse-rcp
我想为自定义导航器视图弹出菜单实现自定义属性测试器.不幸的是它实际上从未被调用.这是plugin.xml部分和类.
定义的属性测试器:
<extension
point="org.eclipse.core.expressions.propertyTesters">
<propertyTester
class="com.mytest.MyPropertyTester"
id="com.mytest.myPropertyTester"
namespace="com.mytest.myPropertyTester"
properties="testProperty"
type="com.mytest.MyPropertyTester">
</propertyTester>
Run Code Online (Sandbox Code Playgroud)
定义部分:
<extension
point="org.eclipse.core.expressions.definitions">
<definition
id="org.eclipse.example.testExtension">
<adapt
type="org.eclipse.core.resources.IResource">
<test
property="com.mytest.myPropertyTester.testProperty">
</test>
</adapt>
</definition>
Run Code Online (Sandbox Code Playgroud)
可见部分:
<command
commandId="com.mytest.testcommand"
label="Test Command"
style="push">
<visibleWhen
checkEnabled="false">
<with
variable="activeMenuSelection">
<iterate
ifEmpty="false"
operator="or">
<or>
<reference
definitionId="org.eclipse.example.testExtension">
</reference>
</or>
</iterate>
</with>
</visibleWhen>
</command>
Run Code Online (Sandbox Code Playgroud)
和相应的课程:
package com.mytest;
import org.eclipse.core.expressions.PropertyTester;
public class MyPropertyTester extends PropertyTester {
public MyPropertyTester() {
System.out.println("PROPERTY TESTER CONSTRUCTOR");
}
@Override
public boolean test(Object receiver, String property, Object[] args,
Object expectedValue) {
System.out.println("PROPERTY TESTER CALLED");
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有org.eclipse.core.expressions.definitions部分中使用的"test",一切正常.
似乎甚至连MyPropertyTester类的构造函数都没有被调用.我还没有找到任何关于此的实例.
任何帮助,将不胜感激.
我知道这个问题已经回答了,但是由于不同的原因,我遇到了同样的问题。所以以为我会把它放到这里。
就我而言,在评估表达式org.eclipse.core.expressions时未激活该插件<test>,因此只是跳过了评估。
因此,我不得不使用强制插件激活forcePluginActivation=true,例如:
<test
property="org.eclipse.wst.xml.core.isSelectedElementARunnableSeleniumTestSuite"
value="true"
forcePluginActivation="true">
</test>
Run Code Online (Sandbox Code Playgroud)
引用文档,
- forcePluginActivation-一个标志,指示是否应在必要时加载有助于属性测试器的插件。因此,应谨慎使用此标志,以避免不必要的插件激活。大多数客户端应避免将此标志设置为true。仅当用于评估此表达式的评估上下文允许插件激活时,才使用此标志。否则,该标志将被忽略,并且不会发生插件加载。
我认为这是你定义中的type值(type="com.mytest.MyPropertyTester")propertyTester.
在调用测试程序之前,要测试的对象必须是类型的实例(或适应)(帮助对此非常模糊!).
使用type="org.eclipse.core.runtime.IAdaptable"它将匹配大多数对象或type="org.eclipse.core.resources.IResource"仅匹配资源.
| 归档时间: |
|
| 查看次数: |
3018 次 |
| 最近记录: |