A Simple Wizard for Vaadin7
import java.util.ArrayList;
import java.util.List;
import org.vaadin.teemu.wizards.WizardStep;
import com.vaadin.terminal.Sizeable;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
@SuppressWarnings("serial")
public class WizardPlus extends VerticalLayout {
private HorizontalLayout buttonFrame = new HorizontalLayout();
private List<WizardStep> step = new ArrayList<WizardStep>();
private int stepCount = 0;
private int stepPointer = 0;
private Button backButton = new Button("BACK");
private Button forwardButton = new Button("FORWARD");
private Button finishButton = new Button("FINISH");
private Button cancelButton = new Button("CANCEL");
public WizardPlus() {
setSizeFull();
setMargin(true);
backButton.addListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
stepPointer--;
if (stepPointer == 0) {
backButton.setEnabled(false);
}
finishButton.setEnabled(false);
forwardButton.setEnabled(true);
setCurrentStep();
}
});
forwardButton.addListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
stepPointer++;
if (stepPointer < stepCount) {
backButton.setEnabled(true);
if (stepPointer + 1 == stepCount) {
finishButton.setEnabled(true);
forwardButton.setEnabled(false);
}
setCurrentStep();
} else {
stepPointer--;
}
}
});
backButton.setEnabled(false);
buttonFrame.setWidth(100, Sizeable.UNITS_PERCENTAGE);
HorizontalLayout hl = new HorizontalLayout();
hl.setSpacing(true);
hl.addComponent(cancelButton);
hl.addComponent(backButton);
hl.addComponent(forwardButton);
hl.addComponent(finishButton);
buttonFrame.addComponent(hl);
buttonFrame.setComponentAlignment(hl, Alignment.MIDDLE_RIGHT);
}
public void addStep(WizardStep wizardStep) {
step.add(wizardStep);
stepCount++;
finishButton.setEnabled(false);
}
public void removeStep(int stepPosition) {
if (stepPosition < stepCount) {
step.remove(stepPosition);
stepCount--;
if (stepCount == 1) {
finishButton.setEnabled(false);
}
}
}
public void setCurrentStep() {
removeAllComponents();
if (stepCount > 0) {
addComponent(new Label("<b>" + (stepPointer + 1) + "/" + stepCount + " "
+ step.get(stepPointer).getCaption() + "</b>", Label.CONTENT_XHTML));
// addComponent(new Label((stepPointer + 1) * 100 / stepCount + "% " +
// step.get(stepPointer).getCaption()));
addComponent(step.get(stepPointer).getContent());
}
addComponent(buttonFrame);
}
@Override
public void attach() {
setCurrentStep();
}
public Button getBackButton() {
return backButton;
}
public void setBackButton(Button backButton) {
this.backButton = backButton;
}
public Button getForwardButton() {
return forwardButton;
}
public void setForwardButton(Button forwardButton) {
this.forwardButton = forwardButton;
}
public Button getFinishButton() {
return finishButton;
}
public void setFinishButton(Button finishButton) {
this.finishButton = finishButton;
}
public Button getCancelButton() {
return cancelButton;
}
public void setCancelButton(Button cancelButton) {
this.cancelButton = cancelButton;
}
}