2017-05-11 2 views
0

eclipse設定ページのapplyとokボタンが動作する標準的で推奨される方法は何ですか?Eclipse PreferencePageのApplyボタンとOKボタン

私は、applyまたはokボタンをクリックするとperformOK()メソッドが呼び出されたことを確認しました。つまり、performOK()でスレッドを開始し、最初にapplyをクリックしてからOKボタンを2回実行すると、ユーザーがapplyをクリックしてキャンセルすると、変更が適用されます。

ユーザーが[適用]をクリックしてから[OK]をクリックするとコードを2回実行しない方法はありますか?それはperformApplyをオーバーライドし、フラグを設定することによって実行されたことの適用を覚えておくことはあなた次第です

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

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

おかげ

答えて

0

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何がページに変更された場合。

+0

performApplyまたはperformOKで実装を記述する必要がありますか? – wearybands

+0

performApplyは通常単にperformOkを呼び出します。 –

+0

ユーザが「適用」をクリックしてからOKを2回実行すると質問 – wearybands

0

ユーザーが別の方法で変更を適用したいときに実行される機能を抽出することが理にかなっていると思います。このメソッドはapply AND okから呼び出されます。 "performApply"内から "performOK"を呼び出すことはありません。 performOkでは、Preferencesダイアログの追加クローズがsuperメソッドによって実行されます。

関連する問題