An example of a multi-screen input wizard. The
Wizard is defined declaratively.
object MyWizard extends Wizard {
object completeInfo extends WizardVar(false)
val nameAndAge = new Screen {
val name = new Field with StringField {
def title = S ?? "First Name"
override def validation = minLen(2, S ?? "Name Too Short") ::
maxLen(40, S ?? "Name Too Long") :: super.validation
}
val age = new Field with IntField {
def title = S ?? "Age"
override def validation = minVal(5, S ?? "Too young") ::
maxVal(120, S ?? "You should be dead") :: super.validation
}
override def nextScreen = if (age.is < 18) parentName else favoritePet
}
val parentName = new Screen {
val parentName = new Field with StringField {
def title = S ?? "Mom or Dad's name"
override def validation = minLen(2, S ?? "Name Too Short") ::
maxLen(40, S ?? "Name Too Long") :: super.validation
}
}
val favoritePet = new Screen {
val petName = new Field with StringField {
def title = S ?? "Pet's name"
override def validation = minLen(2, S ?? "Name Too Short") ::
maxLen(40, S ?? "Name Too Long") :: super.validation
}
}
def finish() {
S.notice("Thank you for registering your pet")
completeInfo.set(true)
}
}