如何将自定义ISelectionProvider与Eclipse一起集成在表达式中?

时间:2010-05-18 16:55:07

标签: eclipse-rcp selection

我在Eclipse RCP应用程序中有一个自定义图形EditorPart。

它在createPartControl(..)方法中设置自定义ISelectionProvider:

@Override
public void createPartControl(Composite parent) {
    // [snip] 
    getSite().setSelectionProvider((ISelectionProvider)model.getSelection());
}

我有两个ViewPart通过ISelectionService监听选择更改。当EditorPart中的选择发生变化时,它们会收到通知。到目前为止一切都很好。

现在我使用以下XML添加了一个处理程序:

<handlerclass="my.custom.Handler" commandId="org.eclipse.ui.edit.delete">
    <enabledWhen>
        <count value="+"/>
    </enabledWhen>
</handler>

如果EditPart中的选项包含&gt; 0元素,这应该启用处理程序my.custom.Handler,但它没有。

但是,如果由内置选择提供程序提供的选择更改为&gt; 0元素(即由JFace观众提供的元素)。

是否有任何提示如何将ISelectionProvider的自定义实现与处理程序声明中使用的表达式框架集成?

1 个答案:

答案 0 :(得分:1)

enabledWhen可以包含任何表达式。您需要在那里指定您想要的选择变量。请参阅此处以获取示例:http://eclipse-tips.com/tutorials/1-actions-vs-commands?start=1