2017-07-27 74 views
0

我創建了一個包含多個字段的首選項頁面。在包含代碼以重新啓動應用程序時,我在preference store中添加了propertychangelistener。僅調用一次重新啓動工作臺代碼

getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() { 

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

問題是當我在首選項頁面中更改多個條目時,此重新啓動代碼將被多次調用。我應該放什麼樣的條件,以便即使在改變多個條目之後,這個重新啓動也只會被調用一次。

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

非常感謝greg-449 :) – techie

相關問題