2008-09-05 58 views
6

我正在爲Eclipse RCP應用程序編寫一個嚮導。在對文件進行一些處理並接受一些用戶輸入之後,我不想讓用戶回頭修改。此時,他們必須接受或拒絕他們即將對系統做出的更改。您可以禁用JFace嚮導中的後退按鈕嗎?

我似乎無法找到的是一種方法調用,可以讓我覆蓋顯示的按鈕或用戶按下後退按鈕的能力。我寧願它不在那裏或至少被禁用。

有沒有人找到一種方法來使用JFace WizardWizardPage

可用性明智,我違反向導約定?我應該考慮採取不同的方法解決問題嗎?

回答

11

您可以在嚮導頁面實現中從getPreviousPage()方法返回null。

3

從UI的角度來看,這似乎相當糟糕。如果您的用戶犯了一個錯誤,想要回頭修改並且不允許他們,您的用戶將會感到沮喪。我認爲將應用程序更改爲允許返回而不是尋找方法來阻止它會好得多。

0

使用標準JFace嚮導API無法執行此操作。我的團隊通過編寫一個自定義的WizardDialog來完成此任務。我們在Eclipse RCP應用程序上執行了此操作,而不是在Eclipse插件上執行此操作。禁用後退按鈕違反慣例,但我們的業務分析師確實希望獲得該功能。

6

擴展在jodonell的回答是:

禁用後退按鈕是難度比它應該是,由於WizardPage.getPreviousPage的默認實現非直觀的行爲()。您可以調用setPreviousPage(null),getPreviousPage()仍然返回上一頁。你需要重寫getPreviousPage()的執行情況,以便禁用後退按鈕:

public abstract class MyWizardPage extends WizardPage { 
    private boolean backButtonEnabled = true; 

    public void setBackButtonEnabled(boolean enabled) { 
     backButtonEnabled = enabled; 
     getContainer().updateButtons(); 
    } 

    @Override 
    public IWizardPage getPreviousPage() { 
     if (!backButtonEnabled) { 
      return null; 
     } 
     return super.getPreviousPage(); 
    } 
} 

請參見我的博客文章的幾個JFace的嚮導提示和技巧:

http://nsawadsky.blogspot.com/2011/07/jface-wizard-tips-and-tricks.html