diff --git a/src/Client/src/main/java/greenify/client/controller/CalculatorController.java b/src/Client/src/main/java/greenify/client/controller/CalculatorController.java index ac525dd..3a25c06 100644 --- a/src/Client/src/main/java/greenify/client/controller/CalculatorController.java +++ b/src/Client/src/main/java/greenify/client/controller/CalculatorController.java @@ -10,6 +10,7 @@ import javafx.scene.control.Label; import javafx.scene.control.Slider; import javafx.scene.control.TextField; import javafx.scene.layout.AnchorPane; +import javafx.util.StringConverter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -18,6 +19,7 @@ public class CalculatorController { @Autowired UserService userService; + //navigation panes @FXML private AnchorPane getStartedPane; @FXML @@ -28,6 +30,8 @@ public class CalculatorController { private AnchorPane foodPane; @FXML private AnchorPane shoppingPane; + + //'get started' pane @FXML private Slider peopleInHouseholdSlider; @FXML @@ -38,6 +42,7 @@ public class CalculatorController { private Label annualIncomeLabel; @FXML private Button saveButton; + //travel pane @FXML private TextField publicTransitField; @@ -62,14 +67,23 @@ public class CalculatorController { @FXML private Label carTravelElectricLabel; + //home pane + @FXML + private Slider cleanEnergyPurchasedSlider; + @FXML + private Label cleanEnergyPurchasedLabel; + @FXML + private Slider waterUsageSlider; + @FXML + private Label waterUsageLabel; + /** * initializes the window, performs some actions before loading all other things. - * it sets the sliders to snap to the ticks - * it adds listeners to all the sliders for updating the label next to them + * it sets the sliders to snap to the ticks. + * it adds listeners to all the sliders for updating the label they are associated with. */ public void initialize() { peopleInHouseholdSlider.setSnapToTicks(true); - annualIncomeSlider.setSnapToTicks(true); //add listener to slider for amount of people in household peopleInHouseholdSlider.valueProperty().addListener(new ChangeListener() { @@ -88,17 +102,83 @@ public class CalculatorController { } }); - addSliderListenerCarUsage(carTravelGasolineSlider, carTravelGasolineLabel); - addSliderListenerCarUsage(carTravelDieselSlider, carTravelDieselLabel); - addSliderListenerCarUsage(carTravelElectricSlider, carTravelElectricLabel); + addSliderListenerCarUsage(carTravelGasolineSlider, carTravelGasolineLabel, " km/L"); + addSliderListenerCarUsage(carTravelDieselSlider, carTravelDieselLabel, " km/L"); + addSliderListenerCarUsage(carTravelElectricSlider, carTravelElectricLabel, " km/Le"); + + cleanEnergyPurchasedSlider.valueProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, + Number oldValue, Number newValue) { + cleanEnergyPurchasedLabel.setText(newValue.intValue() + " %"); + } + }); + + waterUsageSlider.valueProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, + Number oldValue, Number newValue) { + waterUsageLabel.setText(newValue.intValue() + "% of similar households"); + } + }); +// addLabelFormatterToSlider(waterUsageSlider); + + + + } - private void addSliderListenerCarUsage(Slider slider, Label label) { + /** + * Adds a label formatter to the given slider. + * sets the tick labels to be either 0, 1x, 2x or 3x. + * @param slider the slider to change the tick labels of. + */ + private void addLabelFormatterToSlider(Slider slider) { + slider.setLabelFormatter(new StringConverter() { + @Override + public String toString(Double object) { + if (object < 0.5) { + return "0"; + } + if (object < 1.5) { + return "1x"; + } + if (object < 2.5) { + return "2x"; + } + return "3x"; + } + + @Override + public Double fromString(String string) { + switch (string) { + case "0": + return 0d; + case "1x": + return 1d; + case "2x": + return 2d; + case "3x": + return 3d; + + default: + return 3d; + } + } + }); + } + + /** + * adds the listener to the given slider and displays it's output on a given label. + * @param slider the slider to attach the listener to. + * @param label the label to display the slider output on. + */ + private void addSliderListenerCarUsage(Slider slider, Label label, String unit) { slider.valueProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Number oldValue, Number newValue) { - label.setText(newValue.intValue() + "L/km"); + label.setText(newValue.intValue() + unit); } }); } diff --git a/src/Client/src/main/resources/fxml/calculator.fxml b/src/Client/src/main/resources/fxml/calculator.fxml index 44bec69..428865e 100644 --- a/src/Client/src/main/resources/fxml/calculator.fxml +++ b/src/Client/src/main/resources/fxml/calculator.fxml @@ -1,16 +1,19 @@ - - - - - - - - - + + + + + + + + + + + + - + @@ -104,14 +107,14 @@ - + - +