Eclipse RCP: Как сделать по умолчанию кнопку SAVE видимой в редакторе? - PullRequest
2 голосов
/ 20 июля 2009

Я думаю, что в Eclipse RCP есть кнопки SAVE и CANCEL по умолчанию, связанные с редакторами. Как заставить эти кнопки появляться в редакторе.

Я полагаю, что эти кнопки невидимы по умолчанию и, возможно, существует какой-то метод суперкласса, который необходимо переопределить, чтобы кнопки SAVE CANCEL появлялись в редакторе. Я помню, что слышал о такой вещи. (Хотя я могу ошибаться)

В любом случае, как нам этого добиться? (PS: я не ищу пользовательскую кнопку SWT и называю ее «SAVE». Я ищу кнопку «SAVE» по умолчанию, связанную с редактором (если она есть)).

1 Ответ

3 голосов
/ 20 июля 2009

Кнопки не имеют прямого отношения к вашим редакторам.
Вы должны, как описано здесь :

  • Добавить вкладку меню с параметром commandId, установленным для стандартного идентификатора команды, который можно найти в 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, от user s-d :

Примечание. Добавление saveAction в ActionBarContributor больше не требуется в RCP на основе Indigo R2 (3.7.2).
Достаточно добавить menuContribution, добавить getCommandStack().markSaveLocation() к методу редактора doSave() и переопределить commandStackChanged() следующим образом

public void commandStackChanged(EventObject event) {
  firePropertyChange(PROP_DIRTY);
  super.commandStackChanged(event);
}
...