Merge branch 'Develop_GUI_further' into master

# Conflicts:
#	src/.idea/workspace.xml
#	src/Client/src/main/java/greenify/client/controller/DashBoardController.java
#	src/Client/src/main/java/greenify/client/controller/UserController.java
#	src/Client/src/main/java/greenify/client/rest/UserService.java
#	src/Server/src/main/java/greenify/server/data/model/User.java
#	src/Server/src/main/java/greenify/server/data/repository/UserRepository.java
#	src/Server/src/main/java/greenify/server/rest/UserController.java
#	src/Server/src/main/java/greenify/server/service/UserService.java

resolved conflicts manually, used the ones from 'Develop_GUI_further'
This commit is contained in:
Sem van der Hoeven
2019-03-17 17:52:25 +01:00
18 changed files with 213 additions and 323 deletions

View File

@@ -6,13 +6,10 @@ import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller
public class DashBoardController {
@Autowired
UserService userService;
private int count = 0;
@@ -25,19 +22,41 @@ public class DashBoardController {
public Button dashboardButton;
public Button activitiesButton;
public Button userButton;
public Button veganMealButton;
public Label counter;
public Label scoreField;
//activities buttons
@FXML
public Button veganMealButton;
public Button localProduceButton;
public Button bikeButton;
public Button publicTransportButton;
public Button temperatureButton;
public Button solarPanelButton;
//activities counters
public Label veganMealCounter;
public Label localProduceCounter;
public Label bikeCounter;
public Label publicTransportCounter;
public Label temperatureCounter;
public Label solarPanelCounter;
/**
* displays the dashboard pane.
* @param event the event (clicking the button)
*/
public void displayDashboard(ActionEvent event) {
System.out.println("display dashboard");
// UserService service = new UserService();
// UserDTO user = service.getName(null);
// String name = user.getName();
// welcomebacktext.setText("Welcome back, " + name);
dashboardPane.setVisible(true);
userPane.setVisible(false);
activitiesPane.setVisible(false);
}
/**
@@ -68,9 +87,10 @@ public class DashBoardController {
*/
public void addVeganMeal(ActionEvent event) {
count++;
counter.setText("Count: " + count);
System.out.println(userService);
userService.addVeganMeal(userService.currentUser.getId(), userService.currentUser.getName());
veganMealCounter.setText("Count: " + count);
UserService service = new UserService();
service.addVeganMeal(null, null);
System.out.println("Vegetarian meal is added");
}
}

View File

@@ -33,7 +33,7 @@ public class RegisterWindowController {
*/
@FXML
public void handleSignUpButton(ActionEvent event) {
//set the window to the current window (for displaying the alerts)
//set the window to the current window (for displaying the alerts)
Window owner = signupButton.getScene().getWindow();
//check if the username field is empty
if (userNameText.getText().isEmpty()) {

View File

@@ -1,6 +1,5 @@
package greenify.client.controller;
import greenify.client.Application;
import greenify.client.rest.UserService;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
@@ -65,9 +64,13 @@ public class UserController {
* @author sem
*/
public void openDashboard() throws IOException {
Parent dash = Application.load (this.getClass().getClassLoader().getResource("fxml/dashboard.fxml"));
Parent dash = FXMLLoader.load(
this.getClass().getClassLoader().getResource("fxml/dashboard.fxml")
);
Scene scene = new Scene(dash);
scene.getStylesheets().add(getClass().getClassLoader().getResource("stylesheets/dashboardStyle.css").toExternalForm());
scene.getStylesheets().add(getClass()
.getClassLoader()
.getResource("stylesheets/dashboardStyle.css").toExternalForm());
Stage appStage = new Stage();
appStage.setScene(scene);
appStage.show();
@@ -94,14 +97,22 @@ public class UserController {
}
}
public void handleRegisterButtonAction(ActionEvent event) throws Exception{
/**
* handles the click of the 'sign up' button.
* opens a new stage where the user can register.
* @param event the click of the button
* @throws Exception an exception if the fxml file is not found
*/
public void handleRegisterButtonAction(ActionEvent event) throws Exception {
//load the fxml file
Parent registerWindow = Application.load (this.getClass().getClassLoader().getResource("fxml/RegisterWindow.fxml"));
Parent registerWindow = FXMLLoader.load(
this.getClass().getClassLoader().getResource("fxml/RegisterWindow.fxml")
);
//make the window use the scene
Scene registerScene = new Scene(registerWindow);
Scene registerscene = new Scene(registerWindow);
Stage registerStage = new Stage();
//open the window
registerStage.setScene(registerScene);
registerStage.setScene(registerscene);
registerStage.setTitle("Enter register credentials");
registerStage.show();
}

View File

@@ -4,19 +4,19 @@ import greenify.common.UserDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
@Service
public class UserService {
@Autowired
RestTemplate restTemplate;
public UserDTO currentUser;
@Bean
RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
@@ -26,8 +26,9 @@ public class UserService {
* registers the user.
* @param name the username of the user
* @param password the password of the user
* @return a userDTO
* @return a built userDTO with the required information
*/
@SuppressWarnings("Duplicates")
public UserDTO registerUser(String name, String password) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
@@ -36,17 +37,16 @@ public class UserService {
.queryParam("password", password);
HttpEntity<?> entity = new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
UserDTO result = this.restTemplate.getForObject(builder.build().encode().toUri(), UserDTO.class);
this.currentUser = result;
return result;
return this.restTemplate.getForObject(builder.build().encode().toUri(), UserDTO.class);
}
/**
* sign ins the user.
* logd the user in.
* @param name the username of the user
* @param password the password of the user
* @return a userDTO
* @return a built userDTO with the required information
*/
@SuppressWarnings("Duplicates")
public UserDTO loginUser(String name, String password) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
@@ -55,17 +55,16 @@ public class UserService {
.queryParam("password", password);
HttpEntity<?> entity = new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
UserDTO result = this.restTemplate.getForObject(builder.build().encode().toUri(), UserDTO.class);
this.currentUser = result;
return result;
return this.restTemplate.getForObject(builder.build().encode().toUri(), UserDTO.class);
}
/**
* a user adds vegan meal.
* adds a vegetarian meal to the user.
* @param id the id of the user
* @param name the username of the user
* @return a userDTO
* @return a built userDTO with the required information
*/
@SuppressWarnings("Duplicates")
public UserDTO addVeganMeal(Long id, String name) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
@@ -76,4 +75,20 @@ public class UserService {
System.out.println(builder.build().encode().toUri());
return this.restTemplate.getForObject(builder.build().encode().toUri(), UserDTO.class);
}
/**
* gets the username from the user.
* @param id the id of the user
* @return a UserDTO with the required information
*/
@SuppressWarnings("Duplicates")
public UserDTO getName(Long id) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/getUsername")
.queryParam("id", id);
HttpEntity<?> entity = new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
return this.restTemplate.getForObject(builder.build().encode().toUri(), UserDTO.class);
}
}

View File

@@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.shape.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.shape.Line?>
<?import javafx.scene.text.*?>
<AnchorPane prefHeight="602.0" prefWidth="934.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.DashBoardController">
<children>
<AnchorPane fx:id="menuBar" prefHeight="603.0" prefWidth="216.0" style="-fx-background-color: #5a635c;">
@@ -35,21 +39,84 @@
</children></AnchorPane>
<AnchorPane fx:id="activitiesPane" layoutX="214.0" prefHeight="603.0" prefWidth="711.0" visible="false">
<children>
<Text layoutX="101.0" layoutY="74.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Available Activities" AnchorPane.leftAnchor="60.0" AnchorPane.topAnchor="40.0">
<Text fill="#002c0c" layoutX="101.0" layoutY="74.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Available Activities" AnchorPane.leftAnchor="60.0" AnchorPane.topAnchor="40.0">
<font>
<Font size="30.0" />
</font>
</Text>
<Button fx:id="veganMealButton" layoutX="60.0" layoutY="116.0" mnemonicParsing="false" style="-fx-background-color: #009623; -fx-border-radius: 25px;" onAction="#addVeganMeal" text="Add a vegetarian meal" textFill="#e0ffe1">
<font>
<Font size="14.0" />
</font>
</Button>
<Label fx:id="counter" layoutX="288.0" layoutY="110.0" prefHeight="44.0" prefWidth="115.0" text="Count: ">
<font>
<Font size="25.0" />
</font>
</Label>
<Pane layoutX="60.0" layoutY="93.0" prefHeight="471.0" prefWidth="291.0" style="-fx-background-color: #f4fff4;">
<children>
<Button fx:id="veganMealButton" layoutX="60.0" layoutY="55.0" mnemonicParsing="false" onAction="#addVeganMeal" style="-fx-background-color: #009623; -fx-border-radius: 25px;" text="Eating a vegetarian meal" textFill="#e0ffe1">
<font>
<Font size="14.0" />
</font>
</Button>
<Button fx:id="localProduceButton" layoutX="71.0" layoutY="100.0" mnemonicParsing="false" style="-fx-background-color: #009623; -fx-border-radius: 25px;" text="Buying local produce" textFill="#e0ffe1">
<font>
<Font size="14.0" />
</font>
</Button>
<Button fx:id="bikeButton" layoutX="48.0" layoutY="145.0" mnemonicParsing="false" style="-fx-background-color: #009623; -fx-border-radius: 25px;" text="Using a bike instead of a car" textFill="#e0ffe1">
<font>
<Font size="14.0" />
</font>
</Button>
<Button fx:id="publicTransportButton" layoutX="18.0" layoutY="190.0" mnemonicParsing="false" style="-fx-background-color: #009623; -fx-border-radius: 25px;" text="Using public transport instead of a car" textFill="#e0ffe1">
<font>
<Font size="14.0" />
</font>
</Button>
<Button fx:id="temperatureButton" layoutX="31.0" layoutY="235.0" mnemonicParsing="false" style="-fx-background-color: #009623; -fx-border-radius: 25px;" text="Lowering your home temperature" textFill="#e0ffe1">
<font>
<Font size="14.0" />
</font>
</Button>
<Button fx:id="solarPanelButton" layoutX="68.0" layoutY="280.0" mnemonicParsing="false" style="-fx-background-color: #009623; -fx-border-radius: 25px;" text="Installing solar panels" textFill="#e0ffe1">
<font>
<Font size="14.0" />
</font>
</Button>
</children>
</Pane>
<Pane layoutX="372.0" layoutY="93.0" prefHeight="471.0" prefWidth="291.0" style="-fx-background-color: #f4fff4;">
<children>
<Text layoutX="78.0" layoutY="37.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Activities done">
<font>
<Font size="21.0" />
</font>
</Text>
<Label fx:id="veganMealCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="88.0" layoutY="55.0" prefHeight="30.0" prefWidth="115.0" text="0">
<font>
<Font size="18.0" />
</font>
</Label>
<Label fx:id="localProduceCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="88.0" layoutY="100.0" prefHeight="30.0" prefWidth="115.0" text="0">
<font>
<Font size="18.0" />
</font>
</Label>
<Label fx:id="bikeCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="88.0" layoutY="145.0" prefHeight="30.0" prefWidth="115.0" text="0">
<font>
<Font size="18.0" />
</font>
</Label>
<Label fx:id="publicTransportCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="88.0" layoutY="190.0" prefHeight="30.0" prefWidth="115.0" text="0">
<font>
<Font size="18.0" />
</font>
</Label>
<Label fx:id="temperatureCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="88.0" layoutY="235.0" prefHeight="30.0" prefWidth="115.0" text="0">
<font>
<Font size="18.0" />
</font>
</Label>
<Label fx:id="solarPanelCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="88.0" layoutY="280.0" prefHeight="30.0" prefWidth="115.0" text="0">
<font>
<Font size="18.0" />
</font>
</Label>
</children>
</Pane>
</children></AnchorPane>
<AnchorPane fx:id="userPane" layoutX="215.0" layoutY="-1.0" prefHeight="603.0" prefWidth="711.0" visible="false">
<children>