Seitendaten in einem Wozard weiterleiten

lafou1

Mitglied
Hallo zusammen,
ich bin bei Implementierung ein Wirzard für neue Projektart.
Mein Wizard besteht aus zwei Seiten.
in der ersten Seite soll die Benutzer ein Directoryname eingeben,und ich möchte die eingegebene Directoryname in der zweite Seite ausgeben.
Meine Frage lautet: wie kann ich von der zweite Seite auf ein Atribute der ersten Seite zugreifen ? ich bekomme ich null zurück.
NB: ich kann in der Methode performFinish() auf diese Attribut zugreifen,aber nicht in addpages();
Hier ist ein Abschnitt von dem Code
Java:
HTML:
public void addPages() { 
                page = new CAAV5NewWizardPage(selection); 
                addPage(page); 
                page2 = new CAAV5NewWizardPage2(selection); 
                String dw=page.getworkspaceDirectory(); 
                page2.setDWname(dw); 
                                addPage(page2); 
                                
        }
 
das wird ein eclipse wizard.

der erste parameter des konstruktors ist der name der wizardpage. da du abr dasselbe objekt verwendest haben beide pages den selben namen. sonst könntest du über getWizard().getPage( pageName ) an die Page mit Namen pageName navigieren.

alternativ kannst du, da du ja die reihenfolge kennst, mittels getWizard().getPages() an ein Array mit allen IWizardPages kommen.

ganz alternativ kannst du dir mal die klasse DialogSettings angucken, die erlaubt es dir, sehr einfach Daten persistent zu machen.
 
Danke für deine Antwort,
Die ertste Möglichkeit klingt super, ich werde versuchen,mit getWizard().getPage( pageName ) das Problem zu lösen.
ich werde mich noch mal melden,wenn ich das gelöst habe oder wenn ich andere Probleme auftritten :)


@Snape ich hab geglaubt,dass ich gut erklärt hab,was ich machen will :)
Noch Mal:
Wizard implementieren.
in der ersten Seite soll die Benutzer ein Directoryname eingeben,und ich möchte die eingegebene Directoryname in der zweite Seite ausgeben.
Wie kann im Laufzeit die in der erste Seite eingegebene Directoryname in der nächste Seite ausgeben?

Gruss
 
Hi,
Hier bin ich wieder.
Leider hab ich das selbe Problem : ich bekomme ein NullPointerException.

Hier ist ein Abschnitt vom Code der Klasse CAAV5NewWizardPage3,wo ich den Directiryname ausgeben will:
directory = new Text(container1, SWT.BORDER | SWT.SINGLE);
gd = new GridData(GridData.FILL_HORIZONTAL);
directory.setLayoutData(gd);
CAAV5NewWizardPage page=(CAAV5NewWizardPage)getWizard().getPage("page");
String pname=page.getworkspaceDirectory();
directory.setText(pname);
directory.setEditable(false);


Danke im voraus
 
ich revidiere meine aussage (ich hab beim letzten post nur in die API geguckt :-) ).

den namen setzt du wahrscheinlich in der entsprechenden WizardPage subklasse. du benutzt einen konstruktor, der eine ISelection erwartet. da ich das auch so hab, geh ich mal davon aus, dass es das PDE template ist, dass das so macht.

der wizard erzeugt in der methode Wizard#createPageControls() die SWT controls aller einzelnen pages und kontrolliert mittels #getControl(), ob das Control nicht null ist. das bedeutet, dass du in #createControl() nicht auf andere Pages zugreifen kannst (das war eine fehlannahme meinerseits).

du kannst z.b. die methode #setVisible überladen. wenn die seite tatsächlich angezeigt werden sollte (das argument ist dann true), kannst du zu den daten früherer WizardPage s navigieren. einfach mal nen breakpoint setzen und sich "umgucken".

hth
 
Hi,
hab ich was vergessen,
wie kann ich die pagename setzen?
bis hier alle pages haben selbe Nameund zwar :"wizardPage"

public void addPages() {
page = new CAAV5NewWizardPage(selection);
addPage(page);
String p=page.getName();
System.out.print("\Page1 Name"+p);

page2 = new CAAV5NewWizardPage2(selection);
addPage(page2);
String p2=page2.getName();
System.out.print("\Page1 Name"+p2);

}
 
guck dir mal die konstruktoren der WizardPages an.
irgendwo steht da ein konstanter String, mit dem der konstruktor der oberklasse aufgerufen wird.
 
Zurück