overhaul gui icons + settings

This commit is contained in:
giavaphi
2022-11-20 17:39:18 +01:00
parent bfe3fcfb79
commit e96280cd0c
18 changed files with 198 additions and 17 deletions
@@ -14,6 +14,7 @@ import javafx.fxml.FXML;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
@@ -72,6 +73,9 @@ public class CropDetailController {
@FXML
private Label spacing_label;
@FXML
private Button editTaskList_button;
@FXML
void editTaskList() {
@@ -114,6 +118,9 @@ public class CropDetailController {
} catch (HardinessZoneNotSetException | IOException e) {
throw new PlantNotFoundException();
}
setIconToButton(editTaskList_button, "editIcon.png");
setIconToButton(area_button, "areaIcon.png");
setIconToButton(location_button, "locationIcon.png");
}
private void createTaskLists(Crop crop) {
@@ -149,4 +156,17 @@ public class CropDetailController {
pests_vbox.getChildren().addAll(label, hBox);
}
}
/**
* 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);
}
}
@@ -4,9 +4,12 @@ import ch.zhaw.gartenverwaltung.bootstrap.AfterInject;
import ch.zhaw.gartenverwaltung.bootstrap.AppLoader;
import ch.zhaw.gartenverwaltung.bootstrap.ChangeViewEvent;
import ch.zhaw.gartenverwaltung.bootstrap.Inject;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Pane;
@@ -33,7 +36,10 @@ public class MainFXMLController {
private Button mySchedule_button;
@FXML
private Button plants_button;
private Button settings_button;
@FXML
private Button tutorial_button;
@FXML
void goToHome() {
@@ -54,9 +60,31 @@ public class MainFXMLController {
}
@FXML
void goToPlants() {
showPaneAsMainView("Plants.fxml");
styleChangeButton(plants_button);
public void openSettings(ActionEvent actionEvent) throws IOException {
Dialog<ButtonType> dialog = new Dialog<>();
dialog.setTitle("Settings");
dialog.setHeaderText("Settings");
dialog.setResizable(false);
DialogPane dialogPane = dialog.getDialogPane();
ButtonType saveSettings = new ButtonType("Save", ButtonBar.ButtonData.OK_DONE);
dialogPane.getButtonTypes().addAll(saveSettings, ButtonType.CANCEL);
if (appLoader.loadPaneToDialog("Settings.fxml", dialogPane) instanceof SettingsController controller) {
dialog.showAndWait()
.ifPresent(button -> {
if (button.equals(saveSettings)) {
controller.saveSettings();
}
});
}
}
public void goToTutorial(ActionEvent actionEvent) {
//showPaneAsMainView("Tutorial.fxml");
styleChangeButton(tutorial_button);
}
/**
@@ -100,11 +128,32 @@ public class MainFXMLController {
public void init() {
try {
preloadPanes();
showPaneAsMainView("Home.fxml");
styleChangeButton(home_button);
showPaneAsMainView("MyGarden.fxml");
styleChangeButton(myGarden_button);
} catch (IOException e) {
LOG.log(Level.SEVERE, "Failed to load FXML-Pane!", e);
}
setIconToButton(home_button, "homeIcon.png");
setIconToButton(settings_button, "settingsIcon.png");
Settings.getInstance().getShowTutorialProperty().addListener((observable, oldValue, newValue) -> {
tutorial_button.setVisible(newValue);
});
tutorial_button.setVisible(Settings.getInstance().getShowTutorial());
}
/**
* 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);
}
}
@@ -17,6 +17,7 @@ import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
@@ -43,6 +44,8 @@ public class MyGardenController {
public AnchorPane myGardenRoot;
@FXML
private VBox myPlants_vbox;
@FXML
private Button addPlant_button;
@AfterInject
@SuppressWarnings("unused")
@@ -59,6 +62,7 @@ public class MyGardenController {
} catch (HardinessZoneNotSetException | IOException e) {
LOG.log(Level.SEVERE, "Could not update view of croplist!", e);
}
setIconToButton(addPlant_button, "addIcon.png");
}
@FXML
@@ -91,8 +95,10 @@ public class MyGardenController {
label.setMaxWidth(2000);
HBox.setHgrow(label, Priority.ALWAYS);
Button details = new Button("Details");
Button delete = new Button("delete");
Button details = new Button("");
Button delete = new Button("");
setIconToButton(details, "detailsIcon.png");
setIconToButton(delete, "deleteIcon.png");
details.setOnAction(getGoToCropDetailEvent(crop));
delete.setOnAction(getDeleteCropEvent(crop));
@@ -100,6 +106,19 @@ public class MyGardenController {
return hBox;
}
/**
* 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);
}
private EventHandler<ActionEvent> getGoToCropDetailEvent(Crop crop) {
return (event) -> {
try {
@@ -1,10 +1,13 @@
package ch.zhaw.gartenverwaltung;
import ch.zhaw.gartenverwaltung.types.HardinessZone;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
public class Settings {
private HardinessZone currentHardinessZone = HardinessZone.ZONE_8A;
private static Settings instance;
private final BooleanProperty showTutorial = new SimpleBooleanProperty(false);
static {
instance = new Settings();
@@ -23,4 +26,16 @@ public class Settings {
public void setCurrentHardinessZone(HardinessZone currentHardinessZone) {
this.currentHardinessZone = currentHardinessZone;
}
public void setShowTutorial (boolean showTutorial) {
this.showTutorial.setValue(showTutorial);
}
public BooleanProperty getShowTutorialProperty() {
return this.showTutorial;
}
public boolean getShowTutorial() {
return this.showTutorial.get();
}
}
@@ -0,0 +1,40 @@
package ch.zhaw.gartenverwaltung;
import ch.zhaw.gartenverwaltung.types.HardinessZone;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import java.net.URL;
import java.util.ResourceBundle;
public class SettingsController implements Initializable {
Settings settings = Settings.getInstance();
@FXML
private ComboBox<HardinessZone> selectHardinessZone_comboBox;
@FXML
private CheckBox showTutorial_checkBox;
/**
* 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());
}
}