Eclipse PreferencePage中的Apply和OK按钮

时间:2017-05-11 09:42:22

标签: java eclipse eclipse-plugin preference

eclipse首选项页面中的apply和ok按钮应该起作用的标准和推荐方式是什么。

我检查并发现当我们点击apply或ok按钮时调用performOK()方法。这意味着如果我有一些计算或者说在performOK()中开始线程,并且用户首先单击“应用”,然后单击“确定”按钮,它将执行两次,如果用户单击“应用”并取消,则无论如何都将应用更改? / p>

如果用户点击“应用”然后确定,那么有没有办法不执行两次代码?

@Override
protected void performApply() {
    this.performOk();
}

@Override
public boolean performOk() {
    PreferencesUtil.savePreferences();
    return super.performOk();
}

由于

2 个答案:

答案 0 :(得分:0)

由您来记住Apply已通过覆盖performApply并设置标志来运行。然后,您可以在performOk中测试该标志,并跳过同样的事情。

如果用户在按“应用”后更改了某些内容,请务必清除该标记。

类似于:

private boolean saveDone = false;


public boolean performOk() {

  if (!saveDone) {
    saveDone = true;

    store.setValue(Constants.ENABLE_DEFAULT_COLOR, this.defaultColoringCheckBox.getSelection());
    PreferencesUtil.addToPreferenceStore(viewer.getTable());
    PreferencesUtil.savePreferences();
  }

  return super.performOk();
}

如果页面中有任何更改,请设置saveDone = false

答案 1 :(得分:0)

我认为在用户希望在单独的方法中应用更改时提取要执行的功能是有意义的。从apply和ok调用此方法。 我不会在“performApply”中调用“performOK”。在performOk中,我想是通过super方法执行首选项对话框的附加关闭。