gpt4 book ai didi

java - Eclipse RCP PropertyTester 永远不会通过菜单可见调用

转载 作者:行者123 更新时间:2023-12-04 01:55:22 26 4
gpt4 key购买 nike

我想为我的自定义导航器 View 弹出菜单实现一个自定义属性测试器。不幸的是,它从未真正被调用过。这是plugin.xml部分和类(class)。

定义的属性测试器:

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

定义部分:
<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>

可见时间部分:
<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>

以及相应的类:
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;
}

}

如果没有 org.eclipse.core.expressions.definitions 部分中使用的“测试”,一切正常。

似乎连 MyPropertyTester 的构造函数都没有类被调用。我还没有真正找到任何关于此的工作示例。

任何帮助,将不胜感激。

最佳答案

我知道这个问题已经有人回答了,但由于不同的原因我遇到了同样的问题;所以只是想我会把它放在这里。

就我而言,org.eclipse.core.expressions在我的 <test> 处未激活插件表达式被评估,所以它只是跳过评估。

所以我不得不使用 forcePluginActivation=true 强制激活插件, 喜欢:

<test 
property="org.eclipse.wst.xml.core.isSelectedElementARunnableSeleniumTestSuite"
value="true"
forcePluginActivation="true">
</test>

引用 documentation ,

  • forcePluginActivation - a flag indicating whether the plug-in contributing the property tester should be loaded if necessary. As such, this flag should be used judiciously, in order to avoid unnecessary plug-in activations. Most clients should avoid setting this flag to true. This flag is only honored if the evaluation context used to evaluate this expression allows plug-in activation. Otherwise the flag is ignored and no plug-in loading takes place.

关于java - Eclipse RCP PropertyTester 永远不会通过菜单可见调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21310743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com