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