在我的eclipse RCP 3.3应用程序中,我想根据当前编辑器脏标志启用或禁用"保存"工具栏按钮.
我正在尝试使用< enabledWhen >标签,但我无法使其正常工作.
这是plugin.xml中的代码部分:
<command
commandId="org.acme.command.save"
icon="icons/save.png"
id="org.acme.command.save"
style="push">
<enabledWhen>
<instanceof value="activeEditor"/>
<test property="dirty" value="true"/>
</enabledWhen>
</command>
Run Code Online (Sandbox Code Playgroud)
你知道这应该是怎么回事吗?
工作台提供对"保存"和"全部保存"操作的支持,因此您无需像尝试那样自行实施.
建议的方法是在您的类中添加扩展ActionBarAdvisor的支持.确切的代码将取决于类的结构,但您需要的代码位如下.
在您的字段声明中:
private IWorkbenchAction saveAction;
private IWorkbenchAction saveAllAction;
Run Code Online (Sandbox Code Playgroud)
在你的makeActions方法中:
saveAction = ActionFactory.SAVE.create(window);
register(saveAction);
saveAllAction = ActionFactory.SAVE_ALL.create(window);
register(saveAllAction);
Run Code Online (Sandbox Code Playgroud)
在fillActionBars方法中:
IToolBarManager saveToolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
saveToolbar.add(saveAction);
saveToolbar.add(saveAllAction);
coolBar.add(new ToolBarContributionItem(saveToolbar, "save"));
Run Code Online (Sandbox Code Playgroud)
工作台将为您启用启用和禁用功能.
如果您确实想要实现自己的代码来执行此操作,那么您所采用的方法将起作用.您将需要更正XML(例如,instanceof元素正在检查所选对象是否为名为'activeEditor'的类的实例,这可能不是预期的).
| 归档时间: |
|
| 查看次数: |
10310 次 |
| 最近记录: |