package eu.lestard.snakefx.view.menu;
import de.saxsys.mvvmfx.FxmlView;
import de.saxsys.mvvmfx.InjectViewModel;
import eu.lestard.snakefx.util.TriggerablePopup;
import eu.lestard.snakefx.view.about.AboutView;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ChoiceDialog;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import javafx.stage.Window;
import java.net.URL;
import java.util.Optional;
import java.util.ResourceBundle;
public class MenuView implements FxmlView<MenuViewModel>, Initializable {
@InjectViewModel
private MenuViewModel viewModel;
@FXML
private AnchorPane menuViewPane;
private TriggerablePopup aboutPopup;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
menuViewPane.sceneProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) {
final Window window = menuViewPane.getScene().getWindow();
aboutPopup = new TriggerablePopup(AboutView.class, (Stage) window);
aboutPopup.trigger().bindBidirectional(viewModel.aboutPopupVisible());
}
});
}
@FXML
public void newGame() {
ChoiceDialog<Integer> sizeChoiceDialog = new ChoiceDialog<>();
sizeChoiceDialog.setHeaderText("Enter the Size of the new Game");
sizeChoiceDialog.setTitle("New Game");
sizeChoiceDialog.setContentText("Size:");
sizeChoiceDialog.getItems().addAll(viewModel.sizeOptions());
sizeChoiceDialog.setSelectedItem(viewModel.newSize().get());
final Optional<Integer> newSizeOptional = sizeChoiceDialog.showAndWait();
newSizeOptional.ifPresent(viewModel.newSize()::setValue);
viewModel.newGame();
}
@FXML
public void showHighscores() {
viewModel.showHighscores();
}
@FXML
public void about() {
viewModel.about();
}
@FXML
public void exit() {
viewModel.exit();
}
}