package regexgolf2.ui.challengesolving;
import java.io.IOException;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import regexgolf2.ui.subcomponents.challengetitle.ChallengeTitleUI;
import regexgolf2.ui.subcomponents.scoredisplay.SolvedDisplayUI;
import regexgolf2.ui.subcomponents.solutionediting.SolutionEditingUI;
import regexgolf2.ui.util.JavafxUtil;
public class ChallengeSolvingUI
{
private final BooleanProperty _editable = new SimpleBooleanProperty(false);
@FXML
private AnchorPane _titlePane;
private ChallengeTitleUI _challengeTitleUI = new ChallengeTitleUI();
@FXML
private Label _scoreLabel;
@FXML
private Label _solvedLabel;
private SolvedDisplayUI _solvedDisplayUI;
@FXML
private TextField _solutionTextField;
private SolutionEditingUI _solutionEditingUI;
@FXML
private AnchorPane _doMatchPane;
@FXML
private AnchorPane _dontMatchPane;
private Parent _rootNode;
public ChallengeSolvingUI(Node doMatchUI, Node dontMatchUI) throws IOException
{
FXMLLoader loader = new FXMLLoader(getClass().getResource("ChallengeSolvingUI.fxml"));
loader.setController(this);
_rootNode = loader.load();
assert _titlePane != null;
assert _solvedLabel != null;
assert _solutionTextField != null;
assert _doMatchPane != null;
assert _dontMatchPane != null;
JavafxUtil.setAsContent(_challengeTitleUI.getUINode(), _titlePane);
JavafxUtil.setAsContent(doMatchUI, _doMatchPane);
JavafxUtil.setAsContent(dontMatchUI, _dontMatchPane);
_solvedDisplayUI = new SolvedDisplayUI(_solvedLabel);
_solutionEditingUI = new SolutionEditingUI(_solutionTextField);
_challengeTitleUI.editableProperty().bind(_editable);
}
public Label getScoreLabel()
{
return _scoreLabel;
}
public SolvedDisplayUI getSolvedDisplayUI()
{
return _solvedDisplayUI;
}
public SolutionEditingUI getSolutionEditingUI()
{
return _solutionEditingUI;
}
public ChallengeTitleUI getChallengeTitleUI()
{
return _challengeTitleUI;
}
public boolean isEditable()
{
return _editable.get();
}
public void setEditable(boolean editable)
{
_editable.set(editable);
}
public BooleanProperty editableProperty()
{
return _editable;
}
public void setDisabled(boolean disabled)
{
_rootNode.setDisable(disabled);
}
public Parent getUINode()
{
return _rootNode;
}
}