2017-12-19 32 views
0

Ich habe Eclipse JFace Wizard mit fünf Seiten. In der ersten, habe ich Check-Buttons, um auszuwählen, welche Seiten angezeigt werden sollen - wenn Sie alle markieren, werden Sie den gesamten Assistenten durchlaufen, aber Sie können auch nur bestimmte Seiten auswählen, und dann werden nur diese Seiten angezeigt.Wie führe ich die benutzerdefinierte Navigation über die Seiten des JFace Eclipse-Assistenten durch?

Bisher habe ich Iterator mit Enum-Objekten für jede Seite verwendet. Ich rief das nächste Objekt des Iterators in getNextPage Funktion und seine if..else Fälle, um bestimmte Seiten in der richtigen Reihenfolge zurückzugeben. Das Problem ist, getNextPage wird nicht nur aufgerufen, wenn Nächste Taste gedrückt wird, sondern auch wenn pageComplete Ereignis feuern, usw., so Iterator nicht aktualisiert seinen Cursor, wenn ich will, und es endet zu schnell. Dies ist Snippet meiner Annahme:

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; 

Insbesondere Dinge, die ich wissen will, sind:

Erstens ist es eine andere Art und Weise Weiter Schaltfläche klicken, um zu erfassen? Ich weiß, es gibt NextPressed Methode in WizardDialog Klasse, aber ich weiß nicht, wie ich die Instanz von meiner Wizard-Klasse oder WizardPage aufrufen. Zweitens gibt es eine andere Möglichkeit, Navigation über Seiten anzupassen, um zu bestimmten Seiten zu gehen?

Antwort

0

Nein, sollten Sie nicht versuchen, die Schaltfläche Weiter abfangen klicken, dass die Logik zum Assistenten Dialog privat ist, und Sie sollten nicht damit zu stören versuchen zu

können Sie entweder überschreiben die WizardPage:

public IWizardPage getNextPage() 

Methode oder Sie können die außer Kraft setzen Wizard

public IWizardPage getNextPage(IWizardPage page) 

Sie auchdie Anpassung außer Kraft setzen müssenMethode. Sie müssen Ihren Code unabhängig vom Zeitpunkt des Aufrufs der Methode verwenden. Sie erhalten die Information darüber, welche die aktuelle Seite ist, Ihr Code sollte diese verwenden, um die nächste Seite zu bestimmen.

Verwandte Themen