在我正在编写的 Eclipse 插件中,我希望能够根据编辑器中当前选定行的内容使弹出菜单贡献可见或不可见。
为了配合这个,我使用了一个属性测试器。属性测试器执行的测试可能会有点耗时(约 200 毫秒),这在等待弹出菜单显示时是可以的。
但是我注意到,属性测试器不仅在即将显示弹出窗口时被调用,而且在我在编辑器中标记文本时也会调用它,从而使文本选择变得非常缓慢和烦人。
所以问题是:为什么在我选择/标记文本时调用它,而不仅仅是在即将显示弹出窗口时调用,我该如何避免这种情况?
这就是我设置属性测试器和菜单的方式:
<extension
point="org.eclipse.core.expressions.propertyTesters">
<propertyTester
class="popupmenucontribtest.PropertyTester"
id="PopupMenuContribTest.test1"
namespace="PopupMenuContribTest.propertyTester"
properties="propertyTester1"
type="java.lang.Object">
</propertyTester>
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="popup:org.eclipse.ui.popup.any?after=additions">
<command
commandId="PopupMenuContribTest.command"
label="My Popup Option"
style="push">
<visibleWhen
checkEnabled="false">
<and>
<test
forcePluginActivation="true"
property="PopupMenuContribTest.propertyTester.propertyTester1">
</test>
</and>
</visibleWhen>
</command>
</menuContribution>
谢谢!