ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
2769
2769
EMPFEHLEN
-
24.09.08 12:40 #1
- Registriert seit
- Aug 2008
- Beiträge
- 7
Hallo,
weiß jemand wie man beim JFace-Wizard raus kriegen kann, wann der Next-Button geklickt wurde? Die getNextPage()-Methode in der WizardPage zu überschreiben reicht für mich leider nicht aus, da diese Methode ja auch aufgerufen wird, wenn der Wizard einfach nur "wissen will" ob es noch eine nächste Seite gibt und er somit den Next-Button aktivieren muss.
Ich muss jedoch eindeutig wissen, ob der Next-Button gedrückt wurde. Ich hab den Code von WizardDialog, Wizard usw schon ein bisschen durchstöbert. Wie es aussieht kann man sich nicht direkt als Listener ranhängen.
Kennt vielleicht jemand einen Trick, wie man trotzdem eindeutig mitbekommt, wenn der Next-Button geklickt wurde?
Danke schon mal und schöne Grüße
-
29.09.08 15:34 #2
- Registriert seit
- Jan 2008
- Ort
- Frankfurt am Main
- Beiträge
- 37
Ich weiß zwar nicht genau wie es bei den Next-buttons aussieht. Aber bei den Buttons OK und Cancel hat man doch, wenn ich mich recht entsinne, jeweils eine Funktion mit den Namen
Code java:1 2 3 4 5 6 7 8 9
public boolean performFinish() { // ... return false; } public boolean performCancel { // ... return false; }
Diese werden aufgerufen, wenn der OK bzw. Cancel Button betätigt wurde.
Gibts sowas nicht auch für die Nextbuttons? Müsste es eigentlich.
Würde einfach in die performNext (wenn es sowas gibt) dann eine andere Methode aufrufen, in der Sie einfügen, was passieren soll, wenn ein jemand auf "Next" drückt.
Etwas anderes fällt mir momentan auch nicht ein.
Gruß,
Jens
-
29.09.08 18:06 #3
- Registriert seit
- Aug 2008
- Beiträge
- 7
Nein, leider nicht. Es gibt nur die getNextPage()-Methode. Aber die wird (wie oben schon geschrieben) eben auch dann aufgerufen, wenn der Wizard einfach nur mal "gucken" will, obs überhaupt noch ne nächste Seite gibt.
Ich hab mir jetzt einfach nen eigenen Container erstellt, indem ich WizardDialog abgeleitet und die NextButtonPressed()-Methode überschrieben habe. Dazu hab ich mir nen Listener gebaut, den mein Container verwaltet, so dass sich die Controller der einzelnen WizardPages beim Container anmelden können, um dann beim Klicken des Next-Buttons benachrichtigt zu werden.
Alles ziemlich umständlich und entwurfs-technisch nicht grade schön. Aber der jface Wizard ist halt einfach nicht für komplizierte dynamische Wizards geeignet. Beim nächsten mal baue ich mir lieber ein eigenes Framework. Aber schlauer ist man ja leider immer erst hinterher
-
die Methode die du brauchst sollte validatePage sein.
-
Bei mir hat der Wizard noch nie mittels getNextPage() nachgesehen, ob überhaupt 'ne nächste Seite da ist. Deshalb hätte ich auch das Überschreiben selbiger Methode als Lösung für Dein Problem angeboten. Wenn er doch gucken würde, würde die Beschreibung der API ("Returns the wizard page that would to be shown if the user was to press the Next button.") auch nicht stimmen. Naja, wird Dir mittlerweile egal sein...
“Some may never live, but the crazy never die”
-
07.10.08 08:15 #6
- Registriert seit
- Aug 2008
- Beiträge
- 7
@mschlegel: die Methode kann ich aber nur nutzen, wenn ich meine WizardPages von der Klasse WizardNewProjectCreationPage ableite. Und nur für diese eine Methode von der Klasse zu erben, finde ich noch unsauberer als mir einen eigenen Container zu erstellen.
Aber trotzdem danke für den Tipp. Wurde festgehalten, für den Fall, dass ich die Klasse mal für einen anderen Wizard gebrauchen könnte.
@ishino: dann hast du wohl nie die Methode setPageComplete() genutzt. Die ruft nämlich die Methode updateButtons() (aus der Klasse WizardDialog) auf, diese wiederum ruft canFlipToNextPage() auf, um zu schauen, ob der Next-Button aktiviert werden soll. Die canFlipToNextPage()-Methode ruft dann die getNextPage()-Methode auf, um zu schauen, ob es überhaupt eine nächste Seite gibt.
D.h. wenn der Nutzer alle benötigten Daten eingegeben hat und ich über die Methode setPageComplete(true), den Next-Button freigeben will, wird die getNextPage()-Methode aufgerufen und nicht erst wenn der Nutzer wirklich auf Next klickt.
Ich setze das Thema auf erledigt, da meine Lösung für mich funktioniert und es scheinbar (für meinen Fall) keine bessere Lösung zu geben scheint.
Trotzdem danke für die Bemühungen.
-
Falls jemand wieder auf dieses Problem stoßen sollte:
in der addPages() Methode des Wizard folgendes probieren:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
IWizardContainer wizardContainer = this.getContainer(); if ( wizardContainer instanceof IPageChangeProvider ) { IPageChangeProvider pageChangeProvider = (IPageChangeProvider) wizardContainer; pageChangeProvider.addPageChangedListener( new IPageChangedListener() { @Override public void pageChanged( PageChangedEvent event ) { //update something on the pages } } ); }
Ähnliche Themen
-
jquery ermitteln welcher button geklickt wurde
Von Maniac im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 19.11.10, 11:04 -
JFace Wizard: Von der letzten WizardPage mit next wieder zur 1. Page
Von chris im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 27.06.10, 23:31 -
JFace Wizard: 2 Pages obwohl nur eine hinzugefügt
Von meisteryoda im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 18.06.08, 00:51 -
jface wizard size
Von thartmann im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 03.12.07, 15:55 -
Page Aktualisierung mit org.eclipse.jface.wizard
Von FishFinder im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 20.03.07, 13:02





Zitieren
Login





