我在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的自定义实现与处理程序声明中使用的表达式框架集成?
答案 0 :(得分:1)
enabledWhen可以包含任何表达式。您需要在那里指定您想要的选择变量。请参阅此处以获取示例:http://eclipse-tips.com/tutorials/1-actions-vs-commands?start=1