001package ca.bc.webarts.javaFX.wizard;
002
003import javafx.beans.property.*;
004import javafx.beans.value.*;
005import javafx.collections.*;
006import javafx.event.*;
007import javafx.scene.*;
008import javafx.scene.control.*;
009import javafx.scene.layout.*;
010import javafx.stage.Stage;
011
012
013/** basic wizard page class. */
014abstract public class WizardPage extends VBox
015{
016  protected Button priorButton = new Button("_Previous");
017  protected Button nextButton = new Button("N_ext");
018  protected Button cancelButton = new Button("Cancel");
019  protected Button finishButton = new Button("_Finish");
020
021  public WizardPage(String title)
022  {
023    getChildren().add(LabelBuilder.create().text(title).style("-fx-font-weight: bold; -fx-padding: 0 0 5 0;").build());
024    setId(title);
025    setSpacing(5);
026    setStyle("-fx-padding:10; -fx-background-color: honeydew; -fx-border-color: derive(honeydew, -30%); -fx-border-width: 3;");
027
028    Region spring = new Region();
029    VBox.setVgrow(spring, Priority.ALWAYS);
030    getChildren().addAll(getContent(), spring, getButtons());
031
032    priorButton.setOnAction(new EventHandler<ActionEvent>()
033    {
034      @Override
035      public void handle(ActionEvent actionEvent)
036      {
037        priorPage();
038      }
039    } );
040    nextButton.setOnAction(new EventHandler<ActionEvent>()
041    {
042      @Override
043      public void handle(ActionEvent actionEvent)
044      {
045        nextPage();
046      }
047    } );
048    cancelButton.setOnAction(new EventHandler<ActionEvent>()
049    {
050      @Override
051      public void handle(ActionEvent actionEvent)
052      {
053        getWizard().cancel();
054      }
055    } );
056    finishButton.setOnAction(new EventHandler<ActionEvent>()
057    {
058      @Override
059      public void handle(ActionEvent actionEvent)
060      {
061        getWizard().finish();
062      }
063    } );
064  }
065
066  public HBox getButtons()
067  {
068    Region spring = new Region();
069    HBox.setHgrow(spring, Priority.ALWAYS);
070    HBox buttonBar = new HBox(5);
071    cancelButton.setCancelButton(true);
072    finishButton.setDefaultButton(true);
073    buttonBar.getChildren().addAll(spring, priorButton, nextButton, cancelButton, finishButton);
074    return buttonBar;
075  }
076
077  abstract public Parent getContent();
078
079  public boolean hasNextPage()
080  {
081    return getWizard().hasNextPage();
082  }
083
084  public boolean hasPriorPage()
085  {
086    return getWizard().hasPriorPage();
087  }
088
089  public void nextPage()
090  {
091    getWizard().nextPage();
092  }
093
094  public void priorPage()
095  {
096    getWizard().priorPage();
097  }
098
099  public void navTo(String id)
100  {
101    getWizard().navTo(id);
102  }
103
104  public Wizard getWizard()
105  {
106    return (Wizard) getParent();
107  }
108
109  public void manageButtons()
110  {
111    if (!hasPriorPage())
112    {
113      priorButton.setDisable(true);
114    }
115
116    if (!hasNextPage())
117    {
118      nextButton.setDisable(true);
119    }
120  }
121}
122