package settings; import java.io.File; import java.net.URL; import java.util.ResourceBundle; import application.FXController; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.RadioButton; import javafx.scene.control.Toggle; import javafx.scene.control.ToggleGroup; import javafx.scene.text.Text; import javafx.stage.DirectoryChooser; import javafx.stage.Stage; public class SettingController implements Initializable{ @FXML private Button fileChooser; @FXML private Text directoryText; @FXML private RadioButton highQualityRadio; @FXML private RadioButton lowQualityRadio; @FXML private RadioButton VBRQualityRadio; private File selectedDirectory; private final ToggleGroup group = new ToggleGroup(); @FXML private void handleDirectory(ActionEvent event) { DirectoryChooser directoryChooser = new DirectoryChooser(); selectedDirectory = directoryChooser.showDialog(null); if(selectedDirectory == null){ directoryText.setText("No Directory selected"); }else{ directoryText.setText(selectedDirectory.getAbsolutePath()); } } @FXML private void handleAccept(ActionEvent event) { if(selectedDirectory != null) { UserPreferences.setDirectory(selectedDirectory.getAbsolutePath()); } Stage stage = (Stage) fileChooser.getScene().getWindow(); stage.close(); } @FXML private void handleClose(ActionEvent event) { Stage stage = (Stage) fileChooser.getScene().getWindow(); stage.close(); } @FXML private void onToggleHandle(ActionEvent event) { group.selectedToggleProperty().addListener((ObservableValue<? extends Toggle> ov, Toggle t, Toggle t1) -> { if(group.selectedToggleProperty().toString().contains("High")) { UserPreferences.setQuality("high"); } else if (group.selectedToggleProperty().toString().contains("Low")) { UserPreferences.setQuality("low"); } else { UserPreferences.setQuality("VBR"); } }); } @Override public void initialize(URL location, ResourceBundle resources) { directoryText.setText(FXController.folderDirectory); highQualityRadio.setToggleGroup(group); lowQualityRadio.setToggleGroup(group); VBRQualityRadio.setToggleGroup(group); switch (FXController.qualityLevel) { case "high": highQualityRadio.fire(); break; case "low": lowQualityRadio.fire(); break; default: VBRQualityRadio.fire(); break; } } }