Wizard mit NEXT Button erstellen

tanzverfuehrung

Bekanntes Mitglied
HAllo, ich habe mir ein Wizard erstellt, und möchte gern ein next Buttzon haben, damit ich zur nächsten Seite springen kann. Ich arbeite mit eclipse 4 und e4 tools und versuche dort ein wizard zu erstellen, jedoch komme ich nur auf dem wizardDialog, wo drin steht "Gerätekonfiguration", es gibt kein next button, bzw komme ich gar nciht auf meine erste Seite.kann mir bitte jemand helfen.danke im Voraus.

Seite 1
Java:
package wizards;

import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;

public class FirstWizard extends WizardPage {

	private Composite container;

	public FirstWizard(String pageName) {
		super(pageName);
		setTitle(pageName);
		canFlipToNextPage();
	}

	@Override
	public void createControl(Composite parent) {
		container = new Composite(parent, SWT.NONE);
		GridLayout gridLayout = new GridLayout();
		container.setLayout(gridLayout);
		gridLayout.numColumns = 2;

		Label label = new Label(container, SWT.NONE);
		label.setText("Put a value here.");
		label.setVisible(true);

		setControl(container);
		setPageComplete(false);

	}
}

Seite 2

Java:
package wizards;

import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;

public class SecondWizard extends WizardPage {

	private Composite container;

	protected SecondWizard(String pageName) {
		super(pageName);
		setTitle(pageName);
	}

	@Override
	public void createControl(Composite parent) {
		container = new Composite(parent, SWT.NONE);
		GridLayout layout = new GridLayout();
		container.setLayout(layout);
		layout.numColumns = 2;
		Label label1 = new Label(container, SWT.NONE);
		label1.setText("Say hello to Fred");

		setControl(container);
		setPageComplete(false);
	}

}

Der Wizard wo die Seiten hinzugefügt werden:
Java:
package wizards;

import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.Wizard;

public class MyWizards extends Wizard {

	private FirstWizard one;
	private SecondWizard two;

	public MyWizards() {
		super();
	}

	@Override
	public String getWindowTitle() {
		return "guten Tag";
	}

	@Override
	public void addPage(IWizardPage page) {
		page.canFlipToNextPage();

		one = new FirstWizard("FIRST");
		addPage(one);
		one.setVisible(true);
		one.setPreviousPage(page);
		one.canFlipToNextPage();

		two = new SecondWizard("SECOND");
		addPage(two);
		two.setPreviousPage(one);
		two.setVisible(true);
	}

	@Override
	public IWizardPage getNextPage(IWizardPage currentPage) {
		if (currentPage == one)
			return two;
		if (currentPage == two)
			return one;
		return null;
	}

	@Override
	public boolean performFinish() {
		return true;
	}

	@Override
	public int getPageCount() {
		return 2;
	}

}

und der wizard Dialog, der das ganze öffnet?
Java:
package DevCon.handlers;

import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Shell;

import wizards.MyWizards;

public class ConfigurationHandler {

	@Execute
	public void execute(Shell shell) {
		WizardDialog wizardDialog = new WizardDialog(shell, new MyWizards());
		wizardDialog.setHelpAvailable(true);
		wizardDialog.create();
		wizardDialog.setTitle("Gerätekonfiguration");
		
		if (wizardDialog.open() == Window.OK) {
			System.out.println("Ok pressed");
		} else {
			System.out.println("Cancel pressed");
		}

	}
	

}
 
Ähnliches Problem hatte ich auch schon , habe das ganze dann mit einem CardLayout in verbindung mit Listenern gelöst, welche ich als innere klassen Definiert habe, hier mal der link zum post:

Cardlayout und Listener

vielleicht hilft dir das weiter, ansonsten einfach Fragen 🙂
 
Zuletzt bearbeitet:
Hier geht es allerdings um rcp 3.x entwicklung.

Ich würde hier nach den vogella tutorials schauen ich meine dort darüber etwas gelesen zu haben.

Bin selber mit 4.x eingestiegen da gibt es sowas nicht ;D
 
Zuletzt bearbeitet:
Ah, hab ich nicht gesehen , hatte es nur überflogen, dann vergiss was ich geschrieben habe, da ich mich mit RCP entwicklung / SWT noch nicht beschäftigt hab kann ich dazu leider dann auch nicht viel sagen 🙂

Da er ja aber stellenweise auch ein Layoutmanager verwendet, hier so wie es aussieht GridLayout(), stell ich einfach mal eine Gegenfrage, ist es nicht möglich ggf. ähnlich wie in Swing , die
komponenten in einem Array zu halten und einem übergeordneten Datencontainer hinzuzufügen ? in welchem man dann einfach mittels eines buttons durch die verschiedenen komponenten schalten kann ?

Nur so ein gedanke , keine Ahnung ob dies da möglich ist.

Ich weiß ja nicht inwiefern es unter SWT welches er augenscheinlich nutzt da unterschiede zu SWING gibt 🙂
 
Zuletzt bearbeitet:
Durch die Compatibility-Schicht sollten sie aber immer noch da sein. Ich habe meine letzten Builds mit 3.x gemacht, als gerade der Umstieg auf 4.x kam und habe danach die Firma gewechselt, so dass ich damit leider nichts mehr zu tun hab.

Mein bislang einziger Ausflug in e4-Entwicklung war eine auf OSGi/-Services basierte Platform, die ich "from-scratch" auf JavaFX 2.2 aufgebaut habe (wie ich sagen muss eine denkwürdige Erfahrung, denn so tief mit Services und DI (über e4) musste ich mich noch nie beschäftigen - war ein cooles kleines Seitenprojekt, muss ich gestehen).

Ansonsten hatte ich mir mal einen reinen SWT Wizard selbst geschrieben. Ist schon etwas alt, aber wenn du magst schick ich dir mal den Link und du kannst meine Programmierkenntnisse "bewundern" 😛 Ist nicht der schönste code,mein Use-Case wurde aber erfüllt (wollte einen Baumartigen - also von den Entscheidungen abhängigen Wizard...).
 
Durch die Compatibility-Schicht sollten sie aber immer noch da sein. Ich habe meine letzten Builds mit 3.x gemacht, als gerade der Umstieg auf 4.x kam und habe danach die Firma gewechselt, so dass ich damit leider nichts mehr zu tun hab.

Mein bislang einziger Ausflug in e4-Entwicklung war eine auf OSGi/-Services basierte Platform, die ich "from-scratch" auf JavaFX 2.2 aufgebaut habe (wie ich sagen muss eine denkwürdige Erfahrung, denn so tief mit Services und DI (über e4) musste ich mich noch nie beschäftigen - war ein cooles kleines Seitenprojekt, muss ich gestehen).

Ansonsten hatte ich mir mal einen reinen SWT Wizard selbst geschrieben. Ist schon etwas alt, aber wenn du magst schick ich dir mal den Link und du kannst meine Programmierkenntnisse "bewundern" 😛 Ist nicht der schönste code,mein Use-Case wurde aber erfüllt (wollte einen Baumartigen - also von den Entscheidungen abhängigen Wizard...).

ja gerne.danke
 
habe den fehler gefunden, habe ein falsche methode genommen
anstatt
Java:
    @Override
    public void addPage(IWizardPage page) {
//implementierung
}

muss die methode ohne übergabe paramter genommen werden:


Java:
    @Override
    public void addPage() {
//implementierung
}
 

Zurück
Oben