112 lines
3.1 KiB
Java

package Assignments.A1.view;
import Assignments.A1.models.BoardNode;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.*;
public class BoardViewCodeBehind {
@FXML
private TreeView<BoardNode> spanning_tree;
@FXML
private Label current_board;
@FXML
private Label alg_speed;
@FXML
private Button generate_board;
@FXML
private MenuButton menu_alg;
@FXML
private ToggleButton expanded;
@FXML
private ToggleButton showOnlySolvedPath;
@FXML
private MenuItem AStar;
@FXML
private MenuItem BFS;
@FXML
private MenuItem DFS;
@FXML
private MenuItem UCS;
@FXML
private Button solve_button;
@FXML
private Label gen_board_err;
@FXML
private Label no_solv_alg_err;
private MainViewModel viewModel;
public BoardViewCodeBehind() {
this.viewModel = new MainViewModel();
}
@FXML
private void initialize() {
this.current_board.textProperty().bindBidirectional(viewModel.getCurrentBoardProperty());
this.DFS.disableProperty().bindBidirectional(viewModel.DFSProperty());
this.UCS.disableProperty().bindBidirectional(viewModel.UCSProperty());
this.BFS.disableProperty().bindBidirectional(viewModel.BFSProperty());
this.AStar.disableProperty().bindBidirectional(viewModel.AStarProperty());
this.gen_board_err.visibleProperty().bindBidirectional(viewModel.genBoardErrProperty());
this.no_solv_alg_err.visibleProperty().bindBidirectional(viewModel.solvingAlgErrProperty());
this.expanded.selectedProperty().bindBidirectional(viewModel.expandedProperty());
this.alg_speed.textProperty().bindBidirectional(viewModel.algSpeedProperty());
}
public void onGenerateBoard(ActionEvent actionEvent) {
this.viewModel.generateBoard();
}
public void showSolvedPath(ActionEvent actionEvent) {
if (this.viewModel.getSolvedRootNode() != null) {
this.viewModel.updateDisplay();
}
this.spanning_tree.setRoot(viewModel.getSolvedRootNode());
}
public void onSolveButton(ActionEvent actionEvent) {
viewModel.solveBoard();
viewModel.updateDisplay();
this.spanning_tree.setRoot(viewModel.getSolvedRootNode());
}
public void onAlgChange(ActionEvent actionEvent) {
}
public void onDFS(ActionEvent actionEvent) {
viewModel.setSelectedAlg("DFS");
this.menu_alg.textProperty().set(this.menu_alg.getItems().get(0).textProperty().get());
}
public void onUCS(ActionEvent actionEvent) {
viewModel.setSelectedAlg("UCS");
this.menu_alg.textProperty().set(this.menu_alg.getItems().get(1).textProperty().get());
}
public void onBFS(ActionEvent actionEvent) {
viewModel.setSelectedAlg("BFS");
this.menu_alg.textProperty().set(this.menu_alg.getItems().get(2).textProperty().get());
}
public void onAStar(ActionEvent actionEvent) {
viewModel.setSelectedAlg("AStar");
this.menu_alg.textProperty().set(this.menu_alg.getItems().get(3).textProperty().get());
}
}