Eclipse RCP:如何在编辑器中显示默认的SAVE按钮?

时间:2009-07-20 03:32:00

标签: eclipse-rcp

我认为Eclipse RCP中有与编辑器关联的默认SAVE和CANCEL按钮。我们如何使这些按钮出现在编辑器上。

我认为这些按钮在默认情况下是不可见的,可能有一些超类方法需要被覆盖以使SAVE CANCEL按钮出现在编辑器上。 我记得听说过这样的事情。 (虽然我可能错了)

无论如何,我们如何实现这一目标? (PS:我不是在寻找自定义SWT按钮,并将其命名为'SAVE'。我正在寻找与编辑器相关的默认SAVE按钮(如果有这样的事情)。)

1 个答案:

答案 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);
}