2017-07-27 21 views
0

複数のフィールドを持つ設定ページを作成しました。環境設定ストアで、アプリケーションを再起動するコードが含まれているときにpropertychangelistenerを追加しました。コールワークベンチコードを一度だけ再起動

getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() { 

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

問題は、設定ページで複数のエントリを変更すると、この再起動コードが何度も呼び出されることになります。どのような条件を付けて複数のエントリを変更しても、この再起動は一度だけ呼び出されるようにします。

+0

保存/適用ボタンを追加して、それを使用してワークベンチを再起動するように促すことはできませんか? –

答えて

0

プロパティ変更リスナーにフラグを設定して、ページのメソッドでリスタートプロンプトを実行するだけです。

// 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(); 
} 
+0

ありがとうgreg-449 :) – techie

関連する問題