仅调用重启工作台代码一次

时间:2017-07-27 09:33:41

标签: java eclipse preference

我创建了一个包含多个字段的首选项页面。在首选项存储中,我在包含重新启动应用程序的代码时添加了propertychangelistener。

getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() {

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

问题是当我在首选项页面中更改多个条目时,将多次调用此重新启动代码。我应该放什么条件,以便即使在更改多个条目后,此重启也只会被调用一次。

1 个答案:

答案 0 :(得分:0)

只需在属性更改侦听器中设置一个标志,然后在页面的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();
}