如何在打开编辑器时检查selection
变量值是否为null
?
我想在打开某个编辑器时激活上下文菜单命令,它不是脏的,并且用户没有选择任何内容。前两个编纂工作正常:
<and>
<with
variable="activePartId">
<equals
value="com.eclipse.someeditor">
</equals>
</with>
<with
variable="activePart">
<not>
<test
property="com.eclipse.isEditorDirty">
</test>
</not>
</with>
<and>
我目前的问题是,直接的解决方案是包含另一个条件:
<with variable="selection">
<count value="0" />
</with>
不幸的是,首次打开编辑器时,计数不是0.它可能是null
。如果用户选择了某个内容然后取消选择,则它变为0.任何想法如何检查选择的值是null
还是类似?
更新
我还尝试创建一个属性测试器,检查选择的值是否为null,但代码未执行。我认为它会发生,因为如果用户没有选择/取消选择,它甚至不会进入选择范围。
<with variable="selection">
<test
property="com.eclipse.isSelectionNullOrEmpty">
</test>
</with>
答案 0 :(得分:0)
尝试使用'instanceof'和'and'。像:
<and>
<instanceof value="fully_qualified_class_name_of_your_selection_class"/>
<equals value="0" />
</and>
希望这有帮助。
答案 1 :(得分:0)
以下解决方案有效:
我使Editor
a SelectionProvider
能够委托给另一个SelectionProvider
以便能够在它们之间切换(例如,当我有一个提供选择的内部表时,采取行动。
然后我设置getSelection()
以在没有委托时返回空StructuredSelection
(与返回null
相反)。由于这一点,总是返回StructuredSelection
,但有时它是空的。
public ISelection getSelection() {
return delegate == null ? new StructuredSelection() : delegate.getSelection();
}
之后我可以添加我之前提到的简单条件:
<with variable="selection">
<count value="0" />
</with>
有些人可能觉得这很有用。