117 lines
3.8 KiB
Java
117 lines
3.8 KiB
Java
package ch.zhaw.gartenverwaltung;
|
|
|
|
import ch.zhaw.gartenverwaltung.bootstrap.AppLoader;
|
|
import ch.zhaw.gartenverwaltung.bootstrap.Inject;
|
|
import ch.zhaw.gartenverwaltung.types.HardinessZone;
|
|
import javafx.event.ActionEvent;
|
|
import javafx.fxml.FXML;
|
|
import javafx.fxml.Initializable;
|
|
import javafx.scene.control.*;
|
|
import javafx.scene.image.Image;
|
|
import javafx.scene.image.ImageView;
|
|
|
|
import java.io.IOException;
|
|
import java.net.URL;
|
|
import java.util.Objects;
|
|
import java.util.ResourceBundle;
|
|
|
|
/**
|
|
* Controller class for the Settings.fxml file
|
|
*/
|
|
public class SettingsController implements Initializable {
|
|
Settings settings = Settings.getInstance();
|
|
|
|
@Inject
|
|
AppLoader appLoader;
|
|
@FXML
|
|
private ComboBox<HardinessZone> selectHardinessZone_comboBox;
|
|
|
|
@FXML
|
|
private CheckBox showTutorial_checkBox;
|
|
|
|
@FXML
|
|
private Button location_button;
|
|
|
|
@FXML
|
|
private Label location_label;
|
|
|
|
/**
|
|
* open dialog to set location
|
|
* @param event event
|
|
* @throws IOException exception
|
|
*/
|
|
@FXML
|
|
void setLocation(ActionEvent event) throws IOException {
|
|
openTextFieldDialog();
|
|
}
|
|
|
|
/**
|
|
* save selected values to {@link Settings}
|
|
*/
|
|
public void saveSettings() {
|
|
settings.setShowTutorial(showTutorial_checkBox.isSelected());
|
|
settings.setCurrentHardinessZone(selectHardinessZone_comboBox.getValue());
|
|
}
|
|
|
|
/**
|
|
* save default values form {@link Settings}
|
|
* @param location location
|
|
* @param resources resources
|
|
*/
|
|
@Override
|
|
public void initialize(URL location, ResourceBundle resources) {
|
|
showTutorial_checkBox.setSelected(settings.getShowTutorial());
|
|
selectHardinessZone_comboBox.getItems().addAll(HardinessZone.values());
|
|
selectHardinessZone_comboBox.setValue(settings.getCurrentHardinessZone());
|
|
setIconToButton(location_button, "locationIcon.png");
|
|
location_label.setText(settings.getLocation());
|
|
}
|
|
|
|
/**
|
|
* adds icon to button
|
|
* @param button the button which get the icon
|
|
* @param iconFileName file name of icon
|
|
*/
|
|
private void setIconToButton(Button button, String iconFileName) {
|
|
Image img = new Image(String.valueOf(getClass().getResource("icons/" + iconFileName)));
|
|
ImageView imageView = new ImageView(img);
|
|
imageView.setFitHeight(20);
|
|
imageView.setPreserveRatio(true);
|
|
button.setGraphic(imageView);
|
|
}
|
|
|
|
/**
|
|
* opens Dialog to set exception
|
|
* @throws IOException exception
|
|
*/
|
|
private void openTextFieldDialog() throws IOException {
|
|
Dialog<String> dialog = new Dialog<>();
|
|
dialog.setTitle("Set Location of your Garden");
|
|
dialog.setHeaderText("set Location of your Garden!");
|
|
dialog.setResizable(false);
|
|
|
|
DialogPane dialogPane = dialog.getDialogPane();
|
|
|
|
dialogPane.getStylesheets().add(
|
|
Objects.requireNonNull(getClass().getResource("bootstrap/dialogStyle.css")).toExternalForm());
|
|
dialogPane.getStyleClass().add("myDialog");
|
|
|
|
ButtonType save = new ButtonType("Save", ButtonBar.ButtonData.OK_DONE);
|
|
dialogPane.getButtonTypes().addAll(save, ButtonType.CANCEL);
|
|
|
|
if (appLoader.loadPaneToDialog("TextFieldFormular.fxml", dialogPane) instanceof TextFieldFormularController controller) {
|
|
controller.setDescription_label("Set");
|
|
controller.setValueTextArea(settings.getLocation());
|
|
controller.initSaveButton((Button) dialogPane.lookupButton(save));
|
|
|
|
dialog.setResultConverter(button -> button.equals(save) ? controller.getValue() : null);
|
|
|
|
dialog.showAndWait()
|
|
.ifPresent(string -> {
|
|
settings.setLocation(string);
|
|
location_label.setText(settings.getLocation());
|
|
});
|
|
}
|
|
}
|
|
}
|