我认为Eclipse RCP中有与编辑器关联的默认SAVE和CANCEL按钮。我们如何使这些按钮出现在编辑器上。
我认为这些按钮在默认情况下是不可见的,可能有一些超类方法需要被覆盖以使SAVE CANCEL按钮出现在编辑器上。 我记得听说过这样的事情。 (虽然我可能错了)
无论如何,我们如何实现这一目标? (PS:我不是在寻找自定义SWT按钮,并将其命名为'SAVE'。我正在寻找与编辑器相关的默认SAVE按钮(如果有这样的事情)。)
答案 0 :(得分:3)
按钮与编辑器没有直接关系 您必须described there):
使用commandId设置为标准命令ID添加菜单贡献,该命令ID可在IWorkbenchActionDefinitionIds
中找到,例如org.eclipse.ui.file.save
在ApplicationActionBarAdvisor.makeActions
中创建一个命令并注册。
protected void makeActions(final IWorkbenchWindow window) {
// Creates the actions and registers them.
// Registering is needed to ensure that key bindings work.
// The corresponding commands keybindings are defined in the plugin.xml
// file.
// Registering also provides automatic disposal of the actions when
// the window is closed.
saveAction = ActionFactory.SAVE.create(window);
register(saveAction);
}
Editor
部分添加脏标记并实施isDirty()
,setDirty()
和clean()
方法。2013年2月更新,来自user s-d:
注意:在基于Indigo R2(3.7.2)的RCP中,不再需要在saveAction
中添加ActionBarContributor
。
只需添加menuContribution
,将getCommandStack().markSaveLocation()
添加到编辑器的doSave()
方法,并覆盖commandStackChanged()
,如下所示
public void commandStackChanged(EventObject event) {
firePropertyChange(PROP_DIRTY);
super.commandStackChanged(event);
}