package ui; import controller.Controller; import controller.SettingsController; import javafx.application.Platform; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.concurrent.Task; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.control.ScrollBar; import javafx.stage.DirectoryChooser; import javafx.stage.FileChooser; import javafx.stage.Stage; import javax.swing.*; import java.io.File; import java.io.IOException; public class SettingsWindow { @FXML private CheckBox holeCheckBox; @FXML private ScrollBar touchscreenSlider; @FXML private Label touchscreenLabel; @FXML private ScrollBar fingerSlider; @FXML private Label fingerLabel; @FXML private Button scadPath; private static SettingsWindow window; private Stage stage; public SettingsWindow() { window = this; } public static SettingsWindow getWindow() { return window; } protected void setUpListener() { holeCheckBox.setSelected(Controller.getC().getFill()); touchscreenSlider.setValue(Controller.getC().getSizeScreen() * 10); touchscreenScrolled(); fingerSlider.setValue(Controller.getC().getSizeFinger() * 10); fingerScrolled(); String s = Controller.getC().getOpenSCADPath().toString(); scadPath.setText(Controller.getC().getOpenSCADPath().toString()); touchscreenSlider.valueProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Number oldValue, Number newValue) { touchscreenScrolled(); } }); fingerSlider.valueProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Number oldValue, Number newValue) { fingerScrolled(); } }); } @FXML protected void fillHoleChecked() { Controller.getC().setFill(holeCheckBox.isSelected()); } @FXML protected void touchscreenScrolled() { Controller.getC().setSizeScreen(Math.round(touchscreenSlider.getValue())/10f); touchscreenLabel.setText("Conductive dot diameter touchscreen: "+ Math.round(touchscreenSlider.getValue())/10f+"mm"); } @FXML protected void fingerScrolled() { Controller.getC().setSizeFinger(Math.round(fingerSlider.getValue())/10f); fingerLabel.setText("Conductive dot diameter finger: "+ Math.round(fingerSlider.getValue())/10f +"mm"); } @FXML protected void pathClicked() { Task task = new Task() { @Override protected Void call() throws Exception { DirectoryChooser chooser = new DirectoryChooser(); Platform.runLater(() -> { File file = chooser.showDialog(stage); if (file != null) { Controller.getC().setOpenSCADPath(file.toPath()); Platform.runLater(() -> scadPath.setText(file.toPath().toString())); } }); /* JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.showOpenDialog(null); if (chooser.getSelectedFile() != null && chooser.getSelectedFile().isDirectory()) { Controller.getC().setOpenSCADPath(chooser.getSelectedFile().toPath()); Platform.runLater(() -> scadPath.setText(chooser.getSelectedFile().toPath().toString())); }*/ return null; } }; new Thread(task).start(); } @FXML protected void saveClicked() { SettingsController.saveSettings(); stage.close(); } @FXML protected void cancelSettings() { File file = null; try { file = new File(new File( "." ).getCanonicalPath() + File.separator + "settings.ini"); } catch (IOException e) { e.printStackTrace(); } if (file.exists()) SettingsController.loadSettings(); stage.close(); } public void setStage(Stage stage) { this.stage = stage; } }