2016-07-11 7 views
0

エクスポートウィザードを作成しています。ユーザーがエクスポートの形式を選択し、次にWizardNewFileCreationPageを使用してエクスポートの場所を選択できるようにします。WizardNewFileCreationPage order

私は3ページを作成しました.1つはwizardPageを呼び出して次の呼び出しページを設定し、もう1ページはフォーマットを保留してWizardNewFileCreationPageを拡張します。

私の唯一の問題は、「validatePage」関数にページの検証を限定するためにisPageComplete関数をオーバーライドしても、すべてのエクスポート形式が実行可能であることを要求する「Finish」ボタンです。

関数validatePageは、それ自身のコントロールだけでなく、ウィザードのクラスWizardNewFileCreationPageによって実装されているすべてのコントロールも有効であるようです。

私はどこか間違っていると誰かが解決策を知っていますか?だから、

よろしく、 ワルド

+0

'validatePage'のどの機能は? –

+0

WizardNewFileCreationPageの関数 – Waldo

+0

それから私はその質問を理解していません。もちろん、WizardNewFileCreationPage validatePageは、そのページのすべてを検証します。 –

答えて

0

WizardDialog。様々な時点で、それはそのupdateButtonsメソッドを呼び出します。これにより、WizardcanFinishメソッドが呼び出され、[完了]ボタンの状態が設定されます。

canFinishのデフォルトでも、現在アクティブでないページに対してごとページをWizardPageisPageCompleteメソッドを呼び出すことです。

WizardNewFileCreationPageの場合、isPageCompleteメソッドは、validatePageメソッドの結果を参照します。

WizardcanFinishの方法を無効にして、気になるページだけをテストすることができます。または、個々のページisPageCompleteのメソッドをオーバーライドして、必要な結果を返すことができます。

+0

それは最善の説明です! :) 私の問題gregであなたの時間を取っていただきありがとうございます:) – Waldo

0

、私は私の問題はそれで必要となるが、ウィザードに含まれるすべてのページが満たされていることを既定の実装だ私だcanFinishメソッドを実装していなかったという事実から来たと思います。

@Override 
public boolean canFinish() { 
    if (this.getContainer().getCurrentPage() == mainPage) 
     return false; 
    return this.getContainer().getCurrentPage().isPageComplete(); 
} 

注:私の「メインページ」属性がtheoneエクスポートの形式を定義し、その後NEXTPAGEを使用するように私の問題を避けるために、私はそれをこのようにしました。

はまた、私は私のページはこのようWizardNewFileCreationPageを呼び出すことによって、このように完了したかどうかの検査保た:

ダイアログドライブボタンの有効化を示す
@Override 
public boolean isPageComplete() { 
    return this.validatePage(); 
}