0

打开编辑器时如何检查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或相似?

更新

我还尝试创建一个属性测试器来检查选择的值是否为空,但代码未执行。我认为它会发生,因为如果用户没有选择/取消选择任何内容,它甚至不会进入选择范围。

<with variable="selection">
    <test
        property="com.eclipse.isSelectionNullOrEmpty">
    </test>
</with>
4

2 回答 2

0

尝试使用“instanceof”和“and”。喜欢:

<and>
 <instanceof value="fully_qualified_class_name_of_your_selection_class"/>
 <equals value="0" />
</and>

希望这可以帮助。

于 2013-07-11T10:00:59.097 回答
0

以下解决方案有效:

我制作了Editor一个SelectionProvider能够委托给另一个SelectionProvider能够在它们之间切换的 a (例如,当我有一个内部表也提供选择并采取程序时。

然后我将 设置为在没有委托时getSelection()返回空(与返回相反)。多亏了它,总会有一个被返回,但有时它是空的。StructuredSelectionnullStructuredSelection

public ISelection getSelection() {
    return delegate == null ? new StructuredSelection() : delegate.getSelection();
}

之后,我可以添加我之前提到的简单条件:

<with variable="selection">
    <count value="0" />
</with>

有些人可能会觉得这很有用。

于 2013-07-11T11:22:17.173 回答