package regexgolf2.ui.challengegenerator;
import java.io.IOException;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import javafx.stage.Window;
import regexgolf2.ui.util.JavafxUtil;
import com.google.java.contract.Requires;
public class ChallengeGeneratorUI
{
@FXML
private ChoiceBox<GeneratorItem> _generatorChoiceBox;
@FXML
private Button _wordPoolButton;
@FXML
private Button _generateButton;
@FXML
private AnchorPane _generatorConfigPane;
@FXML
private Button _saveButton;
@FXML
private TextField _challengeNameTextField;
private final AnchorPane _wordRepositoryPane = new AnchorPane();
private Stage _wordRepositoryStage;
private final Window _parentWindow;
private Node _rootNode;
@Requires("parent != null")
public ChallengeGeneratorUI(Window parent) throws IOException
{
FXMLLoader loader = new FXMLLoader(getClass().getResource("ChallengeGeneratorUI.fxml"));
loader.setController(this);
_rootNode = loader.load();
assert _generatorChoiceBox != null;
assert _wordPoolButton != null;
assert _generatorConfigPane != null;
assert _generateButton != null;
assert _challengeNameTextField != null;
assert _saveButton != null;
_parentWindow = parent;
_wordPoolButton.setOnAction(e -> wordPoolButtonClicked());
}
private void wordPoolButtonClicked()
{
// lazy initialization
if (_wordRepositoryStage == null)
initWordRepoStage();
_wordRepositoryStage.show();
_wordRepositoryStage.requestFocus();
}
/**
* Called from the Button Handler because of lazy initialization
*/
private void initWordRepoStage()
{
_wordRepositoryStage = new Stage();
_wordRepositoryStage.setScene(new Scene(_wordRepositoryPane));
_wordRepositoryStage.initOwner(_parentWindow);
// Set dimensions:
_wordRepositoryStage.setWidth(400);
_wordRepositoryStage.setHeight(580);
// Center stage in parentstage
JavafxUtil.centerInParent(_wordRepositoryStage, _parentWindow);
}
public ChoiceBox<GeneratorItem> getGeneratorChoiceBox()
{
return _generatorChoiceBox;
}
public Button getWordPoolButton()
{
return _wordPoolButton;
}
public Button getGenerateButton()
{
return _generateButton;
}
public TextField getChallengeNameTextField()
{
return _challengeNameTextField;
}
public Button getSaveButton()
{
return _saveButton;
}
public void setGeneratorConfigPaneContent(Node content)
{
JavafxUtil.setAsContent(content, _generatorConfigPane);
}
public void setWordRepositoryPanel(Node content)
{
JavafxUtil.setAsContent(content, _wordRepositoryPane);
}
public Node getUINode()
{
return _rootNode;
}
}