2017-12-19 24 views
0

5ページのEclipse JFaceウィザードがあります。最初に、どのページを表示するかを選択するためのチェックボタンがあります。すべてをチェックするとウィザード全体が表示されますが、特定のページだけを選択してもそのページだけが表示されます。JFace Eclipse Wizardページからカスタムナビゲーションを実行する方法は?

これまでは、各ページを表すenumオブジェクトを使用してイテレータを使用しました。私はgetNextPage関数のイテレータの次のオブジェクトとそのif..elseの場合を適切な順序で特定のページを返すように呼びました。問題は、次の場合はボタンが押されたときだけでなく、pageCompleteイベントが発生したときなどにも、getNextPageが呼び出されるだけでなく、イテレータはカーソルを必要に応じて更新しないため、高速に終了します。これは私の仮定の抜粋です:

特に
else if(page == FirstPage) 
{ 
    // iterator contains SelectedAction - enum objects representing pages 
    this.pageIterator = page.getWizardPagesList().iterator(); 

    if(pageIterator.hasNext()) 
    { 
     return selectedActionToPage(pageIterator.next()); 
    } 
} 
else 
{ 
    if(pageIterator.hasNext()) 
    { 
     SelectedAction action = pageIterator.next(); 
     if(!pageIterator.hasNext()) 
     { 
     // we check if current page was last one 
      setFinished(true); 
      setLastPage(selectedActionToPage(action)); 
     } 
     // selectedActionToPage converts enum object to WizardPage class 
     return selectedActionToPage(action); 
    } 
    else if((pageIterator != null) && !pageIterator.hasNext()) 
    { 
     return page; 
    } 
} 
return page; 

、私が知りたい事がある:

まず、クリックボタンをキャプチャする他の方法はありますか?私はメソッドがWizardDialogクラスにあることを知っていますが、私のウィザードクラスまたはWizardPageからそのインスタンスを呼び出す方法はわかりません。 第2に、指定したページに移動するために、ページを介してナビゲーションをカスタマイズする別の方法はありますか?

答えて

0

いいえ、あなたはそのロジックは、ウィザードのダイアログにプライベートであり、あなたはそれに干渉しようとするべきではありません]をクリックし、[次へ]ボタンを傍受しようとするべきではない、

あなたはWizardPageを上書きすることができ、次のいずれか

public IWizardPage getNextPage() 

方法か、あなたはまた、マッチングをオーバーライドする必要がありWizard

public IWizardPage getNextPage(IWizardPage page) 

を上書きすることができますgetPreviousPageメソッド。メソッドが呼び出されたときに関係なく、コードを動作させる必要があります。あなたは現在のページがどれであるかについての情報が与えられており、コードはそれを使って次のページを決定する必要があります。

関連する問題