Вызов кода Restart workbench только один раз

Я создал страницу настроек с несколькими полями. В хранилище предпочтений я добавил свойствоchangelistener, когда содержит код для перезапуска приложения.

getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() {

      @Override
      public void propertyChange(PropertyChangeEvent event) {
        if(MessageDialog.openConfirm(shell,"Restart Required", "Restart now?"))
          PlatformUI.getWorkbench().restart();
      }
    });

Проблема в том, что когда я изменяю несколько записей на странице настроек, этот код перезапуска будет вызываться много раз. Какое условие я должен поставить, чтобы даже после изменения нескольких записей этот перезапуск вызывался только один раз.


person techie    schedule 27.07.2017    source источник
comment
Разве вы не можете добавить кнопку «Сохранить/применить» и использовать ее, чтобы предложить пользователю перезапустить верстак?   -  person Mads T    schedule 27.07.2017


Ответы (1)


Просто установите флаг в прослушивателе изменения свойств и выполните запрос на перезапуск в методе performOk страницы.

// Field in the page:
boolean restartRequired = false;


getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() {

  @Override
  public void propertyChange(PropertyChangeEvent event) {
    restartRequired = true;
  }
});


@Override
public boolean performOk()
{ 
  if (restartRequired) {
    ... prompt / restart
  }
  return super.performOk();
}
person greg-449    schedule 27.07.2017
comment
Большое спасибо, greg-449 :) - person techie; 27.07.2017