package market.guess.ui.desktop.controllers; import java.util.function.Consumer; import javafx.fxml.FXML; import javafx.scene.control.Button; import market.guess.ui.desktop.util.Views; public class ResolveDialogController { private Runnable onCancel; private Consumer onConfirm; private String selectedOption = null; @FXML private Button resolveYesBtn; @FXML private Button resolveNoBtn; @FXML private Button confirmBtn; @FXML private void initialize() { updateSelection(); } public void setOnCancel(Runnable onCancel) { this.onCancel = onCancel; } public void setOnConfirm(Consumer onConfirm) { this.onConfirm = onConfirm; } public void reset() { selectedOption = null; updateSelection(); } private void updateSelection() { Views.setSelected(resolveYesBtn, "YES".equals(selectedOption)); Views.setSelected(resolveNoBtn, "NO".equals(selectedOption)); boolean hasChoice = selectedOption != null; confirmBtn.setDisable(!hasChoice); confirmBtn.setText("Resolve as " + (hasChoice ? selectedOption : "…")); } @FXML private void handleSelectYes() { selectedOption = "YES"; updateSelection(); } @FXML private void handleSelectNo() { selectedOption = "NO"; updateSelection(); } @FXML private void handleCancel() { if (onCancel != null) { onCancel.run(); } } @FXML private void handleConfirm() { if (onConfirm != null && selectedOption != null) { onConfirm.accept(selectedOption); } } }