393 Commits

Author SHA1 Message Date
Merel Steenbergen
dfb65131e2 Merge branch 'Test/common' into 'master'
Add/package in client to make code coverage clearer.

See merge request cse1105/2018-2019/oopp-group-43/template!94
2019-04-15 12:40:21 +00:00
Merel Steenbergen
6faa5edd57 FIX::Checkstyle error.java 2019-04-15 12:38:57 +00:00
Ceren Ugurlu
2f2a9ba9fc Replace coverage report 2019-04-15 12:34:30 +00:00
Mika Wauben
533a5e9631 Merge branch 'Update/readme' into 'master'
UPDATE:: screenshots and 'getting started'

See merge request cse1105/2018-2019/oopp-group-43/template!93
2019-04-15 12:27:04 +00:00
Merel Steenbergen
f31449508e ADD::Package for features to make test coverage clearer 2019-04-15 14:24:20 +02:00
Sem van der Hoeven
b266160e93 ADD::added animations to buttons on friends pane 2019-04-15 14:17:22 +02:00
Merel Steenbergen
a44907865c ADD:: Test for ApplicationException. 2019-04-15 14:16:18 +02:00
Mika Wauben
2f1d07f008 UPDATE:: screenshots and 'getting started' 2019-04-15 12:05:02 +00:00
Sem van der Hoeven
af65142bf4 FIX::typo in extra activities 2019-04-15 14:01:23 +02:00
mlwauben
e2be018816 FIX:: explanation button 2019-04-15 11:18:19 +02:00
mlwauben
36fbcfedb8 ADD:: javadoc 2019-04-15 11:11:03 +02:00
Sem van der Hoeven
2b985344dc ADD::added button to display/hide explanation
Merge branch 'master' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template
2019-04-15 10:57:34 +02:00
Sem van der Hoeven
c030bf3a8e ADD::added button to display/hide explanation 2019-04-15 10:56:50 +02:00
Mika Wauben
8150537aa5 Merge branch 'Add/docLastSprint' into 'master'
ADD:: doc sprint7

See merge request cse1105/2018-2019/oopp-group-43/template!92
2019-04-15 08:53:08 +00:00
Mika Wauben
694d58924c ADD:: doc sprint7 2019-04-15 08:53:08 +00:00
Mika Wauben
2ed6192090 Merge branch 'add_checkstyle_coverage' into 'master'
Upload weekly reports

See merge request cse1105/2018-2019/oopp-group-43/template!91
2019-04-15 08:18:56 +00:00
cugurlu
5ef716330c Upload weekly reports 2019-04-15 08:59:48 +02:00
Mika Wauben
facebc1334 Merge branch 'Fix/LastCheckstyles' into 'master'
FIX:: checkstyle error button and missing javadoc

See merge request cse1105/2018-2019/oopp-group-43/template!90
2019-04-15 05:44:50 +00:00
Mika Wauben
84793dc924 FIX:: checkstyle error button and missing javadoc 2019-04-15 05:44:49 +00:00
Ceren Ugurlu
dd184a1398 Update build.gradle 2019-04-14 16:42:57 +00:00
Ceren Ugurlu
b959484185 Merge branch 'hashPassword' into 'master'
Add password hashing & deploy heroku

See merge request cse1105/2018-2019/oopp-group-43/template!89
2019-04-14 16:37:56 +00:00
Ceren Ugurlu
69d80b1f7c Update build.gradle 2019-04-14 16:30:36 +00:00
cugurlu
f8799c06fb Add new plugins for heroku 2019-04-14 18:28:29 +02:00
cugurlu
f20f010cb8 Remove unnecessary prints 2019-04-14 18:28:04 +02:00
cugurlu
048253a9d3 Add password hashing 2019-04-14 18:27:37 +02:00
cugurlu
8d029fe21c Fix removeFriend image 2019-04-14 18:26:54 +02:00
Mika Wauben
60f8b2a9d9 Merge branch 'Update/leaderBoards' into 'master'
Update/leader boards

See merge request cse1105/2018-2019/oopp-group-43/template!88
2019-04-13 10:38:58 +00:00
Mika Wauben
66c2b44be6 Merge branch 'master' into 'Update/leaderBoards'
# Conflicts:
#   src/Client/src/main/java/greenify/client/controller/CalculatorController.java
#   src/Client/src/main/resources/fxml/dashboard.fxml
#   src/Server/src/main/java/greenify/server/service/CalculatorService.java
2019-04-13 10:38:58 +00:00
Ceren Ugurlu
f0d6b04e30 Merge branch 'removeFriend' into 'master'
Add remove friend

See merge request cse1105/2018-2019/oopp-group-43/template!87
2019-04-11 16:43:59 +00:00
cugurlu
6084338525 Fix checkstyle errors 2019-04-11 14:24:07 +02:00
cugurlu
9006588eed Add new methods to controllers to remove a friend 2019-04-11 14:23:40 +02:00
cugurlu
367daa1eff Edit dashboard.fxml 2019-04-11 14:22:58 +02:00
cugurlu
a2af22facb Add fxml file and image for removeFriend property 2019-04-11 14:22:41 +02:00
cugurlu
abdaa14679 Fix small problem in AchievementService 2019-04-11 14:22:13 +02:00
Merel Steenbergen
8c5f177704 Merge branch 'Add/docs' into 'master'
Add final report and agenda

See merge request cse1105/2018-2019/oopp-group-43/template!86
2019-04-11 09:53:15 +00:00
Merel Steenbergen
00718a1cf2 Update 20190408_agenda 2019-04-11 09:49:29 +00:00
Merel Steenbergen
e73c419c55 ADD::Agenda for 08-04-2019 that I forgot to upload, sorry. 2019-04-11 09:49:05 +00:00
Merel Steenbergen
f4cc37a34b Upload final report 2019-04-11 09:45:49 +00:00
Merel Steenbergen
461b3bd329 Merge branch 'Feature/explanation' into 'master'
Explanation in first calculator screen

See merge request cse1105/2018-2019/oopp-group-43/template!84
2019-04-10 20:43:41 +00:00
Sem van der Hoeven
f56a959720 Merge branch 'add/more_animations' into 'master'
Add/more animations

See merge request cse1105/2018-2019/oopp-group-43/template!85
2019-04-10 19:25:41 +00:00
Merel Steenbergen
796deadb8c Merge branch 'Feature/delete_my_account' into 'master'
Feature/delete my account

See merge request cse1105/2018-2019/oopp-group-43/template!83
2019-04-10 14:20:49 +00:00
Merel Steenbergen
2b1c6cf780 FIX::Import that gave a CheckStyle error.java 2019-04-10 13:40:39 +00:00
Merel Steenbergen
eed4f7903d FIX::Small typing error in method name.java 2019-04-10 13:40:08 +00:00
Sem van der Hoeven
377db10f13 EDIT::changed color of register window button 2019-04-10 12:24:11 +02:00
Sem van der Hoeven
50fb2078b0 EDIT::fixed checkstyle import 2019-04-10 12:22:23 +02:00
Sem van der Hoeven
123a767a75 ADD::added style to button in register window 2019-04-10 12:19:31 +02:00
Sem van der Hoeven
e0e6744c95 EDIT::removed lines from background of vegetarian meals achievement picture 2019-04-10 12:07:07 +02:00
Sem van der Hoeven
cfc238af73 ADD::Added animations to switching panes in extra activities 2019-04-10 12:04:17 +02:00
Sem van der Hoeven
78e050751f ADD::added animations to buttons in login and register screen 2019-04-10 11:49:31 +02:00
Merel Steenbergen
81f48ca0b6 FIX::Checkstyle errors 2019-04-09 17:40:26 +02:00
Merel Steenbergen
d97ae9b53a FIX::Checkstyle error 2019-04-09 17:38:44 +02:00
Merel Steenbergen
2a136b6a07 ADD::Client.UserServiceTest 2019-04-09 17:37:51 +02:00
Merel Steenbergen
080053765c ADD::server.UserControllerTest 2019-04-09 17:35:39 +02:00
Merel Steenbergen
21ab3d5b79 ADD::server.userService Tests 2019-04-09 17:30:58 +02:00
Merel Steenbergen
8e747e54be ADD::Clientside method 2019-04-09 17:03:56 +02:00
Merel Steenbergen
99899dfc88 Add serverside methods 2019-04-09 17:00:51 +02:00
Merel Steenbergen
867eae66f4 ADD::Explanation in first calculator screen 2019-04-09 16:28:17 +02:00
Mika Wauben
37d43c8247 Merge branch 'Update/activitiesPane' into 'master'
UPDATE:: activities pane (added all extra activities)

See merge request cse1105/2018-2019/oopp-group-43/template!82
2019-04-09 13:37:28 +00:00
Mika Wauben
a704522a63 UPDATE:: activities pane (added all extra activities) 2019-04-09 13:37:28 +00:00
Mika Wauben
cefc4d2b4b Merge branch 'Update/readme' into 'master'
Update/readme

See merge request cse1105/2018-2019/oopp-group-43/template!79
2019-04-09 07:30:08 +00:00
Mika Wauben
222489a316 Update/readme 2019-04-09 07:30:07 +00:00
Merel Steenbergen
4b949db919 Merge branch 'Delete/forgot_password' into 'master'
DELETE 'forgot password' button

See merge request cse1105/2018-2019/oopp-group-43/template!80
2019-04-08 14:44:30 +00:00
Sem van der Hoeven
c8cbb25f5d Merge branch 'update/notes_week9' into 'master'
Update/notes week9

See merge request cse1105/2018-2019/oopp-group-43/template!81
2019-04-08 14:19:03 +00:00
Sem van der Hoeven
5653800d47 ADD::Added notes for week 9 2019-04-08 16:15:44 +02:00
Merel Steenbergen
c8d5dd99ae DELETE 'forgot password' button 2019-04-08 15:59:23 +02:00
Sem van der Hoeven
6d7e73586f Merge branch 'master' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template
Sourcetree needed to merge this?
2019-04-08 15:52:20 +02:00
Sem van der Hoeven
12ca633461 EDIT::suppressed some duplicate warnings 2019-04-08 15:51:44 +02:00
Sem van der Hoeven
a715babcd9 ADD::added first part of notes week 9 2019-04-08 15:50:08 +02:00
Merel Steenbergen
7b6b8ead65 Merge branch 'Feature/more_hints' into 'master'
Feature/more hints

See merge request cse1105/2018-2019/oopp-group-43/template!78
2019-04-08 13:46:40 +00:00
Ceren Ugurlu
a206625082 Merge branch 'add_piechart' into 'master'
Add piechart

See merge request cse1105/2018-2019/oopp-group-43/template!77
2019-04-08 13:45:17 +00:00
Merel Steenbergen
425550c922 FIX::Uncomment something to make pipeline pass 2019-04-08 15:41:01 +02:00
Merel Steenbergen
e6ecda5471 FIX::Small merge conflict 2019-04-08 15:39:53 +02:00
Merel Steenbergen
f6f74cd2aa FIX::Checkstyle errors 2019-04-08 15:38:49 +02:00
cugurlu
d03deace57 Add new test methods 2019-04-08 15:36:42 +02:00
cugurlu
4dd02649b8 Add methods for getting the results of a user 2019-04-08 15:36:21 +02:00
cugurlu
9fd3b1cf5b Add new methods for piechart 2019-04-08 15:35:35 +02:00
Sem van der Hoeven
9fc42247da EDIT::added required values to saving co2 and using bike achievements 2019-04-08 15:33:18 +02:00
Merel Steenbergen
fb22937864 FIX::Illegal catch fix: RuntimeException to HttpClientErrorException 2019-04-08 15:32:09 +02:00
Merel Steenbergen
dc432df120 FIX::More CS errors 2019-04-08 15:31:34 +02:00
Merel Steenbergen
a6a52688f2 FIX::Checkstyle errors 2019-04-08 15:30:37 +02:00
Merel Steenbergen
ae7e36f757 ADD::Extra hints 2019-04-08 15:30:21 +02:00
Merel Steenbergen
917d3a64bb FIXX:: Checkstyle 2019-04-08 15:30:21 +02:00
Merel Steenbergen
92ff0073e8 EDIT::Change some hints and add tests 2019-04-08 15:30:21 +02:00
Sem van der Hoeven
3cc01e4f4a EDIT::added style to logout button 2019-04-08 15:02:15 +02:00
Ceren Ugurlu
7043f7253d Merge branch 'fix/sorting_bugs' into 'master'
Fix sorting bugs

See merge request cse1105/2018-2019/oopp-group-43/template!76
2019-04-08 12:37:57 +00:00
Sem van der Hoeven
83611c4ecc Merge branch 'add/activity_tooltips' into 'master'
Add/activity tooltips

See merge request cse1105/2018-2019/oopp-group-43/template!75
2019-04-08 12:36:45 +00:00
cugurlu
b99b66b87b Fix sorting errors 2019-04-08 14:34:38 +02:00
Sem van der Hoeven
3e7fbeae75 EDIT::Update .gitlab-ci.yml
undid code coverage part
2019-04-08 12:27:06 +00:00
Sem van der Hoeven
839292ad91 EDIT::Update .gitlab-ci.yml
added code coverage
2019-04-08 12:26:23 +00:00
Sem van der Hoeven
6ba21c331d FIX::fixed compileJava build failing
the last merge undid the change of this line, this should fix it
2019-04-08 14:21:20 +02:00
Sem van der Hoeven
0cda63cacb Merge branch 'add/activity_tooltips' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template into add/activity_tooltips
sourceTree needed to merge this?
2019-04-08 14:19:06 +02:00
Sem van der Hoeven
79fd69503c FIX::fixed complieJava build failing 2019-04-08 14:17:06 +02:00
Sem van der Hoeven
cbf15d9574 Merge branch 'master' into 'add/activity_tooltips'
# Conflicts:
#   src/Client/src/main/java/greenify/client/controller/DashBoardController.java
#   src/Client/src/main/java/greenify/client/controller/ExtraActivityController.java
2019-04-08 12:13:44 +00:00
Mika Wauben
8667f65e33 Merge branch 'update/doc' into 'master'
Update/doc

See merge request cse1105/2018-2019/oopp-group-43/template!74
2019-04-08 12:07:27 +00:00
Mika Wauben
544b756e70 Update/doc 2019-04-08 12:07:27 +00:00
Sem van der Hoeven
18a0973af4 EDIT::added style to tooltips and reduced delay between hovering over the achievement and the tooltip appearing
EDIT::fixed some checkstyle warnings
2019-04-08 14:00:21 +02:00
Sem van der Hoeven
9e37421d6d ADD::added tooltip texts to all achievements 2019-04-08 13:08:20 +02:00
Sem van der Hoeven
31def99398 ADD::added buttons to apply tooltips to for the activities
because you can't apply tooltips to imageviews, I added the achievement images to buttons to which you can add tooltips
2019-04-08 12:55:32 +02:00
Ceren Ugurlu
dbe6fc4e33 Delete README.md 2019-04-08 10:38:36 +00:00
Ceren Ugurlu
231c580f7a Merge branch 'connect_new_extras' into 'master'
Fix errors for new extras and upload docs

See merge request cse1105/2018-2019/oopp-group-43/template!73
2019-04-08 09:27:16 +00:00
cugurlu
7867853cdb Upload coverage report 2019-04-08 11:18:04 +02:00
cugurlu
39b108626b Upload checkstyle report 2019-04-08 11:17:49 +02:00
cugurlu
8195650226 Fix all errors for extra activities 2019-04-08 11:17:34 +02:00
cugurlu
9310674301 Fix checkstyle errors 2019-04-08 11:17:02 +02:00
Sem van der Hoeven
2025fd02cc Merge branch 'feature/localProduce_and_publicTransport' into 'master'
feature/buying local produce and using public transport

See merge request cse1105/2018-2019/oopp-group-43/template!70
2019-04-07 17:57:01 +00:00
Ceren Ugurlu
55fe2b6795 Merge branch 'develop_achievements' into 'master'
Develop achievements

See merge request cse1105/2018-2019/oopp-group-43/template!72
2019-04-07 16:00:55 +00:00
Sem van der Hoeven
b05b0ecaf7 DELETE::deleted the confirm methods for the extra activities
this should fix the build failing
2019-04-07 17:55:57 +02:00
cugurlu
e1489bda27 Update controllers for new properties of achievements 2019-04-07 15:51:27 +02:00
cugurlu
a2805c2a9f Update dashboard.fxml 2019-04-07 15:50:31 +02:00
cugurlu
16fb86c513 Update achievements in userService 2019-04-07 15:49:51 +02:00
cugurlu
1cd46940cf Add new achievement photos 2019-04-07 15:48:55 +02:00
Sem van der Hoeven
e9efdf5f24 Merge branch 'master' into 'feature/localProduce_and_publicTransport'
# Conflicts:
#   src/Client/src/main/java/greenify/client/controller/ExtraActivityController.java
#   src/Client/src/main/resources/fxml/extraActivities.fxml
2019-04-07 12:16:42 +00:00
Ceren Ugurlu
86ec4bbd7d Merge branch 'update_calculator' into 'master'
Update calculator and new tests

See merge request cse1105/2018-2019/oopp-group-43/template!71
2019-04-06 21:57:33 +00:00
cugurlu
d210e22788 Fix ButtonSkin error 2019-04-06 22:35:13 +02:00
cugurlu
1cf3af45be Add many new tests 2019-04-06 22:30:46 +02:00
cugurlu
24be00d28a Update methods for extras 2019-04-06 21:29:49 +02:00
cugurlu
e30f312c6a Update calculator methods for new changes 2019-04-06 21:26:52 +02:00
cugurlu
95d5b2b971 Fix the number of decimal points of footprints 2019-04-06 21:26:17 +02:00
Sem van der Hoeven
c0e0063465 ADD::added animations to buttons in login and register window 2019-04-06 21:05:19 +02:00
Sem van der Hoeven
61a99d47d1 ADD::added local produce and public transport sections to the extra activities section
added the panes and designated buttons

ADD::added placeholder methods for communicating adding the activities to the server
2019-04-06 20:20:01 +02:00
Sem van der Hoeven
6cbabbdf8d Merge branch 'update/achievements' into 'master'
Update/achievements

See merge request cse1105/2018-2019/oopp-group-43/template!68
2019-04-06 17:20:49 +00:00
Mika Wauben
2a873a78c9 Merge branch 'master' into 'update/achievements'
# Conflicts:
#   src/Server/src/main/java/greenify/server/service/AchievementService.java
2019-04-06 14:18:45 +00:00
mlwauben
0e546bc25c FIX:: checkstyle 2019-04-06 16:14:17 +02:00
mlwauben
4293790ece FIX:: wrong test 2019-04-06 15:42:14 +02:00
Mika Wauben
290694c5f1 Merge branch 'Feature/logoutbutton' into 'master'
ADD:: logout button

See merge request cse1105/2018-2019/oopp-group-43/template!67
2019-04-06 13:37:35 +00:00
mlwauben
eeb0fd9d57 ADD:: extra achievements and tests 2019-04-06 15:36:44 +02:00
Ceren Ugurlu
733c0c5920 Merge branch 'Test/achievement' into 'master'
Test/achievement

See merge request cse1105/2018-2019/oopp-group-43/template!66
2019-04-06 10:40:14 +00:00
mlwauben
238c00ff46 DEBUG:: logoutbutton 2019-04-06 11:05:06 +02:00
mlwauben
4433d509bb ADD:: new achievements 2019-04-06 10:33:36 +02:00
mlwauben
0f9cd14036 ADD:: line thingy above the logout button 2019-04-06 09:18:24 +02:00
mlwauben
9af14e6015 ADD:: logout button 2019-04-06 09:00:20 +02:00
Merel Steenbergen
bce08eb6f2 DELETE::Wrong import that gave an error 2019-04-05 20:40:50 +02:00
Merel Steenbergen
dcb8404ae7 ADD::Method for achievement social butterfly 2019-04-05 20:37:54 +02:00
Merel Steenbergen
82fd016590 FIX::No longer use Mockito for AchievementService in AchievementServiceTest 2019-04-05 20:30:31 +02:00
Merel Steenbergen
ccbe5968da EDIT::Finding bugs in tests and try to fix them 2019-04-05 20:21:42 +02:00
Merel Steenbergen
adb8406d4e ADD::Some tests to achievement class 2019-04-05 19:59:57 +02:00
Merel Steenbergen
9ab4439f70 FIX::Illegal catch fix: RuntimeException to HttpClientErrorException 2019-04-05 19:34:08 +02:00
Merel Steenbergen
47c46b5458 FIX::More CS errors 2019-04-05 19:20:09 +02:00
Merel Steenbergen
02253cb645 FIX::Checkstyle errors 2019-04-05 19:16:26 +02:00
Merel Steenbergen
b92e302f8b ADD::Extra hints 2019-04-05 19:11:51 +02:00
Merel Steenbergen
67b97eb331 FIXX:: Checkstyle 2019-04-05 17:08:58 +02:00
Merel Steenbergen
daa1c838b4 EDIT::Change some hints and add tests 2019-04-05 17:00:45 +02:00
Merel Steenbergen
7228252169 Merge branch 'add/add_random_hints_to_GUI' into 'master'
add/added hints to GUI

See merge request cse1105/2018-2019/oopp-group-43/template!65
2019-04-05 14:49:28 +00:00
Merel Steenbergen
27a18659f8 Merge branch 'Feature/alerts' into 'master'
Feature/alerts

See merge request cse1105/2018-2019/oopp-group-43/template!64
2019-04-05 14:49:23 +00:00
Merel Steenbergen
f2501f3624 FIX::Resolve a merge conflict with DashBoardController 2019-04-05 13:18:21 +00:00
Sem van der Hoeven
2b7d51a5ed EDIT::edited font size of random hints 2019-04-05 13:13:27 +02:00
Sem van der Hoeven
75faf4ae8c ADD:added nodes and methods to display random hints to on the GUI
ADD::added refresh button to get a new hint

EDIT::edited hints to work with the GUI
2019-04-05 13:11:17 +02:00
Sem van der Hoeven
06daa4776f ADD::added animations to buttons on dashboard screen
EDIT::changed labels of distance in activities overview to km and km/L

EDIT::made firstCalculator.fxml have the right distance units and added the new extra activities screen
2019-04-05 09:54:34 +02:00
Sem van der Hoeven
4b07aa8072 EDIT::changed achievement picture, removed trademark and added it into the code 2019-04-05 09:24:58 +02:00
Merel Steenbergen
8927b78098 FIX:: Forgot to uncomment something. Pipeline should now work 2019-04-04 21:02:06 +02:00
Merel Steenbergen
1f12291398 FIX::Import error 2019-04-04 21:00:37 +02:00
Merel Steenbergen
1684068385 FIX::More CheckStyle errors 2019-04-04 20:59:08 +02:00
Merel Steenbergen
e929680477 Merge branch 'Feature/alerts' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template into Feature/alerts 2019-04-04 20:55:10 +02:00
Merel Steenbergen
f23fc2cbea FIX::Checkstyle errors 2019-04-04 20:54:50 +02:00
Merel Steenbergen
4fa2707add FIX:: Fixed small typing error in alert 2019-04-04 18:51:04 +00:00
Merel Steenbergen
7ac5b1efda FIX:: Small bug fix, pipeline should now run 2019-04-04 20:45:10 +02:00
Merel Steenbergen
b08174b2ee ADD:: Alerts: username is now your friend and calculation saved. 2019-04-04 20:42:25 +02:00
Merel Steenbergen
04db410293 FIX::Merge conflict fix in DashBoardController 2019-04-04 20:36:37 +02:00
Merel Steenbergen
c5e7ff2884 ADD::Alert for incorrect password/username at login. 2019-04-04 20:35:02 +02:00
Merel Steenbergen
c8521feaf8 ADD:: Alert 'Footprint saved. Still has a bug.' 2019-04-04 13:26:36 +02:00
Merel Steenbergen
25a66832a5 ADD:: Alert for taken username 2019-04-04 13:26:36 +02:00
Merel Steenbergen
a55e4cecef Added class Hints, including tests 2019-04-04 13:26:35 +02:00
Merel Steenbergen
5c85c56d78 Merge branch 'Feature/alerts' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template into Feature/alerts 2019-04-04 13:23:00 +02:00
Merel Steenbergen
c79a98c57d ADD:: Alert 'Footprint saved. Still has a bug.' 2019-04-04 13:20:47 +02:00
Merel Steenbergen
81701758d7 ADD:: Alert for taken username 2019-04-04 13:20:47 +02:00
Merel Steenbergen
4b04487a25 Added class Hints, including tests 2019-04-04 13:20:47 +02:00
Sem van der Hoeven
50c27cf420 FIX::fixed checkstyle errors
Merge branch 'master' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template

# Conflicts:
#	src/Client/src/main/java/greenify/client/Hints.java
#	src/Client/src/main/java/greenify/client/controller/DashBoardController.java
#	src/Server/src/main/java/greenify/server/service/CalculatorService.java
2019-04-04 13:16:33 +02:00
Sem van der Hoeven
5526c8f467 FIX::fixed checkstyle errors 2019-04-04 13:14:03 +02:00
Mika Wauben
922a7d1fae Merge branch 'Feature/achievements' into 'master'
Feature/achievements

See merge request cse1105/2018-2019/oopp-group-43/template!63
2019-04-04 11:05:22 +00:00
Sem van der Hoeven
6ced05278b ADD::added animations to extra activities section 2019-04-04 10:43:32 +02:00
Sem van der Hoeven
9e6505dfa3 ADD::added animations to switching sections in calculator 2019-04-04 10:01:07 +02:00
Sem van der Hoeven
86f1b724c7 Merge branch 'master' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template 2019-04-04 09:27:52 +02:00
Sem van der Hoeven
90d50624f6 EDIT::added imports to dashboard.fxml 2019-04-04 09:27:09 +02:00
mlwauben
82eb5575ee FIX:: checkstyle errors (except Cyclomatic Complexity ones) 2019-04-04 08:00:47 +02:00
Mika Wauben
84154fca3a Merge branch 'master' into 'Feature/achievements'
# Conflicts:
#   src/Client/src/main/java/greenify/client/Friend.java
#   src/Client/src/main/java/greenify/client/Hints.java
#   src/Client/src/main/java/greenify/client/controller/DashBoardController.java
#   src/Client/src/main/java/greenify/client/rest/UserService.java
#   src/Client/src/main/resources/fxml/dashboard.fxml
#   src/Client/src/test/java/UserServiceTest.java
#   src/Server/src/main/java/greenify/server/data/model/User.java
#   src/Server/src/main/java/greenify/server/rest/UserController.java
#   src/Server/src/main/java/greenify/server/service/UserService.java
#   src/Server/src/test/java/greenify/server/rest/UserControllerTest.java
#   src/Server/src/test/java/greenify/server/service/UserServiceTest.java
2019-04-04 05:45:17 +00:00
mlwauben
3aad682394 FIX:: (possible) merge conficts 2019-04-03 22:05:48 +02:00
Merel Steenbergen
b5c834fc52 ADD:: Alert 'Footprint saved. Still has a bug.' 2019-04-03 21:51:35 +02:00
Merel Steenbergen
1ff84ce3d8 ADD:: Alert for taken username 2019-04-03 21:44:50 +02:00
Sem van der Hoeven
c5f7cac9db Merge branch 'add_details_extra_activities' into 'master'
add/added extra activities GUI

See merge request cse1105/2018-2019/oopp-group-43/template!62
2019-04-03 19:15:46 +00:00
Sem van der Hoeven
19fef1d4c8 FIX::resolved merge conflict and this fixed the issue where it wouldn't set the children of the extra pane
Merge branch 'master' into 'add_details_extra_activities'

# Conflicts:
#   src/Client/src/main/java/greenify/client/controller/CalculatorController.java
2019-04-03 19:11:51 +00:00
mlwauben
28f9f72f07 UPDATE:: achievement things, tests/checkstyle and it actually works now 2019-04-03 20:34:04 +02:00
Merel Steenbergen
f5250aa2a0 Merge branch 'Feature/hints' into 'master'
Added some 'Green hints'

See merge request cse1105/2018-2019/oopp-group-43/template!61
2019-04-03 18:08:09 +00:00
Sem van der Hoeven
d5af8816e9 ADD::added extra activities section to calculator
added section to calculator, and buttons to activities and dashboard to open it seperately
2019-04-03 19:32:40 +02:00
Merel Steenbergen
6a2eb27627 Merge branch 'Feature/delete_a_friend' into 'master'
Feature/remove a friend

See merge request cse1105/2018-2019/oopp-group-43/template!60
2019-04-03 14:29:36 +00:00
Merel Steenbergen
01e03782c2 Remove addFriend part from removeFriendTest from UserControllerTest.java 2019-04-03 13:40:53 +00:00
Merel Steenbergen
bb6d887036 Added class Hints, including tests 2019-04-03 15:33:26 +02:00
Merel Steenbergen
7b6457b286 ADD::RemoveFriend method and test in server.userController 2019-04-03 14:19:30 +02:00
Sem van der Hoeven
54d0537f95 EDIT::changed miles to kilometres in calculator 2019-04-03 11:52:03 +02:00
Ceren Ugurlu
b781727703 Delete suppression.xml 2019-04-01 17:54:41 +00:00
cugurlu
4c50eea99a Add meeting notes for week 8 2019-04-01 19:54:09 +02:00
Ceren Ugurlu
a38cd45e2a Merge branch 'add_weekly_reports' into 'master'
Add weekly reports

See merge request cse1105/2018-2019/oopp-group-43/template!59
2019-04-01 17:12:52 +00:00
Merel Steenbergen
e48264a667 EDIT:: Uncomment build.gradle mainClassName 2019-04-01 16:53:16 +02:00
Merel Steenbergen
12b05f3b73 ADD:: RemoveFriend method and test in client.userService 2019-04-01 16:46:01 +02:00
Merel Steenbergen
6d37b99c14 ADD:: RemoveFriend method and tests in Server.UserService 2019-04-01 16:43:10 +02:00
Merel Steenbergen
52291ac10f ADD:: Friend remove methods and tests in server.User 2019-04-01 16:36:12 +02:00
cugurlu
ae5d4a1496 Add coverage and checkstyle reports 2019-04-01 14:22:31 +02:00
Ceren Ugurlu
d7454345be Delete 20190401_checkstyle.png 2019-04-01 12:19:37 +00:00
Ceren Ugurlu
26693e8782 Merge branch 'add_savedCO2_property' into 'master'
Add co2 saved property tables and tests

See merge request cse1105/2018-2019/oopp-group-43/template!58
2019-04-01 12:14:42 +00:00
cugurlu
e78be7ac9f Add co2 saved property tables and tests 2019-04-01 13:59:54 +02:00
Merel Steenbergen
a25c5da5ac Merge branch 'add/final_report_draft' into 'master'
Add the draft of the final report

See merge request cse1105/2018-2019/oopp-group-43/template!57
2019-04-01 11:59:32 +00:00
Merel Steenbergen
5ab7deb210 Rename the draft final report 2019-04-01 11:57:52 +00:00
Merel Steenbergen
9ad503db0d ADD: Right version of the draft of the final report 2019-04-01 13:51:24 +02:00
Mika Wauben
5a412cd170 Merge branch 'fix/checkstyle' into 'master'
Fix/checkstyle

See merge request cse1105/2018-2019/oopp-group-43/template!55
2019-04-01 11:38:24 +00:00
Mika Wauben
644f466696 Merge branch 'fix/checkstyle' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template into fix/checkstyle 2019-04-01 11:38:23 +00:00
Merel Steenbergen
118ae797f5 Upload draft of the final report 2019-04-01 11:37:02 +00:00
Mika Wauben
fcaf3ddb49 Merge branch 'update/doc' into 'master'
Update/doc

See merge request cse1105/2018-2019/oopp-group-43/template!54
2019-03-31 17:45:31 +00:00
Mika Wauben
8f026a960e UPDATE:: readme, wow 4 commits for one file 2019-03-31 17:31:28 +00:00
Mika Wauben
b8bb8dc91c UPDATE:: readme, slowly getting there 2019-03-31 17:30:09 +00:00
Sem van der Hoeven
d824a3b819 EDIT::changed activities textfields to labels 2019-03-31 19:28:29 +02:00
Mika Wauben
a5dd8667b9 UPDATE:: readme because I am an idiot and didn't save my file yet ... 2019-03-31 17:27:56 +00:00
Mika Wauben
947ae660a0 UPDATE:: readme (start of the great readme) 2019-03-31 17:26:58 +00:00
Mika Wauben
c85432fb48 ADD:: agenda week8 2019-03-31 16:57:50 +00:00
Mika Wauben
f133e80ce3 Add new directory 2019-03-31 16:57:31 +00:00
Mika Wauben
97577cfd1c ADD:: backlog sprint6 2019-03-31 16:57:01 +00:00
Mika Wauben
0cfead72af Add new directory 2019-03-31 16:56:39 +00:00
Mika Wauben
c3124f509e ADD:: scrumboard sprint5 2019-03-31 16:56:24 +00:00
Mika Wauben
d484898ba1 ADD:: retrospective sprint5 2019-03-31 16:54:52 +00:00
Mika Wauben
bd225edea1 ADD:: review sprint5 2019-03-31 16:54:10 +00:00
Ceren Ugurlu
608d3ec40f Merge branch 'addActivitySummary_newTests' into 'master'
Add activity summary and new tests

See merge request cse1105/2018-2019/oopp-group-43/template!53
2019-03-31 14:12:44 +00:00
Ceren Ugurlu
c8b9b4d78f Solve the conflict 2019-03-31 13:36:21 +00:00
Sem van der Hoeven
a9f63f6fab Merge branch 'Add_extras_to_calculator' into 'master'
edit/edited back javafx imports for checkstyle

See merge request cse1105/2018-2019/oopp-group-43/template!52
2019-03-31 13:31:08 +00:00
Ceren Ugurlu
3f4e7cb9a9 Update README.md 2019-03-31 13:28:42 +00:00
Sem van der Hoeven
9f3597124d EDIT::edited back javafx imports for checkstyle 2019-03-31 15:28:08 +02:00
cugurlu
f4f79484fa Test all new methods 2019-03-31 15:27:07 +02:00
cugurlu
3b4add03ee Add new activity page properties 2019-03-31 15:26:48 +02:00
cugurlu
32c9713835 Add acitivitySummary to GUI 2019-03-31 15:26:06 +02:00
cugurlu
8e11ecbcf4 Add new methods for getInputMap from database 2019-03-31 15:25:40 +02:00
Ceren Ugurlu
9f45b1c8ac Merge branch 'Add_extras_to_calculator' into 'master'
Extra section is added to the calculator

See merge request cse1105/2018-2019/oopp-group-43/template!51
2019-03-31 13:19:54 +00:00
Sem van der Hoeven
c03538ff34 ADD::added section indicator bars to calculator
Somehow they were deleted, so I added them again. Also added to the extra section
2019-03-31 14:41:19 +02:00
Sem van der Hoeven
7805122c06 ADD::added 'extra' section to calculator
added checkboxes to add extra activities
2019-03-31 14:26:05 +02:00
Ceren Ugurlu
61ed9fc497 Merge branch 'fixBugs_addLeaderboard' into 'master'
Fix bugs & add leaderboard

See merge request cse1105/2018-2019/oopp-group-43/template!50
2019-03-31 11:07:47 +00:00
Sem van der Hoeven
85412af2a6 ADD::added style to friends table 2019-03-31 12:41:45 +02:00
cugurlu
5449c664bd Update README.md 2019-03-31 00:54:50 +01:00
cugurlu
b4a00fade2 Add new tests 2019-03-31 00:51:55 +01:00
cugurlu
cf1704e872 Connect server and client for getAllUsers, saveFootprint and getFootprint methods 2019-03-31 00:51:34 +01:00
cugurlu
383d505f52 Fix checkstyle errors and delete unused methods for high coverage 2019-03-31 00:50:21 +01:00
cugurlu
cc236c46b6 Add tests for userService 2019-03-31 00:49:16 +01:00
cugurlu
ed695f941d Add leaderboard and fix friend bugs 2019-03-31 00:47:21 +01:00
cugurlu
a41b697510 Fix calculator bugs 2019-03-31 00:45:50 +01:00
Sem van der Hoeven
ebaeff9fad EDIT::changed colour scheme of 'add friend' button 2019-03-30 19:29:49 +01:00
mlwauben
973e8aba69 UPDATE:: checkstyle fixes 2019-03-30 17:16:24 +01:00
mlwauben
7656b60fcf UPDATE:: achievements and tests 2019-03-30 16:43:24 +01:00
Ceren Ugurlu
1437bbc1bc Merge branch 'connect_friends_GUI' into 'master'
Edit GUI for friend property

See merge request cse1105/2018-2019/oopp-group-43/template!49
2019-03-30 10:58:18 +00:00
mlwauben
ca11cd3c9a DEBUG:: achievement things (tests all work now) 2019-03-30 11:29:39 +01:00
Sem van der Hoeven
0b2677fd06 ADD:added section indicators to calculator
Merge branch 'master' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template

# Conflicts:
#	src/Client/src/main/resources/fxml/calculator.fxml
2019-03-30 11:18:50 +01:00
Sem van der Hoeven
336e56bb51 ADD:: added section indicator bars to calculator 2019-03-30 11:17:12 +01:00
Ceren Ugurlu
026cd15009 Update DashBoardController.java 2019-03-30 09:36:41 +00:00
mlwauben
f5d9bd5010 UPDATE:: added achievements to user class 2019-03-30 09:25:12 +01:00
mlwauben
3d61cd061a ADD:: class of achievements list 2019-03-30 09:02:02 +01:00
mlwauben
393bfc9445 ADD:: achievement class 2019-03-30 08:23:54 +01:00
cugurlu
a64b31001a Edit dashboard for new properties 2019-03-29 18:11:39 +01:00
cugurlu
704854e8b5 Add new controller friends 2019-03-29 18:11:16 +01:00
cugurlu
25c8951530 Add fxml file for add friend page 2019-03-29 18:10:55 +01:00
cugurlu
e41f434a28 Add new class for tableView 2019-03-29 18:10:01 +01:00
cugurlu
0530fc4ddb Add new icons 2019-03-29 18:09:31 +01:00
Ceren Ugurlu
36f36d4100 Merge branch 'connect_calculator&GUI' into 'master'
Connect calculator with GUI

See merge request cse1105/2018-2019/oopp-group-43/template!48
2019-03-29 13:17:15 +00:00
cugurlu
d0beb236ea Edit to connect calculator with GUI 2019-03-29 12:47:24 +01:00
mlwauben
c62e4719ea ADD:: test fxml+controller 2019-03-28 23:11:58 +01:00
Sem van der Hoeven
a92a5b6e47 Merge branch 'finish_calculator_GUI' into 'master'
Finished calculator GUI

See merge request cse1105/2018-2019/oopp-group-43/template!47
2019-03-28 21:37:43 +00:00
Sem van der Hoeven
56bd05324c Merge branch 'finish_calculator_GUI' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template into finish_calculator_GUI
Sourcetree needed to merge this?
2019-03-28 22:35:54 +01:00
Sem van der Hoeven
fcea76f0e9 FIX::fixed checkstyle import error 2019-03-28 22:34:54 +01:00
Sem van der Hoeven
6fd04b1d0a EDiT:: resolved merge conflicts, most were just empty lines in master
Merge branch 'master' into 'finish_calculator_GUI'

# Conflicts:
#   src/Client/src/main/java/greenify/client/controller/CalculatorController.java
#   src/Client/src/main/resources/fxml/calculator.fxml
2019-03-28 19:44:01 +00:00
Sem van der Hoeven
6ab7141f64 ADD::finished GUI for calculator
now only need to add animations
2019-03-28 14:09:36 +01:00
Sem van der Hoeven
980e64657a EDIT::finished home section of calculator 2019-03-27 20:51:14 +01:00
Ceren Ugurlu
7267a73cbe Merge branch 'develop_calculator' into 'master'
Merge working version of calculator and tests

See merge request cse1105/2018-2019/oopp-group-43/template!46
2019-03-27 13:35:10 +00:00
cugurlu
c9178362cc Update CalculatorServiceTest .java 2019-03-27 13:47:00 +01:00
cugurlu
42cf5a5ee4 Add new tests to increase coverage 2019-03-27 13:46:23 +01:00
cugurlu
56829cca6b Add new methods and tests for requesting 2019-03-27 13:45:28 +01:00
cugurlu
e51ef99bc9 Edit for saving setted new inputs and calculated footprint 2019-03-27 13:44:24 +01:00
cugurlu
4a31b52e69 Update InputValidator and its test for API 2019-03-27 13:42:34 +01:00
cugurlu
20c37c4899 Add tests for footprint 2019-03-27 13:41:32 +01:00
cugurlu
07f5eb0449 Add methods for calculator and fix checktsyle errors 2019-03-27 13:40:52 +01:00
Sem van der Hoeven
3dec44ada1 EDIT::Finished Travel GUI section of calculator 2019-03-27 13:10:21 +01:00
Sem van der Hoeven
1d10d1d54b ADD::almost completed travel pane of calculator 2019-03-27 09:44:34 +01:00
Merel Steenbergen
1f03552d84 Merge branch 'fix/checkstyleAndComments' into 'master'
Fix/checkstyle and comments

See merge request cse1105/2018-2019/oopp-group-43/template!44
2019-03-26 15:06:24 +00:00
Merel Steenbergen
2abad808ad FIX: Checkstyle fixes after merge conflicts 2019-03-26 16:01:53 +01:00
Merel Steenbergen
a540b9e8f2 Resolve merge requests 2019-03-26 15:50:11 +01:00
mlwauben
08d46ea8f0 DELETE:: not used imports 2019-03-26 15:48:51 +01:00
mlwauben
e755107fa8 FIX:: checkstyle fixes 2019-03-26 15:48:50 +01:00
mlwauben
37d3e6c4a7 FIX:: checkstyle 'client' 2019-03-26 15:40:43 +01:00
mlwauben
81f58c86f9 FIX:: checkstyle 'client' tests 2019-03-26 15:39:15 +01:00
mlwauben
0bf32dc19c FIX:: checkstyle fixes 2019-03-26 15:39:15 +01:00
mlwauben
8ec3a508eb FIX:: checkstyle server user tests 2019-03-26 15:39:15 +01:00
mlwauben
71ea1e3a4b FIX:: checkstyle 'server', things with user 2019-03-26 15:38:43 +01:00
mlwauben
61e31df157 FIX:: checkstyle 'common' 2019-03-26 15:34:50 +01:00
mlwauben
064e8e04c2 FIX:: CI 2019-03-26 15:34:50 +01:00
mlwauben
97a0e38c40 FIX:: application classes server+client 2019-03-26 15:34:50 +01:00
Mika Wauben
0751f50026 Update build.gradle 2019-03-26 15:34:50 +01:00
Merel Steenbergen
470a31889a Resolved the conflicts. We should check if the JavaDoc is still in the right place, because it looked a little weird while resolving the conflicts
Merge branch 'master' into 'fix/checkstyleAndComments'

# Conflicts:
#   src/Client/src/main/java/greenify/client/controller/DashBoardController.java
#   src/Server/src/main/java/greenify/server/data/model/User.java
#   src/Server/src/main/java/greenify/server/service/UserService.java
#   src/Server/src/test/java/greenify/server/data/model/UserTest.java
#   src/Server/src/test/java/greenify/server/service/UserServiceTest.java
2019-03-26 14:33:05 +00:00
Merel Steenbergen
90bf334c19 Merge branch 'AddFriends' into 'master'
Add methods and tests for friends.

See merge request cse1105/2018-2019/oopp-group-43/template!43
2019-03-26 14:29:14 +00:00
Merel Steenbergen
12e677607d Merge branch 'Add_Calculator_to_GUI' into 'master'
merge 'add calculator to gui' to first fix master

See merge request cse1105/2018-2019/oopp-group-43/template!45
2019-03-26 14:27:23 +00:00
mlwauben
c6ff4862e6 DELETE:: not used imports 2019-03-26 15:21:23 +01:00
Sem van der Hoeven
bc6e8cd89d Merge branch 'master' into 'Add_Calculator_to_GUI'
# Conflicts:
#   src/Client/src/main/java/greenify/client/controller/DashBoardController.java
#   src/Client/src/main/resources/fxml/dashboard.fxml

the conflicts were only empty lines on the master
2019-03-26 14:04:49 +00:00
Merel Steenbergen
4780ae7b11 Revert changes: AssertArrayEquals doesn't work on ArrayLists 2019-03-26 13:56:48 +00:00
Merel Steenbergen
b1f3725f71 Change wrong url (setInput to addFriend) on Client userService 2019-03-26 13:52:13 +00:00
Merel Steenbergen
1668731624 Use assertArrayEquals instead of AssertEquals 2019-03-26 13:49:29 +00:00
Merel Steenbergen
d6640966c5 Merge branch 'AddDocs' into 'master'
Add notes

See merge request cse1105/2018-2019/oopp-group-43/template!42
2019-03-26 10:55:53 +00:00
mlwauben
cf96ac30b8 FIX:: checkstyle fixes 2019-03-26 11:55:05 +01:00
Merel Steenbergen
4171b933dc FIX: Spelling error 2019-03-26 11:40:24 +01:00
Merel Steenbergen
c61469476b Uncommented mainClassName 2019-03-26 11:37:47 +01:00
mlwauben
8677ac94ef FIX:: checkstyle 'client' 2019-03-26 11:34:53 +01:00
Merel Steenbergen
f11cfc804b Add test for leaderboard JSON 2019-03-26 11:31:41 +01:00
Merel Steenbergen
f39aef31d0 Fix checkstyle errors 2019-03-26 11:24:10 +01:00
Merel Steenbergen
4a6d4c7043 Friend list to JSON method added 2019-03-26 11:07:04 +01:00
mlwauben
bd21e30f26 FIX:: checkstyle 'client' tests 2019-03-26 11:00:24 +01:00
Merel Steenbergen
cc9f8196bc Added tests and method to make sure you cannot add yourself as a friend 2019-03-26 10:56:45 +01:00
mlwauben
9e345ee353 FIX:: checkstyle fixes 2019-03-26 10:55:12 +01:00
Merel Steenbergen
7a4a031b1d Added some tests for friend methods 2019-03-26 10:47:12 +01:00
Merel Steenbergen
ba5e261c7f Resolve merge conflicts 2019-03-26 10:28:57 +01:00
Merel Steenbergen
471d41a600 Commit small changes before rebase 2019-03-26 10:26:29 +01:00
Merel Steenbergen
a1ba2f1d7d FIX: Create-drop databse. Add ManyToMany annotation 2019-03-26 10:26:29 +01:00
Merel Steenbergen
28cd0d0d7f FIX: Database fix 2019-03-26 10:24:57 +01:00
Merel Steenbergen
437267dcb9 Commit small changes before rebase 2019-03-26 10:24:21 +01:00
Merel Steenbergen
559885e22b Upload notes 25-03-2019 2019-03-26 09:16:26 +00:00
mlwauben
d8ced45a67 FIX:: checkstyle server user tests 2019-03-26 09:59:00 +01:00
mlwauben
72cb770861 FIX:: checkstyle 'server', things with user 2019-03-26 09:49:27 +01:00
mlwauben
0ae5e7f4ee FIX:: checkstyle 'common' 2019-03-26 08:46:54 +01:00
mlwauben
4200ae587d FIX:: CI 2019-03-26 08:26:40 +01:00
mlwauben
f28a4ea924 FIX:: application classes server+client 2019-03-26 08:25:09 +01:00
Mika Wauben
ec37bdcd79 Update build.gradle 2019-03-26 07:05:10 +00:00
Sem van der Hoeven
7a11e6260e EDIT::Update README.md
updated location of pictures
2019-03-25 15:52:52 +00:00
Sem van der Hoeven
b0cdd9bff7 EDIT::Update 20190325_agenda.md
checked presence and edited Daan leaving the study
2019-03-25 15:34:47 +00:00
Merel Steenbergen
698c6ef7fd Delete Daan from README 2019-03-25 15:28:53 +00:00
Merel Steenbergen
4be4853685 Delete corequadrant-KP.png 2019-03-25 15:27:36 +00:00
Merel Steenbergen
36c67ce217 Delete KristinPeneva.jpg 2019-03-25 15:27:20 +00:00
Merel Steenbergen
cb15a1fefe Delete Daan_Sneep_PDP_Core_Quadrant.PNG 2019-03-25 15:27:11 +00:00
Merel Steenbergen
19f4a73119 Delete Daan_Sneep.png 2019-03-25 15:27:00 +00:00
Sem van der Hoeven
71fc659c79 ADD::added javadoc comments to calculatorController class 2019-03-25 16:25:13 +01:00
Sem van der Hoeven
4cb256a30a FIX::deleted onAction of 'addVeganMeal' button, as this method was deleted 2019-03-25 15:58:34 +01:00
Sem van der Hoeven
521426ac16 ADD::added style to some buttons
EDIT::changed travel pane from anchor pane to scroll pane
2019-03-25 15:45:31 +01:00
Sem van der Hoeven
987acbad71 ADD::added calculator window to GUI
ADD::added button to open calculator to main window
2019-03-25 14:51:25 +01:00
Ceren Ugurlu
2e745e690c Merge branch 'createCalculator' into 'master'
Merge createCalculator branch into master

See merge request cse1105/2018-2019/oopp-group-43/template!41
2019-03-25 13:40:13 +00:00
Merel Steenbergen
1cec006178 FIX: Create-drop databse. Add ManyToMany annotation 2019-03-25 14:37:45 +01:00
cugurlu
cf0952c7c2 Upload coverage report 2019-03-25 13:54:18 +01:00
cugurlu
b0d69bfc2c Upload checkstyle report 2019-03-25 13:52:25 +01:00
Ceren Ugurlu
006cf60d17 Delete ActivityDto.java 2019-03-25 12:37:49 +00:00
Ceren Ugurlu
baf516e989 Delete ActivityDtoTest.java 2019-03-25 12:36:42 +00:00
Ceren Ugurlu
5c9c1b8be5 Delete Activity.java 2019-03-25 12:36:12 +00:00
Ceren Ugurlu
d7dcd95278 Delete ActivityTest.java 2019-03-25 12:34:54 +00:00
cugurlu
fc7e718b21 Add new tests 2019-03-25 13:33:38 +01:00
cugurlu
8e58118ac7 Add new classes for calculator 2019-03-25 13:32:01 +01:00
cugurlu
99143a8f20 Fix error 2019-03-25 13:30:25 +01:00
cugurlu
34e010f62d Fix client errors 2019-03-25 13:18:48 +01:00
cugurlu
e8108498ad Update UserDto and delete addVeganMealProperty 2019-03-25 13:07:03 +01:00
cugurlu
e79d050b12 Update UserDto in Common 2019-03-25 13:03:06 +01:00
Ceren Ugurlu
b9fb7d81ce Merge branch 'updateDoc' into 'master'
Update doc

See merge request cse1105/2018-2019/oopp-group-43/template!40
2019-03-25 09:22:36 +00:00
Mika Wauben
563ae51408 ADD:: review sprint4 2019-03-25 09:17:58 +00:00
Mika Wauben
caa86f446d ADD:: notes week6 2019-03-25 09:06:52 +00:00
Mika Wauben
ce669b47d2 ADD:: backlog sprint5 2019-03-25 09:04:16 +00:00
Mika Wauben
97d2a0f6fc Add new directory 2019-03-25 09:03:54 +00:00
Mika Wauben
2dce37222d ADD:: retrospective sprint4 2019-03-25 09:03:37 +00:00
Mika Wauben
a973ab0750 ADD:: scrum board sprint4 2019-03-25 09:03:08 +00:00
mlwauben
ae3ab8f563 FIX:: folder names were wrong 2019-03-25 10:02:11 +01:00
Sem van der Hoeven
d5319fc973 Merge branch 'master' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template
sourcetree needed to merge this
2019-03-24 12:11:38 +01:00
Sem van der Hoeven
566af39b0d ADD::added Agenda for next meetinf (25-03-2019) 2019-03-24 12:10:58 +01:00
Ceren Ugurlu
eb3326481a Merge branch 'Add_friends_to_GUI' into 'master'
merge Add_friends_to_gui into master

See merge request cse1105/2018-2019/oopp-group-43/template!39
2019-03-24 11:05:11 +00:00
Sem van der Hoeven
b3d4f573f8 ADD::added table to friends pane 2019-03-24 12:01:34 +01:00
Merel Steenbergen
e494b5294d Revert "Merge branch 'AddFriends' into 'master'"
This reverts merge request !37
2019-03-23 17:31:00 +00:00
Merel Steenbergen
18c3ce0c92 FIX: Database fix 2019-03-23 18:26:01 +01:00
Mika Wauben
5b3896d310 Merge branch 'AddFriends' into 'master'
Add basic friends

See merge request cse1105/2018-2019/oopp-group-43/template!37
2019-03-23 12:09:33 +00:00
Merel Steenbergen
f8315700d9 FIX: Uncomment mainClassName 2019-03-22 21:57:05 +01:00
Merel Steenbergen
6385beec06 FIX: Tests now work 2019-03-22 21:51:09 +01:00
Merel Steenbergen
12c2ebab4e Debugging in progress. FindByName returns null again. 2019-03-22 20:20:39 +01:00
Merel Steenbergen
e69e08ad15 EDIT: Try to fix server, again 2019-03-22 18:44:59 +01:00
Sem van der Hoeven
ae000baba4 EDIT:::edited .gitignore
files like .classpath and .project were commented out, they now should be ignored by git
2019-03-22 09:25:48 +01:00
Sem van der Hoeven
caf9e3e1d9 Merge branch 'cleanUp_files' into 'master'
Merge cleanUp_files into master

See merge request cse1105/2018-2019/oopp-group-43/template!36
2019-03-22 07:41:37 +00:00
cugurlu
bddf984438 Clean up all unnecessary files 2019-03-21 18:07:14 +01:00
Merel Steenbergen
6323fd06eb FIX: Bug fixed, Server now works again 2019-03-21 16:14:50 +01:00
Merel Steenbergen
fb69ec280d Added testing for the friend list and equals in User class in Server 2019-03-21 16:09:23 +01:00
Sem van der Hoeven
dfdbc8d5a9 ADD::added friends pane and button to dashboard
ADD::added load animations to register window
2019-03-21 10:45:54 +01:00
Merel Steenbergen
b3a0ddaa68 Retry adding friends. Server down again 2019-03-20 15:44:47 +01:00
Sem van der Hoeven
93aaf19f13 DEBUG/FIX::fixed bug where total amount of vegetarian meals wouldn't update
fixed the bug where totalVeganMeals wouldn't update on clicking the activities button if you were already on the activities screen

ADD::added id to 'add activity' button on dashboard

for adding a color change when clicking it, still need to implement it completely
2019-03-20 13:15:12 +01:00
Sem van der Hoeven
8345b6c06f ADD::Added slide-in transition for the menu bar
it gets played on load, right now it sometimes is a bit laggy but not sure if that is JavaFX or just everything getting loaded
2019-03-20 08:08:32 +01:00
Sem van der Hoeven
292035498c Merge branch 'master' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template
SourceTree needed to merge this?
2019-03-19 14:52:19 +01:00
Sem van der Hoeven
1f78805f9b EDIT::Changed Login screen name from Go Green to Greenify 2019-03-19 14:49:47 +01:00
Sem van der Hoeven
9d38e1e541 Merge branch 'fixMaster' into 'master'
Merge fixMaster into master

See merge request cse1105/2018-2019/oopp-group-43/template!35
2019-03-19 13:48:39 +00:00
Ceren Ugurlu
121b86a73e Merge branch 'master' into 'fixMaster' 2019-03-19 13:09:13 +00:00
Sem van der Hoeven
920c7c798d ADD::added more comments 2019-03-18 20:47:34 +01:00
Ceren Ugurlu
2c54b8d68c Merge branch 'AddComments' into 'master'
merge AddComments into master

See merge request cse1105/2018-2019/oopp-group-43/template!34
2019-03-18 16:14:49 +00:00
Ceren Ugurlu
0ed8dc34ab Delete .project 2019-03-18 16:10:19 +00:00
Sem van der Hoeven
b8f4415825 ADD::added comments to most classes to make it more understandable 2019-03-18 17:07:38 +01:00
Ceren Ugurlu
2e244e600f Delete OOPP.kotlin_module 2019-03-18 15:58:27 +00:00
Ceren Ugurlu
32b0554329 Delete .classpath 2019-03-18 15:58:06 +00:00
Ceren Ugurlu
4f089d8408 Delete CSE1105.checkstyle.xml 2019-03-18 15:57:47 +00:00
cugurlu
563c72ffec Update branch 2019-03-18 16:56:44 +01:00
Sem van der Hoeven
ecdc9f3a4f ADD::Added hover effects 2019-03-18 15:48:10 +01:00
Sem van der Hoeven
2c32b7d65b Merge branch 'master' of gitlab.ewi.tudelft.nl:cse1105/2018-2019/oopp-group-43/template
SourceTree needed to merge this?
2019-03-18 15:31:41 +01:00
Sem van der Hoeven
8dd8ae28d4 ADD::added animations
added animations for switching between panes in the main stage
2019-03-18 15:30:55 +01:00
cugurlu
68036b3c2f Update coverage report 2019-03-18 15:27:05 +01:00
Sem van der Hoeven
6a71823885 ADD::added stylesheet for login window
added style to the buttons, the same as in the register window
changed the font of the title
changed the font and color of the 'forgot password' link

ADD::added display of name on dashboard

added initialize method to set the 'welcome back' text to include the username of the user
2019-03-18 14:43:15 +01:00
Sem van der Hoeven
baa681833e Merge branch 'Add_report' into 'master'
Merge Add_report branch into master

See merge request cse1105/2018-2019/oopp-group-43/template!33
2019-03-18 13:40:02 +00:00
cugurlu
166945871d Fix UserService and UserServiceTest 2019-03-18 14:35:30 +01:00
cugurlu
17d5591146 Add coverage report 2019-03-18 14:17:22 +01:00
173 changed files with 8570 additions and 4218 deletions

View File

@@ -1,420 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="output" path="bin/default"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-web/2.0.5.RELEASE/6fb6e8788b7555105ff182bce068da7be873411b/spring-boot-starter-web-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-web/2.0.5.RELEASE/52daa1f1509bd637a737206e54c06a17aabb9504/spring-boot-starter-web-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-data-jpa/2.0.5.RELEASE/ce84e65824b8b202d79613e5a95581690e6c36db/spring-boot-starter-data-jpa-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-data-jpa/2.0.5.RELEASE/c99b58e8ada11478aa5d0c3065745b7e887f094e/spring-boot-starter-data-jpa-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-json/2.0.5.RELEASE/d6ffac9884f77519e6fb0cd938f78442346f9d2b/spring-boot-starter-json-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-json/2.0.5.RELEASE/d0052ded4733ceb1fb7d927238f22f9a92099227/spring-boot-starter-json-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-aop/2.0.5.RELEASE/3ec74985073c793a6f189477e30e2a8e538eb5f9/spring-boot-starter-aop-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-aop/2.0.5.RELEASE/6bc1e8bcc849772d48cae1e8278cd2b471361698/spring-boot-starter-aop-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-jdbc/2.0.5.RELEASE/93ed231af2745a49a64a97e89428167f90136387/spring-boot-starter-jdbc-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-jdbc/2.0.5.RELEASE/9a5370acc7c5e17f4a00578211fbbd212b9a8329/spring-boot-starter-jdbc-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter/2.0.5.RELEASE/c5534877dc729859b2923cd4b508d8dff0459e81/spring-boot-starter-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter/2.0.5.RELEASE/1f53487a373be18d064a5815e9bac9882ef15cdc/spring-boot-starter-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-webmvc/5.0.9.RELEASE/631cf6fd5e89e7797b0504994338fe07c983a551/spring-webmvc-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-webmvc/5.0.9.RELEASE/c18346caaeb8dc648c4cc01874996fd9fef76664/spring-webmvc-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-web/5.0.9.RELEASE/c19005e8a2a2216b0e9da304f1dce8ba0d72e110/spring-web-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-web/5.0.9.RELEASE/1ea3aab93340849313fa74ec626ddaf1fff9ed8e/spring-web-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/2.9.6/cfba7c423259fe173f0f1b2e48c85a295f2763c2/jackson-datatype-jdk8-2.9.6-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/2.9.6/456895fc91bf7180b216fead220373e6278230c9/jackson-datatype-jdk8-2.9.6.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.9.6/fa4d87b76287211d6e1ba90e60e1449c56394fd0/jackson-datatype-jsr310-2.9.6-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.9.6/ea54f6193d224e5e5732bbd4262327eb465397c2/jackson-datatype-jsr310-2.9.6.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.module/jackson-module-parameter-names/2.9.6/d559a352bd1fa92c16a30739402021337a78077/jackson-module-parameter-names-2.9.6-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.module/jackson-module-parameter-names/2.9.6/129acd77a4b6ee30d62d3a0899b1344c8ec2bff8/jackson-module-parameter-names-2.9.6.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.9.6/dad3a9fbbedf8781dfd138539cd82638ebad5678/jackson-databind-2.9.6-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.9.6/cfa4f316351a91bfd95cb0644c6a2c95f52db1fc/jackson-databind-2.9.6.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.h2database/h2/1.4.197/23b998de929dba8b42a815057517f997d8b148e9/h2-1.4.197-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.h2database/h2/1.4.197/bb391050048ca8ae3e32451b5a3714ecd3596a46/h2-1.4.197.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.6/2908ec27909c1929a9f2e031e4ae27e54d268860/lombok-1.18.6-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.6/616105b0831250a2e443447508e6a8b26bc466fb/lombok-1.18.6.jar">
<attributes>
<attribute name="gradle_used_by_scope" value=""/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-autoconfigure/2.0.5.RELEASE/345d299a67dc64b34b4a8b7f13a99f09d271384b/spring-boot-autoconfigure-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-autoconfigure/2.0.5.RELEASE/e5588642799e0c0c04638e255c3d3f31ba400ff4/spring-boot-autoconfigure-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot/2.0.5.RELEASE/1d01cb7845c049c204191b8a553a322bb97208d9/spring-boot-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot/2.0.5.RELEASE/19a4624cbd89a318d10c79f289c6c816043850fb/spring-boot-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-logging/2.0.5.RELEASE/70e5c3d900e7317df83f8d885204e1486b9f4086/spring-boot-starter-logging-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-logging/2.0.5.RELEASE/c353e0b9591d0765c687ff0a678478cbebfd5c23/spring-boot-starter-logging-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-tomcat/2.0.5.RELEASE/f6c3808ac5acfe1f435460cd57470d6bb9961486/spring-boot-starter-tomcat-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-tomcat/2.0.5.RELEASE/eaac8a5d73b45400bc88cd7f6b5c99b5f0d5e9b7/spring-boot-starter-tomcat-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/javax.annotation/javax.annotation-api/1.3.2/65dfd2c47380bf72ec62a5b8c4ceb78a4eda1a53/javax.annotation-api-1.3.2-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/javax.annotation/javax.annotation-api/1.3.2/934c04d3cfef185a8008e7bf34331b79730a9d43/javax.annotation-api-1.3.2.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.data/spring-data-jpa/2.0.10.RELEASE/fbbcd9c521d2a3bc1702934e90d7e158ce1832a/spring-data-jpa-2.0.10.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.data/spring-data-jpa/2.0.10.RELEASE/a6e644c363d050c6c90f078f4f0ac66892f60d54/spring-data-jpa-2.0.10.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-context/5.0.9.RELEASE/bf1c19aadae4724bfe7e9196652e649bb08a99c4/spring-context-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-context/5.0.9.RELEASE/2501e55acb6c2e84667cda3f845d1d00a0dc4e05/spring-context-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aop/5.0.9.RELEASE/beafb55eae32edb39351cb84594261a60d12219c/spring-aop-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aop/5.0.9.RELEASE/98003b099697fe46b6bdf18c7e3f66d7a1381060/spring-aop-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-orm/5.0.9.RELEASE/ad526cffef216f5a20e7ed98ba76a2ada6f53310/spring-orm-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-orm/5.0.9.RELEASE/bb9265effd7c903f4cc1c98d16b4188b7827a1cc/spring-orm-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jdbc/5.0.9.RELEASE/2675e4be752200aaf364cc6f0b2a68cbf5f8ab53/spring-jdbc-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jdbc/5.0.9.RELEASE/2f38726ef2f5ecb72af7e915dac43177b01a8f53/spring-jdbc-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.data/spring-data-commons/2.0.10.RELEASE/b7c6de4b7a506d67f608113b6ecf21091b927002/spring-data-commons-2.0.10.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.data/spring-data-commons/2.0.10.RELEASE/64d4e58a2b16b9446d51a2650058d821a5bce98d/spring-data-commons-2.0.10.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-tx/5.0.9.RELEASE/c6031a79af89e9dd4a111909f27ce6dbf60687b/spring-tx-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-tx/5.0.9.RELEASE/d3a13fc3c56bdddd8144a686ed64f0cdb3ad7305/spring-tx-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/5.0.9.RELEASE/1cfee1c1857cda6542f478ef8fe7d2fdb6c3b20/spring-beans-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/5.0.9.RELEASE/65f56fdab1bb90ad059e314d2f2f4cf76f9bdbde/spring-beans-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-expression/5.0.9.RELEASE/9302d930f932ee20b76bdbf1a5ee69485e2cec91/spring-expression-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-expression/5.0.9.RELEASE/1f9db5ff3a758102c0434cc3457aa47c50c39a4a/spring-expression-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/5.0.9.RELEASE/ab4feec73b188109eb1a3aa8aed83c1f97ed1168/spring-core-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/5.0.9.RELEASE/9f9a828936d81afd49a603bda9cc1aed863a0d85/spring-core-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-annotations/2.9.0/a0ad4e203304ccab7e01266fa814115850edb8a9/jackson-annotations-2.9.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-annotations/2.9.0/7c10d545325e3a6e72e06381afe469fd40eb701/jackson-annotations-2.9.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.9.6/297b561cc2ca89e07bf4cb6445c08260b524aa4d/jackson-core-2.9.6-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.9.6/4e393793c37c77e042ccc7be5a914ae39251b365/jackson-core-2.9.6.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hibernate.validator/hibernate-validator/6.0.12.Final/6247fd9a727427cdca607c272c6c38d591ce0b7b/hibernate-validator-6.0.12.Final-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hibernate.validator/hibernate-validator/6.0.12.Final/478003e61b056c1f97840ba3e62ff31cdc89597/hibernate-validator-6.0.12.Final.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/javax.transaction/javax.transaction-api/1.2/5d1fb3fe056fe51e6f6ed9b4ef4898a774ed69c0/javax.transaction-api-1.2-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/javax.transaction/javax.transaction-api/1.2/d81aff979d603edd90dcd8db2abc1f4ce6479e3e/javax.transaction-api-1.2.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hibernate/hibernate-core/5.2.17.Final/c21082f4888449976adb58eb25cfbe090cf3afa5/hibernate-core-5.2.17.Final-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hibernate/hibernate-core/5.2.17.Final/f2dc36470e7a2ffcf6106bb1625ecf5b54bb5f65/hibernate-core-5.2.17.Final.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aspects/5.0.9.RELEASE/8755371fedbd6a821609c8bffd13f89680134be6/spring-aspects-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aspects/5.0.9.RELEASE/dfb2da4c573391d8e8a482f08bdf4d38398e2bb0/spring-aspects-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/cfd5385e0c5ed1c8a5dce57d86e79cf357153a64/logback-classic-1.2.3-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/7c4f3c474fb2c041d8028740440937705ebb473a/logback-classic-1.2.3.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-to-slf4j/2.10.0/46a8b1af336942d55acf0cd64d19ea9656b926be/log4j-to-slf4j-2.10.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-to-slf4j/2.10.0/f7e631ccf49cfc0aefa4a2a728da7d374c05bd3c/log4j-to-slf4j-2.10.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.slf4j/jul-to-slf4j/1.7.25/bcea1530927f59b5128841d3571f879ce3af2e86/jul-to-slf4j-1.7.25-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.slf4j/jul-to-slf4j/1.7.25/af5364cd6679bfffb114f0dec8a157aaa283b76/jul-to-slf4j-1.7.25.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jcl/5.0.9.RELEASE/e9b074f7956e9f5887f807a84f5093d2437101f6/spring-jcl-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jcl/5.0.9.RELEASE/bc3b5aaae53f0bc03647e53ecbd98a05b47a4e90/spring-jcl-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-websocket/8.5.34/ae38c94ef87f320a699e37eb66b484bc6b485bdb/tomcat-embed-websocket-8.5.34-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-websocket/8.5.34/5f86906367c2540b21e6aeecc277d2ce9ec939b0/tomcat-embed-websocket-8.5.34.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-core/8.5.34/d1ae2dbbd905b24f7ab2b11833d41c1e38aa95f0/tomcat-embed-core-8.5.34-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-core/8.5.34/a038040d68a90397f95dd1e11b979fe364a5000f/tomcat-embed-core-8.5.34.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-el/8.5.34/57eabd29ba974a84b540a3f1d091f8ac1fc4a695/tomcat-embed-el-8.5.34-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-el/8.5.34/be71a9a5bdd001db7cf97c47429eec0bdd3b7b88/tomcat-embed-el-8.5.34.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/javax.validation/validation-api/2.0.1.Final/4b714a5167580122e46ead3317ffcdcdbd67c5f0/validation-api-2.0.1.Final-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/javax.validation/validation-api/2.0.1.Final/cb855558e6271b1b32e716d24cb85c7f583ce09e/validation-api-2.0.1.Final.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hibernate.common/hibernate-commons-annotations/5.0.1.Final/203038e420aaa3fa6df8bad4fda19ca1e2824005/hibernate-commons-annotations-5.0.1.Final-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hibernate.common/hibernate-commons-annotations/5.0.1.Final/71e1cff3fcb20d3b3af4f3363c3ddb24d33c6879/hibernate-commons-annotations-5.0.1.Final.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.jboss.logging/jboss-logging/3.3.2.Final/a44f0f22bbd9ccb96952806e73f6cc16ef7d2f67/jboss-logging-3.3.2.Final-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.jboss.logging/jboss-logging/3.3.2.Final/3789d00e859632e6c6206adc0c71625559e6e3b0/jboss-logging-3.3.2.Final.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml/classmate/1.3.4/d5aa53c93626884209c1e82fdf44d2ccdaf8e9c2/classmate-1.3.4-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml/classmate/1.3.4/3d5f48f10bbe4eb7bd862f10c0583be2e0053c6/classmate-1.3.4.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.aspectj/aspectjweaver/1.8.13/4bba65cfdaa38e16e40ab5134651ac751e384c5f/aspectjweaver-1.8.13-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.aspectj/aspectjweaver/1.8.13/ad94df2a28d658a40dc27bbaff6a1ce5fbf04e9b/aspectjweaver-1.8.13.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.zaxxer/HikariCP/2.7.9/48612687e0f772c4c26ae70e0dff9b1433faf484/HikariCP-2.7.9-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.zaxxer/HikariCP/2.7.9/a83113d2c091d0d0f853dad3217bd7df3beb6ae3/HikariCP-2.7.9.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hibernate.javax.persistence/hibernate-jpa-2.1-api/1.0.2.Final/604e1101cb261c61200bfd655dfc1aa5aeca36d6/hibernate-jpa-2.1-api-1.0.2.Final-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hibernate.javax.persistence/hibernate-jpa-2.1-api/1.0.2.Final/52afb5762c704a6b586e27742470c08f91877fc1/hibernate-jpa-2.1-api-1.0.2.Final.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.javassist/javassist/3.22.0-GA/810a2710a0792d017d755f701b5961cc33866c02/javassist-3.22.0-GA-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.javassist/javassist/3.22.0-GA/3e83394258ae2089be7219b971ec21a8288528ad/javassist-3.22.0-GA.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/antlr/antlr/2.7.7/83cd2cd674a217ade95a4bb83a8a14f351f48bd0/antlr-2.7.7.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.jboss/jandex/2.0.3.Final/edc4552ad816df11579a8e02e19f778c77a915b5/jandex-2.0.3.Final-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.jboss/jandex/2.0.3.Final/bfc4d6257dbff7a33a357f0de116be6ff951d849/jandex-2.0.3.Final.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/dom4j/dom4j/1.6.1/a8e7149359255f43e0e5e3b1837948f9ed5861fb/dom4j-1.6.1-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/dom4j/dom4j/1.6.1/5d3ccc056b6f056dbf0dddfdf43894b9065a8f94/dom4j-1.6.1.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.25/962153db4a9ea71b79d047dfd1b2a0d80d8f4739/slf4j-api-1.7.25-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.25/da76ca59f6a57ee3102f8f9bd9cee742973efa8a/slf4j-api-1.7.25.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-core/1.2.3/3ebabe69eba0196af9ad3a814f723fb720b9101e/logback-core-1.2.3-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-core/1.2.3/864344400c3d4d92dfeb0a305dc87d953677c03c/logback-core-1.2.3.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.10.0/fd42afa6acbfb3801accec744106ee28b9342567/log4j-api-2.10.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.10.0/fec5797a55b786184a537abd39c3fa1449d752d6/log4j-api-2.10.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.19/3110a637bd11c3094b8017dd1c29fd29baccf292/snakeyaml-1.19-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.19/2d998d3d674b172a588e54ab619854d073f555b5/snakeyaml-1.19.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-test/2.0.5.RELEASE/63bb6b012526adbfec7fcef3fcb538c940857bf1/spring-boot-starter-test-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-test/2.0.5.RELEASE/ab04ca2e76f6a8e786001352a81a10e4b0e7fbc8/spring-boot-starter-test-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa/junit-4.12-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.4.0/1c4c344124325ada996131e1ba8bbe26108a869f/junit-jupiter-api-5.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.4.0/1a09f25a160f71c267f9ebe3b229b17805c683e9/junit-jupiter-api-5.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-test-autoconfigure/2.0.5.RELEASE/74e295510aec31cf95543f59b7d4737d4db0e1b9/spring-boot-test-autoconfigure-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-test-autoconfigure/2.0.5.RELEASE/54d5e8f9e88c6236fe164474f0aed5a8a1052c43/spring-boot-test-autoconfigure-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-test/2.0.5.RELEASE/c859a6b33a5a1dc9b3d2c4b07fd797405a1c1a2d/spring-boot-test-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-test/2.0.5.RELEASE/ce6353f33217982357a6bdba6576015ea333304c/spring-boot-test-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-test/5.0.9.RELEASE/e1e6cff03e69e4db489d723c9a1c91afe8e0c637/spring-test-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-test/5.0.9.RELEASE/218c8648f898453be92d550252e0ce2a84b54375/spring-test-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.jayway.jsonpath/json-path/2.4.0/c43fc506196089da87a7bb36ec847b57072a818b/json-path-2.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.jayway.jsonpath/json-path/2.4.0/765a4401ceb2dc8d40553c2075eb80a8fa35c2ae/json-path-2.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.assertj/assertj-core/3.9.1/ff4bb4ed665db8ba2d5fb9a3bf84aed3f5d25d00/assertj-core-3.9.1-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.assertj/assertj-core/3.9.1/c5ce126b15f28d56cd8f960c1a6a058b9c9aea87/assertj-core-3.9.1.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-core/2.15.0/46e8ee5e6fdfaee85be74093e324d53c881e0567/mockito-core-2.15.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-core/2.15.0/b84bfbbc29cd22c9529409627af6ea2897f4fa85/mockito-core-2.15.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/47a7ee46628ab7133129cd7cef1e92657bc275e/hamcrest-library-1.3-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/4785a3c21320980282f9f33d0d1264a69040538f/hamcrest-library-1.3.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.skyscreamer/jsonassert/1.5.0/d729b258165a2fd9b5d6156c05c4c4f7ca053117/jsonassert-1.5.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.skyscreamer/jsonassert/1.5.0/6c9d5fe2f59da598d9aefc1cfc6528ff3cf32df3/jsonassert-1.5.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.xmlunit/xmlunit-core/2.5.1/3a18fafaf3081b8f76dcc75fc9419c340722762a/xmlunit-core-2.5.1-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.xmlunit/xmlunit-core/2.5.1/4ffdb346572a7356f7521cd3119ce5287d2e339d/xmlunit-core-2.5.1.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.4.0/12517867d09f09a4e829b80bfc958f69d883fc11/junit-platform-commons-1.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.4.0/e0b2ed8fac32ad6469d75d034e759f1969db8dda/junit-platform-commons-1.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.0.0/777508fa9f3e03cafb3c1fb2eba3dca317f4b1ee/apiguardian-api-1.0.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.0.0/3ef5276905e36f4d8055fe3cb0bdcc7503ffc85d/apiguardian-api-1.0.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.1.1/88a3a2cb15c413565462cea99f201b67bc6d2f10/opentest4j-1.1.1-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.1.1/efd9f971e91074491ea55b19f67b13470cf4fcdd/opentest4j-1.1.1.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.minidev/json-smart/2.3/36c61f1b839bde5b284528cb76f6811efbe0f08b/json-smart-2.3-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.minidev/json-smart/2.3/7396407491352ce4fa30de92efb158adb76b5b/json-smart-2.3.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy/1.7.11/9785d11080136416a457c0d20ce0e404d14d1b01/byte-buddy-1.7.11-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy/1.7.11/f02857a4e2c66ccbe7aaad6100a0a6c461bce9b3/byte-buddy-1.7.11.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.7.11/2198b6a0d067b10c9ea58ff78feb66cd59d985a/byte-buddy-agent-1.7.11-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.7.11/b425a8933ca07edd03c6dbc8bc3b595fba9780de/byte-buddy-agent-1.7.11.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.objenesis/objenesis/2.6/96614f514a1031296657bf0dde452dc15e42fcb8/objenesis-2.6-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.objenesis/objenesis/2.6/639033469776fd37c08358c6b92a4761feb2af4b/objenesis-2.6.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.vaadin.external.google/android-json/0.0.20131108.vaadin1/bf42d7e47a3228513b626dd7d37ac6f072aeca4f/android-json-0.0.20131108.vaadin1-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.vaadin.external.google/android-json/0.0.20131108.vaadin1/fa26d351fe62a6a17f5cda1287c1c6110dec413f/android-json-0.0.20131108.vaadin1.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.minidev/accessors-smart/1.2/c837e3903ff07b478041f761915d764b98e71e05/accessors-smart-1.2-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.minidev/accessors-smart/1.2/c592b500269bfde36096641b01238a8350f8aa31/accessors-smart-1.2.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.0.4/112ff54474f1f04ccf1384c92e39fdc566f0bb5e/asm-5.0.4-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.0.4/da08b8cce7bbf903602a25a3a163ae252435795/asm-5.0.4.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.vintage/junit-vintage-engine/5.4.0/6230d6a5fc0b05a083a96babccbb5236312f9138/junit-vintage-engine-5.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.vintage/junit-vintage-engine/5.4.0/247fe2182965c52cda94320563b16f8907e86da6/junit-vintage-engine-5.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.4.0/6c8bbb6dc869058053ba370d5f9699656e2bc93/junit-jupiter-engine-5.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.4.0/30083adf3fbd7b734f12e6cb4d99dedab99fc34b/junit-jupiter-engine-5.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.4.0/44fdbe60e0df90028edf59d9ffdf06d9fc0e43d9/junit-platform-engine-1.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.4.0/b4419dc190a5d82b9cac6b52e0af9140895c3f87/junit-platform-engine-1.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
</classpath>

6
.gitignore vendored
View File

@@ -86,10 +86,12 @@ local.properties
### Eclipse Patch ###
# Eclipse Core
# .project
.project
**/.project
# JDT-specific (Eclipse Java Development Tools)
# .classpath
.classpath
**/.classpath
# Annotation Processing
.apt_generated

View File

@@ -35,3 +35,13 @@ test:
- build
- .gradle
# Code coverage badge
#deploy:
# stage: code-coverage
# script:
# - gradle clean check
# after_script:
# - awk -F"," '{ instructions += $4 + $5; covered += $5 } END { print covered, "/", instructions, " instructions covered"; print 100*covered/instructions, "% instructrions covered" }' target/site/jacoco/jacoco.csv
# - awk -F"," '{ instructions += $6 + $7; covered += $7 } END { print covered, "/", instructions, " branches covered"; print 100*covered/instructions, "% branches covered" }' target/site/jacoco/jacoco.csv
# - echo \"$(cat target/site/jacoco/jacoco.csv)% covered\"
# coverage: '/(\d+.\d+) % +branches covered/'

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>OOPP</name>
<comment></comment>
<projects/>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments/>
</buildCommand>
</buildSpec>
<linkedResources/>
<filteredResources/>
</projectDescription>

View File

@@ -1,188 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!--
This configuration file was written by the eclipse-cs plugin configuration editor
-->
<!--
Checkstyle-Configuration: TI1216
Description:
Checkstyle configurartion that checks the Google coding conventions (https://google-styleguide.googlecode.com/svn-history/r130/trunk/javaguide.html).
-->
<module name="Checker">
<property name="severity" value="warning"/>
<property name="charset" value="UTF-8"/>
<property name="fileExtensions" value="java, properties, xml"/>
<module name="TreeWalker">
<module name="OuterTypeFilename"/>
<module name="IllegalTokenText">
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
<property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
<property name="message" value="Avoid using corresponding octal or Unicode escape."/>
</module>
<module name="LineLength">
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
<property name="max" value="100"/>
</module>
<module name="AvoidStarImport"/>
<module name="OneTopLevelClass"/>
<module name="NoLineWrap"/>
<module name="EmptyBlock">
<property name="option" value="TEXT"/>
<property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
</module>
<module name="NeedBraces"/>
<module name="LeftCurly"/>
<module name="RightCurly"/>
<module name="RightCurly">
<property name="option" value="alone"/>
<property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
</module>
<module name="WhitespaceAround">
<property name="allowEmptyConstructors" value="true"/>
<property name="allowEmptyMethods" value="true"/>
<property name="allowEmptyTypes" value="true"/>
<property name="allowEmptyLoops" value="true"/>
<message key="ws.notPreceded" value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
<message key="ws.notFollowed" value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
</module>
<module name="OneStatementPerLine"/>
<module name="MultipleVariableDeclarations"/>
<module name="MissingSwitchDefault"/>
<module name="FallThrough"/>
<module name="ModifierOrder"/>
<module name="EmptyLineSeparator">
<property name="allowNoEmptyLineBetweenFields" value="true"/>
</module>
<module name="SeparatorWrap">
<property name="option" value="nl"/>
<property name="tokens" value="DOT"/>
</module>
<module name="SeparatorWrap">
<property name="option" value="EOL"/>
<property name="tokens" value="COMMA"/>
</module>
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
<message key="name.invalidPattern" value="Package name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="TypeName">
<message key="name.invalidPattern" value="Type name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="MemberName">
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
<message key="name.invalidPattern" value="Member name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="ParameterName">
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
<message key="name.invalidPattern" value="Parameter name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="LocalVariableName">
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
<property name="allowOneCharVarInForLoop" value="true"/>
<property name="tokens" value="VARIABLE_DEF"/>
<message key="name.invalidPattern" value="Local variable name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="ClassTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
<message key="name.invalidPattern" value="Class type name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="MethodTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
<message key="name.invalidPattern" value="Method type name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="InterfaceTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
<message key="name.invalidPattern" value="Interface type name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="NoFinalizer"/>
<module name="GenericWhitespace">
<message key="ws.notPreceded" value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
<message key="ws.followed" value="GenericWhitespace ''{0}'' is followed by whitespace."/>
<message key="ws.preceded" value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
<message key="ws.illegalFollow" value="GenericWhitespace ''{0}'' should followed by whitespace."/>
</module>
<module name="Indentation">
<property name="basicOffset" value="4"/>
<property name="caseIndent" value="4"/>
<property name="arrayInitIndent" value="4"/>
</module>
<module name="AbbreviationAsWordInName">
<property name="allowedAbbreviationLength" value="1"/>
<property name="ignoreFinal" value="false"/>
</module>
<module name="OverloadMethodsDeclarationOrder"/>
<module name="VariableDeclarationUsageDistance"/>
<module name="CustomImportOrder">
<property name="customImportOrderRules" value="STATIC###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE"/>
<property name="specialImportsRegExp" value="com.google"/>
<property name="sortImportsInGroupAlphabetically" value="true"/>
</module>
<module name="MethodParamPad"/>
<module name="OperatorWrap">
<property name="option" value="NL"/>
<property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>
</module>
<module name="AnnotationLocation">
<property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
</module>
<module name="AnnotationLocation">
<property name="tokens" value="VARIABLE_DEF"/>
<property name="allowSamelineMultipleAnnotations" value="true"/>
</module>
<module name="NonEmptyAtclauseDescription"/>
<module name="JavadocTagContinuationIndentation"/>
<module name="SummaryJavadoc">
<property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
</module>
<module name="JavadocParagraph"/>
<module name="AtclauseOrder">
<property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
</module>
<module name="JavadocMethod">
<property name="minLineCount" value="2"/>
<property name="allowedAnnotations" value="Override, Test"/>
<property name="scope" value="public"/>
<property name="allowThrowsTagsForSubclasses" value="true"/>
<property name="allowMissingParamTags" value="true"/>
<property name="allowMissingThrowsTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/>
</module>
<module name="MethodName">
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
<message key="name.invalidPattern" value="Method name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="SingleLineJavadoc">
<property name="ignoreInlineTags" value="false"/>
</module>
<module name="EmptyCatchBlock">
<property name="exceptionVariableName" value="expected"/>
</module>
<module name="CommentsIndentation"/>
<module name="UnusedImports"/>
<module name="RedundantImport"/>
<module name="MethodLength"/>
<module name="ParameterNumber"/>
<module name="MethodCount">
<property name="maxTotal" value="50"/>
<property name="maxPrivate" value="50"/>
<property name="maxPackage" value="50"/>
<property name="maxProtected" value="50"/>
<property name="maxPublic" value="50"/>
</module>
<module name="AvoidNestedBlocks"/>
<module name="DeclarationOrder"/>
<module name="EmptyStatement"/>
<module name="IllegalThrows"/>
<module name="IllegalCatch"/>
<module name="MissingSwitchDefault"/>
<module name="StringLiteralEquality"/>
<module name="UnnecessaryParentheses"/>
<module name="CyclomaticComplexity"/>
</module>
<module name="FileTabCharacter">
<property name="eachLine" value="true"/>
</module>
<module name="FileLength"/>
</module>

109
README.md
View File

@@ -1,35 +1,36 @@
## Getting your weekly reports
# Greenify
The easiest way to save CO2 and help the environment! Enter your activities and find out your carbon footprint.
![loginScreen](/uploads/e4812575794836a217a3a21ceb676c6a/loginScreen.png)
![you](/uploads/093956805aede6de942bcbfeecd84eb7/you.png)
**Jacoco**:
Run `maven install` ([Intellij](https://www.jetbrains.com/help/idea/2016.3/getting-started-with-maven.html#execute_maven_goal)/[Eclipse](http://imgur.com/a/6q7pV))
## Badges
[![build status](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template/badges/master/build.svg)](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template)
**Checkstyle**:
Run `maven site`
## Getting started
To start Greenify:
# Daan Sneep (4849515, dsneep)
```
cd <FILE-LOCATION>/greenify/src/Client/build/libs
java -Dserver.address="https://greenify43.herokuapp.com" -jar greenify-1.0.0.jar
```
![My Picture](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template/blob/master/Pictures%20Group%20Members/Daan_Sneep.png "The one and only")
## Running the tests
The tests cover all non-GUI code:
## Personal Development Plan
```
cd <FILE-LOCATION>/greenify
gradle check
```
My Core Quadrant is visible ![here](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template/blob/master/Pictures%20Group%20Members/Daan_Sneep_PDP_Core_Quadrant.PNG)
## Licence
GNU General Public License v3.0
### G Goal
After completing this project, I want to be able to work on a programming project efficiently with other people. I have never attempted anything of this scale and find that it is a core requirement of becoming a good programmer, as in most companies programming is done within teams, not alone.
## Contributors
### R Reality
With this project I hope to work towards this goal. I have never programmed as a team on this scale, so this project will be the first step towards my goal.
### Merel Steenbergen (masteenbergen)
<img src="https://user-images.githubusercontent.com/47633984/55274602-13cc1200-52da-11e9-9bd7-686d84929b83.jpg" width="100"/>
### O Options
During this quarter the project will be my only option towards achieving this goal. If I am unhappy with my progress towards my goal by the end of this quarter, I must try to implement the same structure of teamwork in my next projects, and try to learn from the mistakes I made when working as a team in this project.
### W Will
I will try to make sure to adhere to the structure we establish as a group which describes how we will work together. This way, we all do the work we are supposed to do, and none of us will be overloaded with work. I will also try to make use of all the tools available to us which can improve the quality of programming together (scrum, git, GitLab etc.).
# Merel Steenbergen (masteenbergen)
![Picture:](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template/blob/master/Pictures%20Group%20Members/Merel_Steenbergen.jpg)
## Personal Development Plan
#### Personal Development Plan
My strong points:
1. Im a natural leader. I like to know how everyone is doing, if
@@ -39,37 +40,37 @@ everyone is keeping on track and if not, why is someone slacking?
What are two of your weaker points?
1. Im a bit of a control freak. Sometimes I find it hard to let other people do things and to mind my own business.
2. Im competitive. This can be a good thing, because Im very passionate and really give it 100% if I like something, but it can also lead to hurt feelings when Im not paying attention.
![Core quadrant:](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template/blob/master/Pictures%20Group%20Members/Core_quadrant_Merel.png)
### G - Goal
<img src="https://user-images.githubusercontent.com/47633984/55274622-2d6d5980-52da-11e9-8be0-ac1ef545f7d9.png" width="700"/>
##### G - Goal
I want to improve on letting other people handle things that I actually want to do myself. I also want to improve my programming and am aiming to not make it a competition, but to really make it a group project. This is important, because you almost never work alone in software developing, which is what I want to do after the studies.
### R - Reality (Your current situation)
##### R - Reality (Your current situation)
Ive already been working on my teamwork skills since high school. I had a subject that had only projects. Ive also worked with Scrum before, which really helps you focus on your development without letting your project out of sight. Im better at working together and listening to tips than I was before.
### O - Options (Look at possible options)
##### O - Options (Look at possible options)
Actively watching myself and letting my teammates know that they need to be clear with me if they dont like something I say or do are the best ways for me to improve. I would rather improve by myself, but for my goals it is better to let my team guide me. Its about teamwork after all.
### W - Will (Motivation, plan of action)
##### W - Will (Motivation, plan of action)
Im just going to keep working on myself and hope my teammates will work with me. It also helps to work in different teams to get a much more diverse experience. Every team is different, so Im just going to wait what this team will bring me and how I will have to adjust myself to make the team efficient.
# Sem van der Hoeven (4896726, semvanderhoeve)
![Picture location](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template/blob/master/Pictures%20Group%20Members/sem_van_der_hoeven.jpg)
### Sem van der Hoeven (4896726, semvanderhoeve)
<img src="https://user-images.githubusercontent.com/47633984/55274658-d6b44f80-52da-11e9-9404-a4ae9a210b72.jpg" width="100"/>
## Personal development plan
![Core quadrant location](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template/blob/master/Pictures%20Group%20Members/sem_van_der_hoeven_core_quadrant.png)
#### Personal development plan
<img src="https://user-images.githubusercontent.com/47633984/55274673-0a8f7500-52db-11e9-8d83-e1acbf22aeed.png" width="700"/>
### G - Goal
##### G - Goal
My goal with this project is most of all to be able to efficiently work with a group of people. This is important to me because I have not worked on a (development) project with a (big) group of people before. I believe I have succeeded in this goal when our project is finished and we have got a passing grade.
### R - Reality
##### R - Reality
With this project I am already setting the first step towards reaching my goal, as we have already started working as a group.
### O - Options
##### O - Options
The options I have to reach my goal are basically this project, as this is the only big project we will be doing as a team in this year. I want to obviously try to learn as much as I can during this project, especially abour working in a group. The only thing I think would be stopping this is if members of the group had different opinions on how things should be done. but so far everyone is on the same track :D.
### W - Will
##### W - Will
I am going to try my hardest to follow the rules we have set up, and to deliver everything I am supposed to. I will try to do this everytime I get the chance to do so. Right now the first step I can take is to work on this personal development plan, so that I already have my part of what we needed to do finished. My teammates can help me achieve this goal by helping if I have questions or don't understand something/am getting stuck with something.
action plan:
⋅⋅* finish my part of the readme that we have to finish
@@ -77,13 +78,11 @@ action plan:
⋅⋅* don't be hesitant on asking people for help
⋅⋅* deliver things I need to do on time
# Ceren Ugurlu (4851609, cugurlu)
### Ceren Ugurlu (4851609, cugurlu)
<img src="https://user-images.githubusercontent.com/47633984/55274734-10398a80-52dc-11e9-9fce-5059ac2b3f3b.jpeg" width="100"/>
![My Picture](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template/blob/master/Pictures%20Group%20Members/ceren_ugurlu.jpeg)
## Personal Development Plan:
- This is my core quadrant: ![My Core Quadrant](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template/blob/master/Pictures%20Group%20Members/Ceren_Ugurlu_Core_Quadrant.png)
#### Personal Development Plan:
<img src="https://user-images.githubusercontent.com/47633984/55274694-4296b800-52db-11e9-9cee-b8d1d5c58e6f.png" width="700"/>
My strong points:
- I am an ambitious person in order to achieve my goal I can study a lot
@@ -93,7 +92,7 @@ My strong points:
My weaker points:
- Sometimes I can be a stressed and anxious person. If we have a difficulty about time management etc. I can get stressed. But if we work efficiently as a team, I do not think this is going to be a problem
### G Goal
##### G Goal
My goals in this project:
- Developing my Java skills
- Learning how to work effectively as a team
@@ -101,13 +100,13 @@ My goals in this project:
I am aiming to successfully finish the parts that belong to me in our project. To achieve this, I should develop my Java skills. I want to contribute to my group and to learn new things from my teammates. When we finish our project, I will be achieved my goal.
### R Reality
##### R Reality
This is my first team project. I have never experienced this before. I have done some similar programs in different languages but this is the first one in Java. This is both exciting and hard. There are many things I need to do but I like to study and develop myself.
### O Options
##### O Options
There are two options to achieve and not to achieve but I do not want to count the second one as an option because we are a team. And teamwork means that many different perspectives and a lot of human power. Therefore, I can say that there is not any reason for an unsuccessful result. If it happens, it is also not a problem. It shows that I need to develop myself. I would try to learn new things from my mistakes.
### W Will
##### W Will
I will try to do my best to be successful in our project and I am going to start right now for this. The first step I can take is creating a plan with my group mates and to start our project according to this plan.
Action Plan:
@@ -117,11 +116,11 @@ Action Plan:
- Starting to code (informing each other about the steps we have took)
- While everyone is working on their part, to inform each other about the progress is very important because some parts can be connected. When two people's parts are connected they should act according to that otherwise it can lead problems or a non-compiling code)
# Mika Wauben (4834739, mlwauben)
![My picture](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template/blob/master/Pictures%20Group%20Members/mlwaubenpic.jpg)
### Mika Wauben (4834739, mlwauben)
<img src="https://user-images.githubusercontent.com/47633984/55274742-29423b80-52dc-11e9-804d-69feec6d28e0.jpg" width="100"/>
## Personal Development Plan
![My core quadrant](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template/blob/master/Pictures%20Group%20Members/mlwaubenCoreQuadrant.jpg)
#### Personal Development Plan
<img src="https://user-images.githubusercontent.com/47633984/55274719-c18bf080-52db-11e9-9d3f-018ba68dd1f0.jpg" width="700"/>
My strong points:
1. I am observing and think before I speak.
@@ -131,14 +130,14 @@ Action Plan:
1. I like to do things alone. I rather figure something out myself instead of asking for help, even if this takes way too long.
2. I tend to stay quiet if I'm not absolutely sure my contribution is right or useful.
### G - Goal
##### G - Goal
My goal during this course is getting more experienced in working with things like github, libraries, scrumboard, etc. and asking for help if I need it, since being stuck on something isnt going to help my groupmates.
### R - Reality
##### R - Reality
Every minute that were working on the project, Im also actively working on my goal.
### O - Options
##### O - Options
By working on the project with the chosen programs, Ill get more experienced in using them. Using those programs for other projects as well will only improve my knowledge. By being active in the groupchat and during the meetings, asking stuff will be easier.
### W - Will
##### W - Will
I will reach my goal by working actively together with my teammates using lots of the useful programs given.

View File

@@ -46,7 +46,6 @@ dependencies {
testCompile("junit:junit")
compileOnly 'org.projectlombok:lombok:1.18.6'
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("com.h2database:h2")
annotationProcessor 'org.projectlombok:lombok:1.18.6'
testCompile(
'junit:junit:4.12',

Binary file not shown.

Before

Width:  |  Height:  |  Size: 861 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

View File

@@ -0,0 +1,50 @@
# Meeting 6
## Opening
> Check if everyone is present:
- ~~Nivard Jansen~~
- ~~Kristin Peneva~~
- ~~Daan Sneep~~
- [x] Merel SteenBergen
- [x] Ceren Ugurlu
- [x] Mika Wauben
- [x] Sem van der Hoeven
- Chair: Sem van der Hoeven
- Secretary: Merel Steenbergen
## Points of action
- First of all, discuss problems we have faced and if somebody is halted because of a problem
- if so, try to work out the problem
### pre/during meeting
- Discuss what we did last week (see scrumboard)
- Does anyone have blocking issues?
- Gitlab
- CI
- Coverage reports
- Checkstyle reports
- Make sure that demo 3 is ready and all requirements is provided
- Demo 3 (4 of the 6 minimal features are implemented)
- the full workflow of 'tracking the co2 you have saved and comparing it to your friends' is implemented
- user has an overview of the co2 they have saved
- user has an overview of the co2 their friends have saved
### post meeting
- Focus on demo 3
- Complete the GUI
- Add all features
- Complete friends features
- Create/finish the calculator
## Any other business
> If anybody has something that should be discussed but came up with that after the agenda was finalized, he/she should bring that up now so that it can be discussed after all.
## Question round
- Questions for the TA
- questions that were already present
- questions that rose during the meeting
## Closing
> Let's focus on demo 3!

Binary file not shown.

View File

@@ -0,0 +1,47 @@
# Meeting 7
## Opening
> Check if everyone is present:
- ~~Nivard Jansen~~
- ~~Kristin Peneva~~
- ~~Daan Sneep~~
- [x] Merel SteenBergen
- [x] Ceren Ugurlu
- [x] Mika Wauben
- [x] Sem van der Hoeven
- Chair: Mika Wauben
- Secretary: Ceren Ugurlu
## Points of action
- First of all, discuss problems we have faced and if somebody is halted because of a problem
- if so, try to work out the problem
### pre/during meeting
- Discuss what we did last week (see scrumboard)
- Does anyone have blocking issues?
- Gitlab
- CI
- Coverage reports
- Checkstyle reports
- Show demo 3 to the TA
- Discuss about the presentation
- Discuss about final things that need to be done
### post meeting
- Focus on the presentation
- Focus on the final report
- Focus on things we get points for according to the rubric
## Any other business
> If anybody has something that should be discussed but came up with that after the agenda was finalized, he/she should bring that up now so that it can be discussed after all.
## Question round
- Questions for the TA
- questions that were already present
- Ask about custom CI (do we have it already?)
- questions that rose during the meeting
## Closing
> We're almost finished!

Binary file not shown.

View File

@@ -0,0 +1,43 @@
# Meeting 8
## Opening
> Check if everyone is present:
- ~~Nivard Jansen~~
- ~~Kristin Peneva~~
- ~~Daan Sneep~~
- [x] Merel SteenBergen
- [x] Ceren Ugurlu
- [x] Mika Wauben
- [x] Sem van der Hoeven
- Chair: Merel Steenbergen
- Secretary: Sem van der Hoeven
## Points of action
- First of all, discuss problems we have faced and if somebody is halted because of a problem
- if so, try to work out the problem
### pre/during meeting
- Discuss what we did last week (see scrumboard)
- Does anyone have blocking issues?
- Coverage reports
- Checkstyle reports
- Show demo to the TA, since Mitchell isn't here, a different TA will visit us, so we'll show him the entire application.
- Discuss about the presentation
- Discuss about final things that need to be done
### post meeting
- Focus on the presentation
- Focus on the final report
- Focus on things we get points for according to the rubric
## Any other business
> If anybody has something that should be discussed but came up with that after the agenda was finalized, he/she should bring that up now so that it can be discussed after all.
## Question round
- Questions for the TA
- How to get the code coverage badge, since we use Gradle and we've got the Maven code.
## Closing
> We're almost finished!

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 208 KiB

After

Width:  |  Height:  |  Size: 208 KiB

View File

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 793 KiB

View File

@@ -1,5 +0,0 @@
# Checkstyle folder
At the end of the week, please commit a readable screenshot that shows the Checkstyle results.
Make sure that the file follows the naming convention; `20190213_checkstyle.xyz` for February 13th.
`.xyz` can be either `.jpg` or `.png`.

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

View File

@@ -0,0 +1,13 @@
# Sprint Review
## Main problems Encountered
### Problem 1: Database won't grow
It is difficult to add new columns to the database, but together we will fix this problem.
## Adjustments from previous sprints
We're doing great with starting on time for the demo.
## Adjustments for next sprint
- Speficy tasks a bit more, that way they are easier to follow

View File

@@ -0,0 +1,14 @@
# Sprint Review
## Main problems Encountered
### Problem 1: We had some bugs
because of some bugs in the server, things did not work as intended. Ceren fixed it.
## Adjustments from previous sprints
Write all we still need to do down, even if the things are not necessarily assigned to a specific person yet.
## Adjustments for next sprint
- Write down all other necessary tasks.

View File

@@ -0,0 +1,14 @@
# Sprint Review
## Main problems Encountered
### Problem 1:
## Adjustments from previous sprints
There were no big problems this week. We made some last minute changes and added some extra features. Next week we're going to focus on our other exams, so we're
not really working on the project anymore.
## Adjustments for next sprint

View File

@@ -0,0 +1,13 @@
# Sprint Review
## Main problems Encountered
### Problem 1:
## Adjustments from previous sprints
Our project is completely finished and we're very happy with the result.
## Adjustments for next sprint
This is the last sprint for this project!

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Binary file not shown.

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Binary file not shown.

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -1,3 +0,0 @@
<module name="SuppressionFilter">
<property name="file" value="quality/checkstyle/suppressions.xml" />
</module>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="src" path="Client/src/main/java"/>
<classpathentry kind="src" path="Server/src/main/java"/>
<classpathentry kind="output" path="Client/build/classes/java/main"/>
</classpath>

979
src/.idea/workspace.xml generated
View File

@@ -1,979 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BookmarkManager">
<bookmark url="file://$PROJECT_DIR$/Server/src/test/java/greenify/server/rest/UserControllerTest.java" description="@WebMvcTest(UserController.class)" line="1" />
</component>
<component name="ChangeListManager">
<list default="true" id="317f638e-9a63-4072-b3f3-0ddf783c2024" name="Default Changelist" comment="" />
<ignored path="$PROJECT_DIR$/.gradle/" />
<ignored path="$PROJECT_DIR$/build/" />
<ignored path="$PROJECT_DIR$/Client/.gradle/" />
<ignored path="$PROJECT_DIR$/Client/build/" />
<ignored path="$PROJECT_DIR$/Client/out/" />
<ignored path="$PROJECT_DIR$/Common/.gradle/" />
<ignored path="$PROJECT_DIR$/Common/build/" />
<ignored path="$PROJECT_DIR$/Common/out/" />
<ignored path="$PROJECT_DIR$/Server/.gradle/" />
<ignored path="$PROJECT_DIR$/Server/build/" />
<ignored path="$PROJECT_DIR$/Server/out/" />
<ignored path="$PROJECT_DIR$/../.gradle/" />
<ignored path="$PROJECT_DIR$/../build/" />
<ignored path="$PROJECT_DIR$/../out/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="CoverageDataManager">
<SUITE FILE_PATH="coverage/OOPP$UserServiceTest.ic" NAME="UserServiceTest Coverage Results" MODIFIED="1551910075826" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/OOPP$All_in_OOPP__2_.ic" NAME="All in OOPP (2) Coverage Results" MODIFIED="1551687732942" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/OOPP$All_in_OOPP__3_.ic" NAME="All in OOPP (3) Coverage Results" MODIFIED="1551687743325" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/OOPP$All_in_OOPP__4_.ic" NAME="All in OOPP (4) Coverage Results" MODIFIED="1551687762987" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/OOPP$All_in_OOPP_Server_test.ic" NAME="All in OOPP.Server.test Coverage Results" MODIFIED="1551697183095" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/OOPP$All_in_OOPP__5_.ic" NAME="All in OOPP (5) Coverage Results" MODIFIED="1551687778421" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/OOPP$All_in_OOPP.ic" NAME="All in OOPP Coverage Results" MODIFIED="1551908205728" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/OOPP$All_in_OOPP__1_.ic" NAME="All in OOPP (1) Coverage Results" MODIFIED="1551697529163" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/OOPP$UserControllerTest.ic" NAME="UserControllerTest Coverage Results" MODIFIED="1551910101485" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false">
<FILTER>gogreen.server.rest.*</FILTER>
</SUITE>
</component>
<component name="CoverageViewManager">
<option name="myElementSize" value="187" />
</component>
<component name="ExternalProjectsData">
<projectState path="$PROJECT_DIR$">
<ProjectState />
</projectState>
</component>
<component name="ExternalProjectsManager">
<system id="GRADLE">
<state>
<task path="$PROJECT_DIR$/Common">
<activation />
</task>
<task path="$PROJECT_DIR$/Server">
<activation />
</task>
<task path="$PROJECT_DIR$/Client">
<activation />
</task>
<task path="$PROJECT_DIR$">
<activation />
</task>
<task path="$PROJECT_DIR$/..">
<activation />
</task>
<projects_view>
<tree_state>
<expand>
<path>
<item name="" type="6a2764b6:ExternalProjectsStructure$RootNode" />
<item name="src" type="f1a62948:ProjectNode" />
</path>
<path>
<item name="" type="6a2764b6:ExternalProjectsStructure$RootNode" />
<item name="src" type="f1a62948:ProjectNode" />
<item name="OOPP" type="2d1252cf:ModuleNode" />
</path>
<path>
<item name="" type="6a2764b6:ExternalProjectsStructure$RootNode" />
<item name="src" type="f1a62948:ProjectNode" />
<item name="OOPP" type="2d1252cf:ModuleNode" />
<item name="Source Sets" type="e897c970:GradleViewContributor$SourceSetsNode" />
</path>
<path>
<item name="" type="6a2764b6:ExternalProjectsStructure$RootNode" />
<item name="src" type="f1a62948:ProjectNode" />
<item name="OOPP" type="2d1252cf:ModuleNode" />
<item name="Tasks" type="e4a08cd1:TasksNode" />
</path>
<path>
<item name="" type="6a2764b6:ExternalProjectsStructure$RootNode" />
<item name="src" type="f1a62948:ProjectNode" />
<item name="OOPP" type="2d1252cf:ModuleNode" />
<item name="Tasks" type="e4a08cd1:TasksNode" />
<item name="application" type="c8890929:TasksNode$1" />
</path>
<path>
<item name="" type="6a2764b6:ExternalProjectsStructure$RootNode" />
<item name="src" type="f1a62948:ProjectNode" />
<item name="OOPP" type="2d1252cf:ModuleNode" />
<item name="Tasks" type="e4a08cd1:TasksNode" />
<item name="build" type="c8890929:TasksNode$1" />
</path>
</expand>
<select />
</tree_state>
</projects_view>
</state>
</system>
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="247">
<caret line="23" column="49" selection-start-line="23" selection-start-column="49" selection-end-line="23" selection-end-column="49" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/Server/src/main/resources/application.properties">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="85">
<caret line="5" column="30" selection-start-line="5" selection-start-column="30" selection-end-line="5" selection-end-column="30" />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Interface" />
<option value="Class" />
</list>
</option>
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>add a v</find>
<find>add</find>
<find>sig</find>
<find>regis</find>
<find>greenify</find>
<find>userC</find>
</findStrings>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/Server/src/main/java/gogreen/server/rest/UserController.java" />
<option value="$PROJECT_DIR$/Common/src/main/java/gogreen/common/ErrorResponse.java" />
<option value="$PROJECT_DIR$/Server/src/main/java/gogreen/server/rest/ExceptionHandler.java" />
<option value="$PROJECT_DIR$/Server/src/test/java/gogreen/server/rest/UserControllerTest.java" />
<option value="$PROJECT_DIR$/Client/src/main/java/gogreen/client/controller/UserController.java" />
<option value="$PROJECT_DIR$/Client/src/main/java/gogreen/client/Application.java" />
<option value="$PROJECT_DIR$/Server/src/main/java/gogreen/server/service/UserService.java" />
<option value="$PROJECT_DIR$/Client/src/test/java/UserControllerTest.java" />
<option value="$PROJECT_DIR$/config/checkstyle/checkstyle.xml" />
<option value="$PROJECT_DIR$/Client/build.gradle" />
<option value="$PROJECT_DIR$/Server/src/main/java/gogreen/server/rest/RestExceptionHandler.java" />
<option value="$PROJECT_DIR$/Common/src/test/java/gogreen/common/UserDTOTest.java" />
<option value="$PROJECT_DIR$/Client/src/main/java/gogreen/client/rest/UserService.java" />
<option value="$PROJECT_DIR$/Server/src/main/java/greenify/server/data/repository/UserJpaRepository.java" />
<option value="$PROJECT_DIR$/Server/src/main/java/greenify/server/data/repository/UserRepository.java" />
<option value="$PROJECT_DIR$/Common/src/test/java/ErrorResponseTest.java" />
<option value="$PROJECT_DIR$/Common/src/main/java/greenify/common/ErrorResponse.java" />
<option value="$PROJECT_DIR$/Common/src/main/java/greenify/common/UserDTO.java" />
<option value="$PROJECT_DIR$/Common/src/test/java/UserDTOTest.java" />
<option value="$PROJECT_DIR$/Server/src/test/java/UserTest.java" />
<option value="$PROJECT_DIR$/Server/src/test/java/MainControllerTest.java" />
<option value="$PROJECT_DIR$/Server/src/resources/application.properties" />
<option value="$PROJECT_DIR$/Server/src/application.properties" />
<option value="$PROJECT_DIR$/Server/src/main/resources/application.properties" />
<option value="$PROJECT_DIR$/Server/src/main/java/greenify/server/data/model/User.java" />
<option value="$PROJECT_DIR$/Server/src/test/java/UserControllerTest.java" />
<option value="$PROJECT_DIR$/Common/build.gradle" />
<option value="$PROJECT_DIR$/Client/src/main/resources/stylesheets/dashboardStyle.css" />
<option value="$PROJECT_DIR$/Client/src/main/resources/fxml/dashboard.fxml" />
<option value="$PROJECT_DIR$/Client/src/main/resources/fxml/sample.fxml" />
<option value="$PROJECT_DIR$/Client/src/main/resources/fxml/RegisterWindow.fxml" />
<option value="$PROJECT_DIR$/Client/src/main/resources/application.properties" />
<option value="$PROJECT_DIR$/Client/src/main/java/greenify/client/controller/RegisterWindowController.java" />
<option value="$PROJECT_DIR$/Client/src/main/java/greenify/client/Application.java" />
<option value="$PROJECT_DIR$/Client/src/main/java/greenify/client/controller/UserController.java" />
<option value="$PROJECT_DIR$/Client/src/main/java/greenify/client/rest/UserService.java" />
<option value="$PROJECT_DIR$/Client/src/main/java/greenify/client/controller/DashBoardController.java" />
<option value="$PROJECT_DIR$/Client/src/test/java/UserServiceTest.java" />
<option value="$PROJECT_DIR$/Client/src/test/java/ApplicationStartTest.java" />
<option value="$PROJECT_DIR$/Client/src/test/java/ApplicationTest.java" />
<option value="$PROJECT_DIR$/Server/build.gradle" />
<option value="$PROJECT_DIR$/Server/src/test/java/UserRepoIntegrationTest.java" />
<option value="$PROJECT_DIR$/Server/src/test/java/UserRepositoryTest.java" />
<option value="$PROJECT_DIR$/Server/src/test/java/greenify/server/data/repository/UserRepositoryTest.java" />
<option value="$PROJECT_DIR$/Server/src/main/java/greenify/server/service/UserService.java" />
<option value="$PROJECT_DIR$/Server/src/test/java/greenify/server/service/UserServiceTest.java" />
<option value="$PROJECT_DIR$/Server/src/main/java/greenify/server/rest/UserController.java" />
<option value="$PROJECT_DIR$/Server/src/main/java/greenify/server/rest/MainController.java" />
<option value="$PROJECT_DIR$/Server/src/test/java/ApplicationTest.java" />
<option value="$PROJECT_DIR$/Server/src/test/java/greenify/server/rest/UserControllerTest.java" />
<option value="$PROJECT_DIR$/../build.gradle" />
</list>
</option>
</component>
<component name="MavenProjectNavigator">
<treeState>
<expand />
<select />
</treeState>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="-9" />
<option name="y" value="-9" />
<option name="width" value="1110" />
<option name="height" value="1040" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectView">
<navigator currentView="Scope" currentSubView="Scope 'Project Files'; set:Project Files; class com.intellij.psi.search.scope.ProjectFilesScope" proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="ProjectPane" />
<pane id="Scope">
<subPane subId="Scope 'Project Files'; set:Project Files; class com.intellij.psi.search.scope.ProjectFilesScope">
<expand>
<path>
<item name="src" type="3d21c010:ScopeViewTreeModel$ProjectNode" />
<item name="OOPP" type="2674bda8:ScopeViewTreeModel$GroupNode" />
</path>
<path>
<item name="src" type="3d21c010:ScopeViewTreeModel$ProjectNode" />
<item name="OOPP" type="2674bda8:ScopeViewTreeModel$GroupNode" />
<item name="src" type="2674bda8:ScopeViewTreeModel$GroupNode" />
</path>
<path>
<item name="src" type="3d21c010:ScopeViewTreeModel$ProjectNode" />
<item name="OOPP" type="2674bda8:ScopeViewTreeModel$GroupNode" />
<item name="src" type="2674bda8:ScopeViewTreeModel$GroupNode" />
<item name="Server" type="2674bda8:ScopeViewTreeModel$GroupNode" />
</path>
<path>
<item name="src" type="3d21c010:ScopeViewTreeModel$ProjectNode" />
<item name="OOPP" type="2674bda8:ScopeViewTreeModel$GroupNode" />
<item name="src" type="2674bda8:ScopeViewTreeModel$GroupNode" />
<item name="Server" type="2674bda8:ScopeViewTreeModel$GroupNode" />
<item name="main" type="2674bda8:ScopeViewTreeModel$GroupNode" />
</path>
<path>
<item name="src" type="3d21c010:ScopeViewTreeModel$ProjectNode" />
<item name="OOPP" type="2674bda8:ScopeViewTreeModel$GroupNode" />
<item name="src" type="2674bda8:ScopeViewTreeModel$GroupNode" />
<item name="Server" type="2674bda8:ScopeViewTreeModel$GroupNode" />
<item name="main" type="2674bda8:ScopeViewTreeModel$GroupNode" />
<item name="resources" type="9f88c78c:ScopeViewTreeModel$FileNode" />
</path>
<path>
<item name="src" type="3d21c010:ScopeViewTreeModel$ProjectNode" />
<item name="OOPP" type="2674bda8:ScopeViewTreeModel$GroupNode" />
<item name="C:\Users\ceren\Desktop\lastGreenify\template-master" type="442cc68d:ScopeViewTreeModel$RootNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="PackagesPane" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="Downloaded.Files.Path.Enabled" value="false" />
<property name="Repository.Attach.Annotations" value="false" />
<property name="Repository.Attach.JavaDocs" value="false" />
<property name="Repository.Attach.Sources" value="false" />
<property name="ToolWindowCheckStyle.ShowToolbar" value="false" />
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1552831813951" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../../My Courses/OOP project/OOPP" />
<property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.2" />
<property name="settings.editor.selected.configurable" value="org.infernus.idea.checkstyle.CheckStyleConfigurable" />
</component>
<component name="RecentsManager">
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
<recent name="gogreen.client" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="C:\Users\ceren\Desktop\lastGreenify\template-master\src\Server\src\test\java\greenify\server\rest" />
</key>
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager" selected="Gradle.src::Users:ceren:Desktop:lastGreenify:template-master [build]">
<configuration name="src:Client [bootRun]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$/Client" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="bootRun" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
<method v="2" />
</configuration>
<configuration name="src:Server [bootRun]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$/Server" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="bootRun" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
<method v="2" />
</configuration>
<configuration name="src::Users:ceren:Desktop:lastGreenify:template-master [bootRun]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$/.." />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="bootRun" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
<method v="2" />
</configuration>
<configuration name="src::Users:ceren:Desktop:lastGreenify:template-master [build]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$/.." />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="build" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
<method v="2" />
</configuration>
<configuration name="src::Users:ceren:Desktop:lastGreenify:template-master [clean]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$/.." />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="clean" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
<method v="2" />
</configuration>
<configuration name="UserControllerTest" type="JUnit" factoryName="JUnit" nameIsGenerated="true">
<module name="OOPP.Server.test" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="gogreen.server.rest.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="gogreen.server.rest" />
<option name="MAIN_CLASS_NAME" value="gogreen.server.rest.UserControllerTest" />
<option name="TEST_OBJECT" value="class" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<recent_temporary>
<list>
<item itemvalue="Gradle.src::Users:ceren:Desktop:lastGreenify:template-master [build]" />
<item itemvalue="Gradle.src::Users:ceren:Desktop:lastGreenify:template-master [clean]" />
<item itemvalue="Gradle.src::Users:ceren:Desktop:lastGreenify:template-master [bootRun]" />
<item itemvalue="Gradle.src:Client [bootRun]" />
<item itemvalue="Gradle.src:Server [bootRun]" />
</list>
</recent_temporary>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="317f638e-9a63-4072-b3f3-0ddf783c2024" name="Default Changelist" comment="" />
<created>1551642695221</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1551642695221</updated>
</task>
<servers />
</component>
<component name="TestHistory">
<history-entry file="src_Server_[test] - 2019.03.17 at 13h 45m 33s.xml">
<configuration name="src:Server [test]" configurationId="GradleRunConfiguration" />
</history-entry>
<history-entry file="src_Server_[test] - 2019.03.17 at 13h 48m 28s.xml">
<configuration name="src:Server [test]" configurationId="GradleRunConfiguration" />
</history-entry>
<history-entry file="src_Server_[test] - 2019.03.17 at 13h 49m 13s.xml">
<configuration name="src:Server [test]" configurationId="GradleRunConfiguration" />
</history-entry>
<history-entry file="src_Server_[test] - 2019.03.17 at 13h 51m 31s.xml">
<configuration name="src:Server [test]" configurationId="GradleRunConfiguration" />
</history-entry>
<history-entry file="src_Server_[test] - 2019.03.17 at 13h 52m 57s.xml">
<configuration name="src:Server [test]" configurationId="GradleRunConfiguration" />
</history-entry>
<history-entry file="src_Server_[test] - 2019.03.17 at 13h 53m 31s.xml">
<configuration name="src:Server [test]" configurationId="GradleRunConfiguration" />
</history-entry>
<history-entry file="UserControllerTest_(1) - 2019.03.17 at 13h 56m 29s.xml">
<configuration name="UserControllerTest (1)" configurationId="JUnit" />
</history-entry>
<history-entry file="UserControllerTest_(1) - 2019.03.17 at 13h 57m 01s.xml">
<configuration name="UserControllerTest (1)" configurationId="JUnit" />
</history-entry>
<history-entry file="UserControllerTest_(1) - 2019.03.17 at 13h 57m 25s.xml">
<configuration name="UserControllerTest (1)" configurationId="JUnit" />
</history-entry>
<history-entry file="UserControllerTest_(1) - 2019.03.17 at 14h 02m 58s.xml">
<configuration name="UserControllerTest (1)" configurationId="JUnit" />
</history-entry>
</component>
<component name="TodoView">
<todo-panel id="selected-file">
<is-autoscroll-to-source value="true" />
</todo-panel>
<todo-panel id="all">
<are-packages-shown value="true" />
<is-autoscroll-to-source value="true" />
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
<layout>
<window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.49789914" visible="true" weight="0.67785233" />
<window_info id="Structure" order="1" sideWeight="0.5021008" side_tool="true" weight="0.17315437" />
<window_info id="Image Layers" order="2" />
<window_info id="Designer" order="3" />
<window_info id="Capture Tool" order="4" />
<window_info id="UI Designer" order="5" />
<window_info id="Favorites" order="6" side_tool="true" />
<window_info anchor="bottom" id="Messages" order="0" sideWeight="0.4986577" weight="0.32719547" />
<window_info anchor="bottom" id="Message" order="1" />
<window_info anchor="bottom" id="Find" order="2" />
<window_info anchor="bottom" id="Run" order="3" sideWeight="0.88590604" visible="true" weight="0.41926345" />
<window_info anchor="bottom" id="Debug" order="4" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="5" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="6" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="7" weight="0.32719547" />
<window_info anchor="bottom" id="Terminal" order="8" sideWeight="0.49932885" weight="0.32719547" />
<window_info anchor="bottom" id="Event Log" order="9" sideWeight="0.11409396" side_tool="true" weight="0.41926345" />
<window_info anchor="bottom" id="Version Control" order="10" weight="0.3286119" />
<window_info anchor="bottom" id="Build" order="11" weight="0.3286119" />
<window_info anchor="bottom" id="CheckStyle" order="12" weight="0.3295129" />
<window_info anchor="right" id="Coverage" order="0" sideWeight="0.8077922" side_tool="true" visible="true" weight="0.4395973" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="1" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="2" weight="0.24966443" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="3" weight="0.25" />
<window_info anchor="right" id="Palette" order="4" />
<window_info anchor="right" id="Maven" order="5" weight="0.32885906" />
<window_info anchor="right" id="Theme Preview" order="6" />
<window_info anchor="right" id="Capture Analysis" order="7" />
<window_info anchor="right" id="Palette&#9;" order="8" />
<window_info anchor="right" id="Gradle" order="9" sideWeight="0.1922078" weight="0.23959732" />
</layout>
<layout-to-restore>
<window_info content_ui="combo" id="Project" order="0" sideWeight="0.49789914" weight="0.67785233" />
<window_info id="Structure" order="1" sideWeight="0.5021008" side_tool="true" weight="0.17315437" />
<window_info id="Image Layers" order="2" />
<window_info id="Designer" order="3" />
<window_info id="Capture Tool" order="4" />
<window_info id="UI Designer" order="5" />
<window_info id="Favorites" order="6" side_tool="true" />
<window_info anchor="bottom" id="Messages" order="0" sideWeight="0.4986577" weight="0.32719547" />
<window_info anchor="bottom" id="Message" order="1" />
<window_info anchor="bottom" id="Find" order="2" />
<window_info anchor="bottom" id="Run" order="3" sideWeight="0.88590604" visible="true" weight="0.41926345" />
<window_info anchor="bottom" id="Debug" order="4" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="5" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="6" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="7" weight="0.32719547" />
<window_info anchor="bottom" id="Terminal" order="8" sideWeight="0.49932885" weight="0.32719547" />
<window_info anchor="bottom" id="Event Log" order="9" sideWeight="0.11409396" side_tool="true" visible="true" weight="0.41926345" />
<window_info anchor="bottom" id="Version Control" order="10" weight="0.3286119" />
<window_info anchor="bottom" id="Build" order="11" weight="0.3286119" />
<window_info anchor="bottom" id="CheckStyle" order="12" weight="0.3295129" />
<window_info anchor="right" id="Coverage" order="0" sideWeight="0.8077922" side_tool="true" visible="true" weight="0.4395973" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="1" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="2" weight="0.24966443" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="3" weight="0.25" />
<window_info anchor="right" id="Palette" order="4" />
<window_info anchor="right" id="Maven" order="5" weight="0.32885906" />
<window_info anchor="right" id="Theme Preview" order="6" />
<window_info anchor="right" id="Capture Analysis" order="7" />
<window_info anchor="right" id="Palette&#9;" order="8" />
<window_info anchor="right" id="Gradle" order="9" sideWeight="0.1922078" weight="0.23959732" />
</layout-to-restore>
</component>
<component name="antWorkspaceConfiguration">
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/settings.gradle" />
<entry file="file://$PROJECT_DIR$/Client/src/main/java/gogreen/client/rest/UserService.java" />
<entry file="file://$PROJECT_DIR$/Client/src/main/java/gogreen/client/controller/UserController.java" />
<entry file="file://$PROJECT_DIR$/Client/src/main/java/gogreen/client/Application.java" />
<entry file="file://$PROJECT_DIR$/../settings.gradle">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/Server/build/reports/tests/test/index.html" />
<entry file="file://$PROJECT_DIR$/.idea/vcs.xml">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/resources/application.properties" />
<entry file="file://$PROJECT_DIR$/Server/src/application.properties" />
<entry file="file://$PROJECT_DIR$/.idea/misc.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="102">
<caret line="6" column="10" selection-start-line="6" selection-start-column="10" selection-end-line="6" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.idea/workspace.xml">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.springframework/spring-test/5.0.9.RELEASE/e1e6cff03e69e4db489d723c9a1c91afe8e0c637/spring-test-5.0.9.RELEASE-sources.jar!/org/springframework/test/context/cache/DefaultCacheAwareContextLoaderDelegate.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1513">
<caret line="124" selection-start-line="124" selection-end-line="124" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/test/java/MainControllerTest.java" />
<entry file="file://$PROJECT_DIR$/Common/src/test/java/ErrorResponseTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="374">
<caret line="22" column="1" selection-start-line="22" selection-start-column="1" selection-end-line="22" selection-end-column="1" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Common/build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="204">
<caret line="12" column="22" selection-start-line="12" selection-start-column="22" selection-end-line="12" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/main/java/greenify/server/data/repository/UserJpaRepository.java" />
<entry file="file://$PROJECT_DIR$/Common/src/test/java/UserDTOTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="377">
<caret line="24" column="1" selection-start-line="24" selection-start-column="1" selection-end-line="24" selection-end-column="1" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Common/src/main/java/greenify/common/UserDTO.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="187">
<caret line="11" column="22" selection-start-line="11" selection-start-column="22" selection-end-line="11" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/main/resources/stylesheets/dashboardStyle.css">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="527">
<caret line="31" selection-start-line="31" selection-end-line="31" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/main/resources/fxml/RegisterWindow.fxml">
<provider editor-type-id="JavaFX-Scene-Builder" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="393">
<caret line="44" selection-start-line="44" selection-end-line="44" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../CSE1105.checkstyle.xml">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/main/resources/fxml/dashboard.fxml">
<provider editor-type-id="JavaFX-Scene-Builder" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="102">
<caret line="6" column="34" selection-start-line="6" selection-start-column="34" selection-end-line="6" selection-end-column="34" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/main/resources/fxml/sample.fxml">
<provider editor-type-id="JavaFX-Scene-Builder" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="19" column="48" selection-start-line="19" selection-start-column="48" selection-end-line="19" selection-end-column="48" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/main/resources/application.properties">
<provider selected="true" editor-type-id="text-editor">
<state>
<caret column="53" selection-start-column="53" selection-end-column="53" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/main/java/greenify/server/data/model/User.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="697">
<caret line="41" lean-forward="true" selection-start-line="41" selection-end-line="41" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/main/java/greenify/client/controller/DashBoardController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
<caret line="69" column="8" selection-start-line="69" selection-start-column="8" selection-end-line="69" selection-end-column="8" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/main/java/greenify/client/controller/RegisterWindowController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="35">
<caret line="27" column="32" selection-start-line="27" selection-start-column="32" selection-end-line="27" selection-end-column="32" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/main/java/greenify/client/controller/UserController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1000">
<caret line="102" column="25" selection-start-line="102" selection-start-column="25" selection-end-line="102" selection-end-column="25" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/main/java/greenify/client/rest/UserService.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-585">
<caret line="17" column="10" selection-start-line="17" selection-start-column="10" selection-end-line="17" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/test/java/ApplicationStartTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="187">
<caret line="11" column="1" lean-forward="true" selection-start-line="11" selection-start-column="1" selection-end-line="11" selection-end-column="1" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#229#230#0" expanded="true" />
<element signature="e#285#286#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/test/java/ApplicationTest.java">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/main/java/greenify/client/Application.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-193">
<caret line="13" column="13" selection-start-line="13" selection-start-column="13" selection-end-line="13" selection-end-column="13" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#664#665#0" expanded="true" />
<element signature="e#692#693#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/test/java/UserRepoIntegrationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="68">
<caret line="4" column="62" selection-start-line="4" selection-start-column="62" selection-end-line="4" selection-end-column="62" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/main/java/greenify/server/data/repository/UserRepository.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="170">
<caret line="10" selection-start-line="10" selection-end-line="10" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/5.0.9.RELEASE/ab4feec73b188109eb1a3aa8aed83c1f97ed1168/spring-core-5.0.9.RELEASE-sources.jar!/org/springframework/util/Assert.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="164">
<caret line="72" selection-start-line="72" selection-end-line="72" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="158">
<caret line="37" column="58" selection-start-line="37" selection-start-column="58" selection-end-line="37" selection-end-column="58" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/test/java/UserServiceTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="639">
<caret line="46" column="104" selection-start-line="46" selection-start-column="104" selection-end-line="46" selection-end-column="104" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/test/java/greenify/server/data/model/UserTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="238">
<caret line="14" column="6" lean-forward="true" selection-start-line="14" selection-start-column="6" selection-end-line="14" selection-end-column="6" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/main/java/greenify/server/service/UserService.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="650">
<caret line="67" lean-forward="true" selection-start-line="67" selection-end-line="67" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Common/src/main/java/greenify/common/ApplicationException.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="34">
<caret line="2" column="13" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Common/src/main/java/greenify/common/ErrorResponse.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="204">
<caret line="18" column="1" selection-start-line="18" selection-start-column="1" selection-end-line="18" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/main/java/greenify/server/rest/RestExceptionHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="170">
<caret line="17" lean-forward="true" selection-start-line="17" selection-end-line="17" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/test/java/greenify/server/data/repository/UserRepositoryTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="85">
<caret line="5" column="48" selection-start-line="5" selection-start-column="48" selection-end-line="5" selection-end-column="48" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/main/java/greenify/server/rest/MainController.java">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/test/java/greenify/server/rest/UserControllerTest.java">
<provider selected="true" editor-type-id="text-editor">
<state>
<caret selection-start-column="2" selection-end-column="31" />
<folding>
<element signature="e#0#2734#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/test/java/greenify/server/service/UserServiceTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="19" column="13" selection-start-line="19" selection-start-column="13" selection-end-line="19" selection-end-column="13" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/test/java/ApplicationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="221">
<caret line="13" column="50" selection-start-line="13" selection-start-column="50" selection-end-line="13" selection-end-column="50" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/main/java/greenify/server/Application.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="136">
<caret line="9" selection-start-line="9" selection-end-line="9" />
<folding>
<element signature="e#303#304#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/main/java/greenify/server/rest/UserController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="114">
<caret line="16" column="4" selection-start-line="16" selection-start-column="4" selection-end-line="16" selection-end-column="4" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="247">
<caret line="23" column="49" selection-start-line="23" selection-start-column="49" selection-end-line="23" selection-end-column="49" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/main/resources/application.properties">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="85">
<caret line="5" column="30" selection-start-line="5" selection-start-column="30" selection-end-line="5" selection-end-column="30" />
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
<state key="ArtifactsStructureConfigurable.UI">
<settings>
<artifact-editor />
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="FacetStructureConfigurable.UI">
<settings>
<last-edited>No facets are configured</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="GlobalLibrariesConfigurable.UI">
<settings>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="JdkListConfigurable.UI">
<settings>
<last-edited>10</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ModuleStructureConfigurable.UI">
<settings>
<last-edited>test|Client|OOPP</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
<option value="0.6" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>10</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ProjectLibrariesConfigurable.UI">
<settings>
<last-edited>Gradle: antlr:antlr:2.7.7</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>OOPP</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@@ -1,270 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="output" path="bin/default"/>
<classpathentry output="bin/main" kind="src" path="src/main/java">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry output="bin/main" kind="src" path="src/main/resources">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry output="bin/test" kind="src" path="src/test/java">
<attributes>
<attribute name="gradle_scope" value="test"/>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry output="bin/test" kind="src" path="src/test/resources">
<attributes>
<attribute name="gradle_scope" value="test"/>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
<classpathentry kind="src" path="/Common"/>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter/2.0.5.RELEASE/c5534877dc729859b2923cd4b508d8dff0459e81/spring-boot-starter-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter/2.0.5.RELEASE/1f53487a373be18d064a5815e9bac9882ef15cdc/spring-boot-starter-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-web/5.0.9.RELEASE/c19005e8a2a2216b0e9da304f1dce8ba0d72e110/spring-web-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-web/5.0.9.RELEASE/1ea3aab93340849313fa74ec626ddaf1fff9ed8e/spring-web-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.9.6/dad3a9fbbedf8781dfd138539cd82638ebad5678/jackson-databind-2.9.6-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.9.6/cfa4f316351a91bfd95cb0644c6a2c95f52db1fc/jackson-databind-2.9.6.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-autoconfigure/2.0.5.RELEASE/345d299a67dc64b34b4a8b7f13a99f09d271384b/spring-boot-autoconfigure-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-autoconfigure/2.0.5.RELEASE/e5588642799e0c0c04638e255c3d3f31ba400ff4/spring-boot-autoconfigure-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot/2.0.5.RELEASE/1d01cb7845c049c204191b8a553a322bb97208d9/spring-boot-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot/2.0.5.RELEASE/19a4624cbd89a318d10c79f289c6c816043850fb/spring-boot-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-logging/2.0.5.RELEASE/70e5c3d900e7317df83f8d885204e1486b9f4086/spring-boot-starter-logging-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-logging/2.0.5.RELEASE/c353e0b9591d0765c687ff0a678478cbebfd5c23/spring-boot-starter-logging-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/javax.annotation/javax.annotation-api/1.3.2/65dfd2c47380bf72ec62a5b8c4ceb78a4eda1a53/javax.annotation-api-1.3.2-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/javax.annotation/javax.annotation-api/1.3.2/934c04d3cfef185a8008e7bf34331b79730a9d43/javax.annotation-api-1.3.2.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-context/5.0.9.RELEASE/bf1c19aadae4724bfe7e9196652e649bb08a99c4/spring-context-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-context/5.0.9.RELEASE/2501e55acb6c2e84667cda3f845d1d00a0dc4e05/spring-context-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aop/5.0.9.RELEASE/beafb55eae32edb39351cb84594261a60d12219c/spring-aop-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aop/5.0.9.RELEASE/98003b099697fe46b6bdf18c7e3f66d7a1381060/spring-aop-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/5.0.9.RELEASE/1cfee1c1857cda6542f478ef8fe7d2fdb6c3b20/spring-beans-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/5.0.9.RELEASE/65f56fdab1bb90ad059e314d2f2f4cf76f9bdbde/spring-beans-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-expression/5.0.9.RELEASE/9302d930f932ee20b76bdbf1a5ee69485e2cec91/spring-expression-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-expression/5.0.9.RELEASE/1f9db5ff3a758102c0434cc3457aa47c50c39a4a/spring-expression-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/5.0.9.RELEASE/ab4feec73b188109eb1a3aa8aed83c1f97ed1168/spring-core-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/5.0.9.RELEASE/9f9a828936d81afd49a603bda9cc1aed863a0d85/spring-core-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-annotations/2.9.0/a0ad4e203304ccab7e01266fa814115850edb8a9/jackson-annotations-2.9.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-annotations/2.9.0/7c10d545325e3a6e72e06381afe469fd40eb701/jackson-annotations-2.9.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.9.6/297b561cc2ca89e07bf4cb6445c08260b524aa4d/jackson-core-2.9.6-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.9.6/4e393793c37c77e042ccc7be5a914ae39251b365/jackson-core-2.9.6.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/cfd5385e0c5ed1c8a5dce57d86e79cf357153a64/logback-classic-1.2.3-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/7c4f3c474fb2c041d8028740440937705ebb473a/logback-classic-1.2.3.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-to-slf4j/2.10.0/46a8b1af336942d55acf0cd64d19ea9656b926be/log4j-to-slf4j-2.10.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-to-slf4j/2.10.0/f7e631ccf49cfc0aefa4a2a728da7d374c05bd3c/log4j-to-slf4j-2.10.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.slf4j/jul-to-slf4j/1.7.25/bcea1530927f59b5128841d3571f879ce3af2e86/jul-to-slf4j-1.7.25-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.slf4j/jul-to-slf4j/1.7.25/af5364cd6679bfffb114f0dec8a157aaa283b76/jul-to-slf4j-1.7.25.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jcl/5.0.9.RELEASE/e9b074f7956e9f5887f807a84f5093d2437101f6/spring-jcl-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jcl/5.0.9.RELEASE/bc3b5aaae53f0bc03647e53ecbd98a05b47a4e90/spring-jcl-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-core/1.2.3/3ebabe69eba0196af9ad3a814f723fb720b9101e/logback-core-1.2.3-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-core/1.2.3/864344400c3d4d92dfeb0a305dc87d953677c03c/logback-core-1.2.3.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.25/962153db4a9ea71b79d047dfd1b2a0d80d8f4739/slf4j-api-1.7.25-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.25/da76ca59f6a57ee3102f8f9bd9cee742973efa8a/slf4j-api-1.7.25.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.10.0/fd42afa6acbfb3801accec744106ee28b9342567/log4j-api-2.10.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.10.0/fec5797a55b786184a537abd39c3fa1449d752d6/log4j-api-2.10.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.19/3110a637bd11c3094b8017dd1c29fd29baccf292/snakeyaml-1.19-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.19/2d998d3d674b172a588e54ab619854d073f555b5/snakeyaml-1.19.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-test/2.0.5.RELEASE/63bb6b012526adbfec7fcef3fcb538c940857bf1/spring-boot-starter-test-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-test/2.0.5.RELEASE/ab04ca2e76f6a8e786001352a81a10e4b0e7fbc8/spring-boot-starter-test-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa/junit-4.12-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.4.0/1c4c344124325ada996131e1ba8bbe26108a869f/junit-jupiter-api-5.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.4.0/1a09f25a160f71c267f9ebe3b229b17805c683e9/junit-jupiter-api-5.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-test-autoconfigure/2.0.5.RELEASE/74e295510aec31cf95543f59b7d4737d4db0e1b9/spring-boot-test-autoconfigure-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-test-autoconfigure/2.0.5.RELEASE/54d5e8f9e88c6236fe164474f0aed5a8a1052c43/spring-boot-test-autoconfigure-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-test/2.0.5.RELEASE/c859a6b33a5a1dc9b3d2c4b07fd797405a1c1a2d/spring-boot-test-2.0.5.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-test/2.0.5.RELEASE/ce6353f33217982357a6bdba6576015ea333304c/spring-boot-test-2.0.5.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-test/5.0.9.RELEASE/e1e6cff03e69e4db489d723c9a1c91afe8e0c637/spring-test-5.0.9.RELEASE-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.springframework/spring-test/5.0.9.RELEASE/218c8648f898453be92d550252e0ce2a84b54375/spring-test-5.0.9.RELEASE.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/47a7ee46628ab7133129cd7cef1e92657bc275e/hamcrest-library-1.3-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/4785a3c21320980282f9f33d0d1264a69040538f/hamcrest-library-1.3.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.jayway.jsonpath/json-path/2.4.0/c43fc506196089da87a7bb36ec847b57072a818b/json-path-2.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.jayway.jsonpath/json-path/2.4.0/765a4401ceb2dc8d40553c2075eb80a8fa35c2ae/json-path-2.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.assertj/assertj-core/3.9.1/ff4bb4ed665db8ba2d5fb9a3bf84aed3f5d25d00/assertj-core-3.9.1-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.assertj/assertj-core/3.9.1/c5ce126b15f28d56cd8f960c1a6a058b9c9aea87/assertj-core-3.9.1.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-core/2.15.0/46e8ee5e6fdfaee85be74093e324d53c881e0567/mockito-core-2.15.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-core/2.15.0/b84bfbbc29cd22c9529409627af6ea2897f4fa85/mockito-core-2.15.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.skyscreamer/jsonassert/1.5.0/d729b258165a2fd9b5d6156c05c4c4f7ca053117/jsonassert-1.5.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.skyscreamer/jsonassert/1.5.0/6c9d5fe2f59da598d9aefc1cfc6528ff3cf32df3/jsonassert-1.5.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.xmlunit/xmlunit-core/2.5.1/3a18fafaf3081b8f76dcc75fc9419c340722762a/xmlunit-core-2.5.1-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.xmlunit/xmlunit-core/2.5.1/4ffdb346572a7356f7521cd3119ce5287d2e339d/xmlunit-core-2.5.1.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.4.0/12517867d09f09a4e829b80bfc958f69d883fc11/junit-platform-commons-1.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.4.0/e0b2ed8fac32ad6469d75d034e759f1969db8dda/junit-platform-commons-1.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.0.0/777508fa9f3e03cafb3c1fb2eba3dca317f4b1ee/apiguardian-api-1.0.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.0.0/3ef5276905e36f4d8055fe3cb0bdcc7503ffc85d/apiguardian-api-1.0.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.1.1/88a3a2cb15c413565462cea99f201b67bc6d2f10/opentest4j-1.1.1-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.1.1/efd9f971e91074491ea55b19f67b13470cf4fcdd/opentest4j-1.1.1.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.minidev/json-smart/2.3/36c61f1b839bde5b284528cb76f6811efbe0f08b/json-smart-2.3-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.minidev/json-smart/2.3/7396407491352ce4fa30de92efb158adb76b5b/json-smart-2.3.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy/1.7.11/9785d11080136416a457c0d20ce0e404d14d1b01/byte-buddy-1.7.11-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy/1.7.11/f02857a4e2c66ccbe7aaad6100a0a6c461bce9b3/byte-buddy-1.7.11.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.7.11/2198b6a0d067b10c9ea58ff78feb66cd59d985a/byte-buddy-agent-1.7.11-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.7.11/b425a8933ca07edd03c6dbc8bc3b595fba9780de/byte-buddy-agent-1.7.11.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.objenesis/objenesis/2.6/96614f514a1031296657bf0dde452dc15e42fcb8/objenesis-2.6-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.objenesis/objenesis/2.6/639033469776fd37c08358c6b92a4761feb2af4b/objenesis-2.6.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.vaadin.external.google/android-json/0.0.20131108.vaadin1/bf42d7e47a3228513b626dd7d37ac6f072aeca4f/android-json-0.0.20131108.vaadin1-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/com.vaadin.external.google/android-json/0.0.20131108.vaadin1/fa26d351fe62a6a17f5cda1287c1c6110dec413f/android-json-0.0.20131108.vaadin1.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.minidev/accessors-smart/1.2/c837e3903ff07b478041f761915d764b98e71e05/accessors-smart-1.2-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/net.minidev/accessors-smart/1.2/c592b500269bfde36096641b01238a8350f8aa31/accessors-smart-1.2.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.0.4/112ff54474f1f04ccf1384c92e39fdc566f0bb5e/asm-5.0.4-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.0.4/da08b8cce7bbf903602a25a3a163ae252435795/asm-5.0.4.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.vintage/junit-vintage-engine/5.4.0/6230d6a5fc0b05a083a96babccbb5236312f9138/junit-vintage-engine-5.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.vintage/junit-vintage-engine/5.4.0/247fe2182965c52cda94320563b16f8907e86da6/junit-vintage-engine-5.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.4.0/6c8bbb6dc869058053ba370d5f9699656e2bc93/junit-jupiter-engine-5.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.4.0/30083adf3fbd7b734f12e6cb4d99dedab99fc34b/junit-jupiter-engine-5.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry sourcepath="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.4.0/44fdbe60e0df90028edf59d9ffdf06d9fc0e43d9/junit-platform-engine-1.4.0-sources.jar" kind="lib" path="C:/Users/Sem/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.4.0/b4419dc190a5d82b9cac6b52e0af9140895c3f87/junit-platform-engine-1.4.0.jar">
<attributes>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
</classpath>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel>
<module name="com.bettercoding.jfx.Client.main" target="1.8" />
<module name="com.bettercoding.jfx.Client.test" target="1.8" />
</bytecodeTargetLevel>
</component>
</project>

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
</project>

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="LOCAL" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="$USER_HOME$/scoop/apps/gradle/current" />
<option name="gradleJvm" value="#JAVA_HOME" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
<option name="useAutoImport" value="true" />
<option name="useQualifiedModuleNames" value="true" />
</GradleProjectSettings>
</option>
</component>
</project>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_10" project-jdk-name="10" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/src/main/resources.iml" filepath="$PROJECT_DIR$/src/main/resources.iml" />
</modules>
</component>
</project>

View File

@@ -1,124 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

View File

@@ -1,489 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="918c228e-df58-4afe-87d0-ebe11f05200c" name="Default Changelist" comment="" />
<ignored path="$PROJECT_DIR$/.gradle/" />
<ignored path="$PROJECT_DIR$/build/" />
<ignored path="$PROJECT_DIR$/out/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="CodeInsightWorkspaceSettings">
<option name="optimizeImportsOnTheFly" value="true" />
</component>
<component name="CoverageDataManager">
<SUITE FILE_PATH="coverage/Client$Application.ic" NAME="Application Coverage Results" MODIFIED="1551095783813" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false">
<FILTER>hello.*</FILTER>
</SUITE>
<SUITE FILE_PATH="coverage/Client$MessageTest.ic" NAME="MessageTest Coverage Results" MODIFIED="1551109702772" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/Client$ApplicationTest.ic" NAME="ApplicationTest Coverage Results" MODIFIED="1551106538746" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
</component>
<component name="CoverageViewManager">
<option name="myElementSize" value="231" />
</component>
<component name="ExternalProjectsData">
<projectState path="$PROJECT_DIR$">
<ProjectState />
</projectState>
</component>
<component name="ExternalProjectsManager">
<system id="GRADLE">
<state>
<task path="$PROJECT_DIR$">
<activation />
</task>
<projects_view>
<tree_state>
<expand>
<path>
<item name="" type="6a2764b6:ExternalProjectsStructure$RootNode" />
<item name="Client" type="f1a62948:ProjectNode" />
</path>
<path>
<item name="" type="6a2764b6:ExternalProjectsStructure$RootNode" />
<item name="Client" type="f1a62948:ProjectNode" />
<item name="Tasks" type="e4a08cd1:TasksNode" />
</path>
<path>
<item name="" type="6a2764b6:ExternalProjectsStructure$RootNode" />
<item name="Client" type="f1a62948:ProjectNode" />
<item name="Tasks" type="e4a08cd1:TasksNode" />
<item name="build" type="c8890929:TasksNode$1" />
</path>
</expand>
<select />
</tree_state>
</projects_view>
</state>
</system>
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/hello/Application.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="442">
<caret line="26" column="74" lean-forward="true" selection-start-line="26" selection-start-column="74" selection-end-line="26" selection-end-column="74" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#590#591#0" expanded="true" />
<element signature="e#646#647#0" expanded="true" />
<element signature="e#725#726#0" expanded="true" />
<element signature="e#763#764#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/hello/Message.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="19" column="5" lean-forward="true" selection-start-line="19" selection-start-column="5" selection-end-line="19" selection-end-column="5" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="595">
<caret line="35" column="2" selection-start-line="35" selection-start-column="2" selection-end-line="35" selection-end-column="2" />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Class" />
</list>
</option>
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/main/java/hello/MyApp.java" />
<option value="$PROJECT_DIR$/src/test/java/MessageTest.java" />
<option value="$PROJECT_DIR$/src/main/java/hello/Application.java" />
<option value="$PROJECT_DIR$/build.gradle" />
<option value="$PROJECT_DIR$/src/main/java/hello/Message.java" />
<option value="$PROJECT_DIR$/src/test/java/ApplicationTest.java" />
</list>
</option>
</component>
<component name="MavenProjectNavigator">
<treeState>
<expand />
<select />
</treeState>
</component>
<component name="ProjectFrameBounds">
<option name="x" value="-8" />
<option name="width" value="977" />
<option name="height" value="1038" />
</component>
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes />
</component>
<component name="PropertiesComponent">
<property name="Downloaded.Files.Path.Enabled" value="false" />
<property name="Repository.Attach.Annotations" value="false" />
<property name="Repository.Attach.JavaDocs" value="false" />
<property name="Repository.Attach.Sources" value="false" />
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1551445524907" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.2" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager" selected="JUnit.MessageTest">
<configuration name="Application" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="hello.Application" />
<module name="Client.main" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="hello.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="MyApp" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="hello.MyApp" />
<module name="com.bettercoding.jfx.Client.main" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="hello.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="Client [build]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="build" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
<method v="2" />
</configuration>
<configuration name="ApplicationTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="Client.test" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="ApplicationTest" />
<option name="TEST_OBJECT" value="class" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="MessageTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="Client.test" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="MessageTest" />
<option name="TEST_OBJECT" value="class" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<recent_temporary>
<list>
<item itemvalue="JUnit.MessageTest" />
<item itemvalue="JUnit.ApplicationTest" />
<item itemvalue="Application.MyApp" />
<item itemvalue="Gradle.Client [build]" />
<item itemvalue="Application.Application" />
</list>
</recent_temporary>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="918c228e-df58-4afe-87d0-ebe11f05200c" name="Default Changelist" comment="" />
<created>1550791437583</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1550791437583</updated>
</task>
<servers />
</component>
<component name="TestHistory">
<history-entry file="MessageTest - 2019.02.25 at 15h 45m 48s.xml">
<configuration name="MessageTest" configurationId="JUnit" />
</history-entry>
<history-entry file="MessageTest - 2019.02.25 at 15h 45m 52s.xml">
<configuration name="MessageTest" configurationId="JUnit" />
</history-entry>
<history-entry file="MessageTest - 2019.02.25 at 15h 46m 13s.xml">
<configuration name="MessageTest" configurationId="JUnit" />
</history-entry>
<history-entry file="ApplicationTest - 2019.02.25 at 15h 50m 09s.xml">
<configuration name="ApplicationTest" configurationId="JUnit" />
</history-entry>
<history-entry file="ApplicationTest - 2019.02.25 at 15h 52m 02s.xml">
<configuration name="ApplicationTest" configurationId="JUnit" />
</history-entry>
<history-entry file="ApplicationTest - 2019.02.25 at 15h 52m 16s.xml">
<configuration name="ApplicationTest" configurationId="JUnit" />
</history-entry>
<history-entry file="ApplicationTest - 2019.02.25 at 15h 55m 39s.xml">
<configuration name="ApplicationTest" configurationId="JUnit" />
</history-entry>
<history-entry file="ApplicationTest - 2019.02.25 at 16h 20m 13s.xml">
<configuration name="ApplicationTest" configurationId="JUnit" />
</history-entry>
<history-entry file="ApplicationTest - 2019.02.25 at 16h 48m 20s.xml">
<configuration name="ApplicationTest" configurationId="JUnit" />
</history-entry>
<history-entry file="MessageTest - 2019.02.25 at 16h 48m 25s.xml">
<configuration name="MessageTest" configurationId="JUnit" />
</history-entry>
</component>
<component name="ToolWindowManager">
<frame x="-6" y="0" width="781" height="830" extended-state="0" />
<editor active="true" />
<layout>
<window_info content_ui="combo" id="Project" order="0" weight="0.41608876" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Image Layers" order="2" />
<window_info id="Designer" order="3" />
<window_info id="Capture Tool" order="4" />
<window_info id="UI Designer" order="5" />
<window_info id="Favorites" order="6" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" weight="0.3286119" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.39943343" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="bottom" id="Terminal" order="7" weight="0.38668555" />
<window_info anchor="bottom" id="Event Log" order="8" side_tool="true" />
<window_info anchor="bottom" id="Version Control" order="9" />
<window_info anchor="bottom" id="Build" order="10" weight="0.3286119" />
<window_info anchor="bottom" id="Messages" order="11" weight="0.3295129" />
<window_info anchor="right" id="Coverage" order="0" side_tool="true" visible="true" weight="0.19463088" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="1" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="2" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="3" weight="0.25" />
<window_info anchor="right" id="Palette" order="4" />
<window_info anchor="right" id="Gradle" order="5" weight="0.32871014" />
<window_info anchor="right" id="Theme Preview" order="6" />
<window_info anchor="right" id="Capture Analysis" order="7" />
<window_info anchor="right" id="Palette&#9;" order="8" />
<window_info anchor="right" id="Maven" order="9" weight="0.3289183" />
</layout>
<layout-to-restore>
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.47156727" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Image Layers" order="2" />
<window_info id="Designer" order="3" />
<window_info id="Capture Tool" order="4" />
<window_info id="UI Designer" order="5" />
<window_info id="Favorites" order="6" side_tool="true" />
<window_info anchor="bottom" id="Messages" order="0" weight="0.3295129" />
<window_info anchor="bottom" id="Message" order="1" />
<window_info anchor="bottom" id="Find" order="2" />
<window_info anchor="bottom" id="Run" order="3" weight="0.3295129" />
<window_info anchor="bottom" id="Debug" order="4" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="5" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="6" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="7" />
<window_info anchor="bottom" id="Terminal" order="8" visible="true" weight="0.30802292" />
<window_info anchor="bottom" id="Event Log" order="9" side_tool="true" />
<window_info anchor="bottom" id="Version Control" order="10" />
<window_info anchor="bottom" id="Build" order="11" weight="0.3295129" />
<window_info anchor="right" id="Coverage" order="0" side_tool="true" weight="0.32871014" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="1" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="2" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="3" weight="0.25" />
<window_info anchor="right" id="Palette" order="4" />
<window_info anchor="right" id="Maven" order="5" />
<window_info anchor="right" id="Gradle" order="6" weight="0.32871014" />
<window_info anchor="right" id="Theme Preview" order="7" />
<window_info anchor="right" id="Capture Analysis" order="8" />
<window_info anchor="right" id="Palette&#9;" order="9" />
</layout-to-restore>
</component>
<component name="editorHistoryManager">
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot/2.0.5.RELEASE/1d01cb7845c049c204191b8a553a322bb97208d9/spring-boot-2.0.5.RELEASE-sources.jar!/org/springframework/boot/CommandLineRunner.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="34" column="36" lean-forward="true" selection-start-line="34" selection-start-column="36" selection-end-line="34" selection-end-column="36" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/hello/MyApp.java" />
<entry file="file://$PROJECT_DIR$/src/main/java/hello/deletedApplication.txt" />
<entry file="file://$PROJECT_DIR$/src/test/java/ApplicationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="527">
<caret line="31" column="1" selection-start-line="31" selection-start-column="1" selection-end-line="31" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/MessageTest.java">
<provider selected="true" editor-type-id="text-editor">
<state>
<caret selection-end-line="2" selection-end-column="34" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="595">
<caret line="35" column="2" selection-start-line="35" selection-start-column="2" selection-end-line="35" selection-end-column="2" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/hello/Message.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="19" column="5" lean-forward="true" selection-start-line="19" selection-start-column="5" selection-end-line="19" selection-end-column="5" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/hello/Application.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="442">
<caret line="26" column="74" lean-forward="true" selection-start-line="26" selection-start-column="74" selection-end-line="26" selection-end-column="74" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#590#591#0" expanded="true" />
<element signature="e#646#647#0" expanded="true" />
<element signature="e#725#726#0" expanded="true" />
<element signature="e#763#764#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
<state key="ArtifactsStructureConfigurable.UI">
<settings>
<artifact-editor />
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="FacetStructureConfigurable.UI">
<settings>
<last-edited>No facets are configured</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="GlobalLibrariesConfigurable.UI">
<settings>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="JdkListConfigurable.UI">
<settings>
<last-edited>10</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ModuleStructureConfigurable.UI">
<settings>
<last-edited>main|com.bettercoding.jfx.Client</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
<option value="0.6" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>10</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ProjectLibrariesConfigurable.UI">
<settings>
<last-edited>Gradle: ch.qos.logback:logback-classic:1.2.3</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Client</name>
<comment></comment>
<projects/>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments/>
</buildCommand>
</buildSpec>
<linkedResources/>
<filteredResources/>
</projectDescription>

View File

@@ -39,8 +39,8 @@ test {
}
bootJar {
baseName = 'gs-consuming-rest'
version = '0.1.0'
baseName = 'greenify'
version = '1.0.0'
}
repositories {
@@ -48,6 +48,7 @@ repositories {
}
dependencies {
compile "org.bouncycastle:bcprov-jdk16:1.46", "org.bouncycastle:bcpg-jdk16:1.46", "org.bouncycastle:bcmail-jdk16:1.46", "org.bouncycastle:bctsp-jdk16:1.46"
compile("org.springframework.boot:spring-boot-starter")
compile("org.springframework:spring-web")
compile("com.fasterxml.jackson.core:jackson-databind")

View File

@@ -4,19 +4,21 @@ import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import java.io.IOException;
@SpringBootApplication
public class Application extends javafx.application.Application {
private static ConfigurableApplicationContext springContext;
private static final Logger log = LoggerFactory.getLogger(Application.class);
/**
* This (main) method starts launch.
* @param args the arguments
*/
public static void main(String[] args) {
launch(args);
}
@@ -33,22 +35,36 @@ public class Application extends javafx.application.Application {
return loader.load();
}
/**
* This method initializes the application.
*/
@Override
public void init() throws Exception {
public void init() {
springContext = SpringApplication.run(Application.class);
}
/**
* This method opens the login window.
* @param primaryStage the login window
* @throws Exception in case fxml file is not found
*/
@Override
public void start(Stage primaryStage) throws Exception {
Parent rootNode = load(this.getClass().getClassLoader().getResource("fxml/sample.fxml"));
Parent rootNode = load(this.getClass().getClassLoader()
.getResource("fxml/LoginWindow.fxml"));
primaryStage.setTitle("Greenify");
Scene scene = new Scene(rootNode);
scene.getStylesheets().add(getClass().getClassLoader().getResource(
"stylesheets/LoginWindowStyle.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* This method stops the application.
*/
@Override
public void stop() {
springContext.stop();
}
}
}

View File

@@ -0,0 +1,533 @@
package greenify.client.controller;
import greenify.client.Application;
import greenify.client.rest.UserService;
import javafx.animation.FadeTransition;
import javafx.animation.Interpolator;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.ParallelTransition;
import javafx.animation.Timeline;
import javafx.animation.TranslateTransition;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.Slider;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.stage.Window;
import javafx.util.Duration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import java.io.IOException;
import java.text.DecimalFormat;
@Controller
public class CalculatorController {
@Autowired
UserService userService;
@Autowired
DashBoardController controller;
@Autowired
ExtraActivityController extraActivityController;
//navigation panes
@FXML
private AnchorPane getStartedPane;
@FXML
private AnchorPane travelPane;
@FXML
private AnchorPane homePane;
@FXML
private ScrollPane foodPane;
@FXML
private AnchorPane shoppingPane;
//'get started' pane
@FXML
private Slider peopleInHouseholdSlider;
@FXML
private Label peopleInHouseHoldLabel;
@FXML
private Slider annualIncomeSlider;
@FXML
private Label annualIncomeLabel;
@FXML
private Button saveButton;
//travel pane
@FXML
private TextField publicTransitField;
@FXML
private TextField airplaneTravelField;
@FXML
private TextField carTravelGasolineField;
@FXML
private Slider carTravelGasolineSlider;
@FXML
private Label carTravelGasolineLabel;
@FXML
private TextField carTravelDieselField;
@FXML
private Slider carTravelDieselSlider;
@FXML
private Label carTravelDieselLabel;
@FXML
private TextField carTravelElectricField;
@FXML
private Slider carTravelElectricSlider;
@FXML
private Label carTravelElectricLabel;
//home pane
@FXML
private TextField electricityField;
@FXML
private Slider cleanEnergyPurchasedSlider;
@FXML
private Label cleanEnergyPurchasedLabel;
@FXML
private TextField naturalGasField;
@FXML
private TextField heatingOilField;
@FXML
private TextField livingSpaceField;
@FXML
private Slider waterUsageSlider;
@FXML
private Label waterUsageLabel;
//food pane
@FXML
private Slider meatFishEggsSlider;
@FXML
private Label meatFishEggsLabel;
@FXML
private Slider grainsBakedGoodsSlider;
@FXML
private Label grainsBakedGoodsLabel;
@FXML
private Slider dairySlider;
@FXML
private Label dairyLabel;
@FXML
private Slider fruitsVegetablesSlider;
@FXML
private Label fruitsVegetablesLabel;
@FXML
private Slider snacksDrinksSlider;
@FXML
private Label snacksDrinksLabel;
//shopping pane
@FXML
private Text goodsField;
@FXML
private Text servicesField;
@FXML
private Slider goodsSlider;
@FXML
private Label goodsLabel;
@FXML
private Slider servicesSlider;
@FXML
private Label servicesLabel;
//extra pane
@FXML
private AnchorPane extraPane;
/**
* 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 they are associated with.
*/
@SuppressWarnings("Duplicates")
public void initialize() {
peopleInHouseholdSlider.setSnapToTicks(true);
//add listener to slider for amount of people in household
peopleInHouseholdSlider.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
peopleInHouseHoldLabel.setText("" + newValue.intValue());
}
});
//add listener to slider for annual income
annualIncomeSlider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
annualIncomeLabel.setText("" + (newValue.intValue() * 1000));
}
});
addSliderListenerCarUsage(carTravelGasolineSlider, carTravelGasolineLabel, " km/L");
addSliderListenerCarUsage(carTravelDieselSlider, carTravelDieselLabel, " km/L");
addSliderListenerCarUsage(carTravelElectricSlider, carTravelElectricLabel, " km/Le");
cleanEnergyPurchasedSlider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
cleanEnergyPurchasedLabel.setText(newValue.intValue() + " %");
}
});
waterUsageSlider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
waterUsageLabel.setText(newValue.intValue() + "% of similar households");
}
});
addSliderListenerDailyServing(meatFishEggsSlider, meatFishEggsLabel);
addSliderListenerDailyServing(grainsBakedGoodsSlider, grainsBakedGoodsLabel);
addSliderListenerDailyServing(dairySlider, dairyLabel);
addSliderListenerDailyServing(fruitsVegetablesSlider, fruitsVegetablesLabel);
addSliderListenerDailyServing(snacksDrinksSlider, snacksDrinksLabel);
addSliderListenerGoodsServices(goodsSlider, goodsLabel);
addSliderListenerGoodsServices(servicesSlider, servicesLabel);
}
/**
* 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<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
label.setText(newValue.intValue() + unit);
}
});
}
@SuppressWarnings("Duplicates")
private void addSliderListenerDailyServing(Slider slider, Label label) {
DecimalFormat df = new DecimalFormat("0.0");
slider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
label.setText(df.format(newValue.doubleValue()) + " daily servings per person");
}
});
}
private void addSliderListenerGoodsServices(Slider slider, Label label) {
slider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
label.setText(newValue.intValue() + "€ / month");
}
});
}
/**
* adds a fade transition to the given node.
* @param node the node to add the transition to
*/
public void addFadeTransAnimation(Node node) {
FadeTransition fade = new FadeTransition(Duration.millis(350), node);
fade.setFromValue(0);
fade.setToValue(1.0);
TranslateTransition trans = new TranslateTransition(Duration.millis(350), node);
trans.setFromY(800);
trans.setToY(0);
ParallelTransition par = new ParallelTransition();
par.setNode(travelPane);
par.getChildren().addAll(fade, trans);
par.play();
}
private void addSlideInAnimation(Node node) {
Timeline timeline = new Timeline();
KeyValue keyValue = new KeyValue(node.translateXProperty(), 0, Interpolator.EASE_OUT);
KeyFrame keyFrame = new KeyFrame(Duration.millis(600), keyValue);
timeline.getKeyFrames().add(keyFrame);
timeline.play();
}
/**
* displays the 'get started' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the button
*/
@SuppressWarnings("Duplicates")
public void displayGetStarted(ActionEvent event) {
addFadeTransAnimation(getStartedPane);
getStartedPane.setVisible(true);
travelPane.setVisible(false);
homePane.setVisible(false);
foodPane.setVisible(false);
shoppingPane.setVisible(false);
extraPane.setVisible(false);
}
/**
* displays the 'travel' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the button
*/
@SuppressWarnings("Duplicates")
public void displayTravel(ActionEvent event) {
addFadeTransAnimation(travelPane);
getStartedPane.setVisible(false);
travelPane.setVisible(true);
homePane.setVisible(false);
foodPane.setVisible(false);
shoppingPane.setVisible(false);
extraPane.setVisible(false);
}
/**
* displays the 'home' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the button
*/
@SuppressWarnings("Duplicates")
public void displayHome(ActionEvent event) {
addFadeTransAnimation(homePane);
getStartedPane.setVisible(false);
travelPane.setVisible(false);
homePane.setVisible(true);
foodPane.setVisible(false);
shoppingPane.setVisible(false);
extraPane.setVisible(false);
}
/**
* displays the 'food' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the button
*/
@SuppressWarnings("Duplicates")
public void displayFood(ActionEvent event) {
addFadeTransAnimation(foodPane);
getStartedPane.setVisible(false);
travelPane.setVisible(false);
homePane.setVisible(false);
foodPane.setVisible(true);
shoppingPane.setVisible(false);
extraPane.setVisible(false);
}
/**
* displays the 'shopping' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the button
*/
@SuppressWarnings("Duplicates")
public void displayShopping(ActionEvent event) {
addFadeTransAnimation(shoppingPane);
getStartedPane.setVisible(false);
travelPane.setVisible(false);
homePane.setVisible(false);
foodPane.setVisible(false);
shoppingPane.setVisible(true);
extraPane.setVisible(false);
}
/**
* displays the 'Extra' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the designated button
*/
@SuppressWarnings("Duplicates")
public void displayExtra(ActionEvent event) throws IOException {
addFadeTransAnimation(extraPane);
extraPane.getChildren().setAll((Node) Application.load(this.getClass()
.getClassLoader().getResource("fxml/extraActivities.fxml")));
getStartedPane.setVisible(false);
travelPane.setVisible(false);
homePane.setVisible(false);
foodPane.setVisible(false);
shoppingPane.setVisible(false);
extraPane.setVisible(true);
}
/**
* The method saves the calculation.
* @param event user clicks to button
*/
@SuppressWarnings("Duplicates")
public void saveCalc(ActionEvent event) throws InterruptedException {
getStartedPane.setVisible(false);
travelPane.setVisible(false);
homePane.setVisible(false);
foodPane.setVisible(false);
shoppingPane.setVisible(false);
if (!annualIncomeLabel.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(), "input_income",
annualIncomeLabel.getText());
}
if (!peopleInHouseHoldLabel.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(), "input_size",
peopleInHouseHoldLabel.getText());
}
checkTransportLabels();
checkHousingLabels();
checkFoodLabels();
if (!goodsLabel.getText().replace(" € / month", "").equals("1520")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_goods_total",
goodsLabel.getText().replace("€ / month", ""));
}
if (!servicesLabel.getText().replace(" € / month", "").equals("3428")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_services_total",
servicesLabel.getText().replace("€ / month", ""));
}
try {
extraActivityController.updateExtras();
} catch (NullPointerException ex) {
System.out.println("continue");
}
Float footprint = userService.saveFootprint(userService.currentUser.getName());
Window owner = saveButton.getScene().getWindow();
controller.updateLeaderboard();
controller.updateAchievements();
UserController.AlertHelper.showAlert(Alert.AlertType.CONFIRMATION,
owner, "Footprint saved!", "Your footprint is saved!");
Stage current = (Stage) owner;
current.close();
}
/**
* Checks the food labels.
*/
@SuppressWarnings("Duplicates")
private void checkFoodLabels() {
if (!meatFishEggsLabel.getText().replace(" daily servings per person", "").equals("2.6")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_food_meatfisheggs",
meatFishEggsLabel.getText().replace(" daily servings per person", ""));
}
if (!grainsBakedGoodsLabel.getText()
.replace(" daily servings per person", "").equals("4.4")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_food_cereals",
grainsBakedGoodsLabel.getText().replace(" daily servings per person", ""));
}
if (!dairyLabel.getText().replace(" daily servings per person", "").equals("2.4")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_food_dairy",
dairyLabel.getText().replace(" daily servings per person", ""));
}
if (!fruitsVegetablesLabel.getText()
.replace(" daily servings per person", "").equals("3.9")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_food_fruitvegetables",
fruitsVegetablesLabel.getText().replace(" daily servings per person", ""));
}
if (!snacksDrinksLabel.getText().replace(" daily servings per person", "").equals("3.7")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_food_otherfood",
snacksDrinksLabel.getText().replace(" daily servings per person", ""));
}
}
/**
* Checks the house labels.
*/
@SuppressWarnings("Duplicates")
private void checkHousingLabels() {
if (!electricityField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_electricity_dollars",
electricityField.getText());
}
if (!cleanEnergyPurchasedLabel.getText().replace(" %", "").equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_gco2_per_kwh",
cleanEnergyPurchasedLabel.getText().replace(" %", ""));
}
if (!naturalGasField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_naturalgas_dollars",
naturalGasField.getText());
}
if (!heatingOilField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_heatingoil_dollars",
heatingOilField.getText());
}
if (!livingSpaceField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_squarefeet",
livingSpaceField.getText());
}
if (!waterUsageLabel.getText().replace("% of similar households", "").equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_watersewage",
waterUsageLabel.getText().replace("% of similar households", ""));
}
}
/**
* Checks the transport labels.
*/
@SuppressWarnings("Duplicates")
private void checkTransportLabels() {
if (!publicTransitField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_publictrans",
publicTransitField.getText());
}
if (!airplaneTravelField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_airtotal",
airplaneTravelField.getText());
}
if (!carTravelGasolineField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_miles1",
carTravelGasolineField.getText());
}
if (!carTravelGasolineLabel.getText().replace(" km/L", "").equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_mpg1",
carTravelGasolineLabel.getText().replace(" km/L", ""));
}
if (!carTravelDieselField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_miles2",
carTravelDieselField.getText());
}
if (!carTravelDieselLabel.getText().replace(" km/L", "").equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_mpg2",
carTravelDieselLabel.getText().replace(" km/L", ""));
}
if (!carTravelElectricField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_miles3",
carTravelElectricField.getText());
}
if (!carTravelElectricLabel.getText().replace(" km/Le", "").equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_mpg3",
carTravelElectricLabel.getText().replace(" km/Le", ""));
}
}
}

View File

@@ -1,81 +1,804 @@
package greenify.client.controller;
import com.sun.javafx.scene.control.skin.ButtonSkin;
import greenify.client.Application;
import greenify.client.features.Friend;
import greenify.client.features.Hints;
import greenify.client.rest.UserService;
import javafx.animation.FadeTransition;
import javafx.animation.KeyFrame;
import javafx.animation.PathTransition;
import javafx.animation.ScaleTransition;
import javafx.animation.Timeline;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.Tooltip;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.effect.ColorAdjust;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
import javafx.stage.Window;
import javafx.util.Duration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* Class that controls the dashboard fxml file (the GUI Screen).
*/
@Controller
public class DashBoardController {
public static ObservableList<Friend> data = FXCollections.observableArrayList();
public ObservableList<Friend> friendLeaderData = FXCollections.observableArrayList();
public ObservableList<Friend> globalLeaderData = FXCollections.observableArrayList();
public ObservableList<Friend> developmentData = FXCollections.observableArrayList();
@Autowired
UserService userService;
private int count = 0;
Hints hints = new Hints();
private FadeTransition fadeTrans; //transition for switching between the different panels
@FXML
private AnchorPane dashboardPane;
@FXML
private AnchorPane userPane;
@FXML
private AnchorPane activitiesPane;
@FXML
private Label veganMealCounter;
private AnchorPane friendsPane;
@FXML
private Label totalVeganMealCounter;
private Label welcomebacktext;
@FXML
private Button dashboardButton;
@FXML
private Button activitiesButton;
@FXML
private Button userButton;
@FXML
private Button friendsButton;
@FXML
private Button logOutButton;
@FXML
private Line pathLine;
@FXML
private AnchorPane menuBar;
@FXML
private Button calculateFootPrintButton;
@FXML
private Label footprintLabel;
@FXML
private Label firstFootprintLabel;
@FXML
private Label differenceLabel;
@FXML
private Button addFriendButton;
@FXML
private Button addFriend;
@FXML
private Button removeFriend;
@FXML
private Button addExtraActivityButton;
@FXML
private Button addExtraActivityButton2;
@FXML
private TableView<Friend> friendsTable;
@FXML
private TableColumn<Friend, String> friendsColumn;
@FXML
private TableColumn<Friend, Float> scoreColumn;
@FXML
private TableView<Friend> globalLeaderboard;
@FXML
private TableColumn<Friend, Integer> globalPlace;
@FXML
private TableColumn<Friend, String> globalUser;
@FXML
private TableColumn<Friend, Float> globalScore;
@FXML
private TableView<Friend> developmentLeaderboard;
@FXML
private TableColumn<Friend, Integer> developmentPlace;
@FXML
private TableColumn<Friend, String> developmentUser;
@FXML
private TableColumn<Friend, Float> developmentScore;
@FXML
private TableView<Friend> friendLeaderboard;
@FXML
private TableColumn<Friend, Integer> friendPlace;
@FXML
private TableColumn<Friend, String> friendUser;
@FXML
private TableColumn<Friend, Float> friendScore;
@FXML
private PieChart pieChart;
@FXML
private Label usernameLabel;
@FXML
private Label peopleNumber;
@FXML
private Label income;
@FXML
private Label electricityUsage;
@FXML
private Label cleanEnergy;
@FXML
private Label naturalGasUsage;
@FXML
private Label heatingOilUsage;
@FXML
private Label waterUsage;
@FXML
private Label livingSpace;
@FXML
private Label gasolineMiles;
@FXML
private Label gasolineMpg;
@FXML
private Label dieselMiles;
@FXML
private Label dieselMpg;
@FXML
private Label electricMiles;
@FXML
private Label electricMpg;
@FXML
private Label publicTransportation;
@FXML
private Label airPlane;
@FXML
private Label goodShopping;
@FXML
private Label serviceShopping;
@FXML
private Label meat;
@FXML
private Label grains;
@FXML
private Label dairy;
@FXML
private Label fruits;
@FXML
private Label snacks;
@FXML
private ImageView achieve1;
@FXML
private ImageView achieve2;
@FXML
private ImageView achieve3;
@FXML
private ImageView achieve4;
@FXML
private ImageView achieve5;
@FXML
private ImageView achieve6;
@FXML
private Label hintText;
@FXML
private Label veganMeal;
@FXML
private Label localProduce;
@FXML
private Label bike;
@FXML
private Label publicTrans;
@FXML
private Label loweringTemp;
@FXML
private Label solarPanels;
@FXML
private Button achiev1Tip;
@FXML
private Button achiev2Tip;
@FXML
private Button achiev3Tip;
@FXML
private Button achiev4Tip;
@FXML
private Button achiev5Tip;
@FXML
private Button achiev6Tip;
/**
* displays the dashboard pane.
* Loads the the necessary things before anything else.
* @throws InterruptedException exception if interrupted
*/
public void initialize() throws InterruptedException {
hintText.setWrapText(true);
hintText.setText(hints.randomHint());
//set the dashboardPane to visible
dashboardPane.setVisible(true);
userPane.setVisible(false);
activitiesPane.setVisible(false);
friendsPane.setVisible(false);
//sets the text of the 'welcome back' text to include the username
welcomebacktext.setText("Welcome back, " + userService.currentUser.getName() + "!");
//adds the slide transition to the menu bar
addSlideTransition(menuBar, pathLine);
//adds animations to the navigation buttons
dashboardButton.setSkin(new MyButtonSkin(dashboardButton));
activitiesButton.setSkin(new MyButtonSkin(activitiesButton));
userButton.setSkin(new MyButtonSkin(userButton));
friendsButton.setSkin(new MyButtonSkin(friendsButton));
logOutButton.setSkin(new MyButtonSkin(logOutButton));
friendsColumn.setCellValueFactory(new PropertyValueFactory<>("Friend"));
scoreColumn.setCellValueFactory(new PropertyValueFactory<>("Score"));
globalPlace.setCellValueFactory(new PropertyValueFactory<>("Place"));
globalUser.setCellValueFactory(new PropertyValueFactory<>("Friend"));
globalScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
developmentUser.setCellValueFactory(new PropertyValueFactory<>("Friend"));
developmentPlace.setCellValueFactory(new PropertyValueFactory<>("Place"));
developmentScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
friendPlace.setCellValueFactory(new PropertyValueFactory<>("Place"));
friendUser.setCellValueFactory(new PropertyValueFactory<>("Friend"));
friendScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
List<String> friendList = userService.getFriendNames(userService.currentUser.getName());
for (int i = 0; i < friendList.size(); i++) {
Friend friend = new Friend(i, friendList.get(i),
userService.getFootprint(friendList.get(i)));
data.add(friend);
}
friendsTable.setItems(data);
updateLeaderboard();
updateAchievements();
updatePiechart();
calculateFootPrintButton.setSkin(new ClickButtonSkin(calculateFootPrintButton));
addFriendButton.setSkin(new ClickButtonSkin(addFriendButton));
addExtraActivityButton.setSkin(new ClickButtonSkin(addExtraActivityButton));
addExtraActivityButton2.setSkin(new ClickButtonSkin(addExtraActivityButton2));
addFriend.setSkin(new ClickButtonSkin(addFriend));
removeFriend.setSkin(new ClickButtonSkin(removeFriend));
addRandomHints();
Tooltip tooltip = new Tooltip("tip");
hackTooltipStartTiming(tooltip);
addToolTip(achiev1Tip, "Starting off \n You did your first green activity!");
addToolTip(achiev2Tip, "Social Butterfly \n You added three friends");
addToolTip(achiev3Tip, "Green Saver \n You saved 20 tonnes of CO2");
addToolTip(achiev4Tip, "Animal Friend \n You have eaten 10 vegetarian meals");
addToolTip(achiev5Tip, "Tom Dumoulin \n You have biked 15 km");
addToolTip(achiev6Tip, "Let it shine \n You installed solar panels");
}
/**
* adds a tooltip to the button.
* @param button the button to add the tooltip to.
* @param message the message to be displayed in the tooltip.
*/
private void addToolTip(Button button, String message) {
button.setTooltip(new Tooltip(message));
}
/**
* changes the delay time between hovering over something with a tooltip and when the
* tooltip is displayed.
* @param tooltip the tooltip to change the delay of
*/
private static void hackTooltipStartTiming(Tooltip tooltip) {
try {
Field fieldBehavior = tooltip.getClass().getDeclaredField("BEHAVIOR");
fieldBehavior.setAccessible(true);
Object objBehavior = fieldBehavior.get(tooltip);
Field fieldTimer = objBehavior.getClass().getDeclaredField("activationTimer");
fieldTimer.setAccessible(true);
Timeline objTimer = (Timeline) fieldTimer.get(objBehavior);
objTimer.getKeyFrames().clear();
objTimer.getKeyFrames().add(new KeyFrame(new Duration(150)));
} catch (NoSuchFieldException e) {
e.printStackTrace();
e.getMessage();
} catch (IllegalAccessException e) {
e.getMessage();
e.printStackTrace();
}
}
/**
* Sorts the scores of users.
* @param users the list of users
*/
public void sortScores(List<String> users) throws InterruptedException {
for (int i = 0; i < users.size(); i++) {
for (int j = 0; j < users.size(); j++) {
Double first = userService.getFootprint(users.get(i));
Double second = userService.getFootprint(users.get(j));
if (i < j && (first.compareTo(second) < 0)) {
String temp = users.get(i);
users.set(i, users.get(j));
users.set(j, temp);
}
if (i > j && (first.compareTo(second) > 0)) {
String temp = users.get(i);
users.set(i, users.get(j));
users.set(j, temp);
}
}
}
}
/**
* Sorts the scores of users.
* @param users the list of users
*/
public List<String> sortDiffScores(List<String> users) throws InterruptedException {
for (int i = 0; i < users.size(); i++) {
for (int j = 0; j < users.size(); j++) {
Double firstDiff = userService.getFirstFootprint(users.get(i)) - userService
.getFootprint(users.get(i));
Double secondDiff = userService.getFirstFootprint(users.get(j)) - userService
.getFootprint(users.get(j));
if (i < j && firstDiff < secondDiff) {
String temp = users.get(i);
users.set(i, users.get(j));
users.set(j, temp);
}
if (i > j && firstDiff > secondDiff) {
String temp = users.get(i);
users.set(i, users.get(j));
users.set(j, temp);
}
}
}
return users;
}
/**
* Adds a fade transition for switching between the different panes.
* @param node the node on which the transition needs to act
*/
public void addFadeTransition(Node node) {
fadeTrans = new FadeTransition(Duration.millis(400), node);
fadeTrans.setFromValue(0);
fadeTrans.setToValue(1.0);
fadeTrans.play();
}
/**
* Displays the dashboard pane.
* @param event the event (clicking the button)
*/
public void displayDashboard(ActionEvent event) {
public void displayDashboard(ActionEvent event) throws InterruptedException {
addFadeTransition(dashboardPane);
System.out.println("display dashboard");
dashboardPane.setVisible(true);
userPane.setVisible(false);
activitiesPane.setVisible(false);
friendsPane.setVisible(false);
updateLeaderboard();
updateAchievements();
}
/**
* displays the activities pane.
* Displays the activities pane.
* @param event the event (clicking the button)
*/
public void displayActivities(ActionEvent event) {
totalVeganMealCounter.setText("" + userService.currentUser.getVeganMeal());
addFadeTransition(activitiesPane);
System.out.println("display activities");
dashboardPane.setVisible(false);
userPane.setVisible(false);
activitiesPane.setVisible(true);
friendsPane.setVisible(false);
Map<String, String> inputMap = userService.getInputs(userService.currentUser.getName());
peopleNumber.setText(inputMap.get("input_size"));
income.setText(inputMap.get("input_income") + " €/yr");
electricityUsage.setText(inputMap.get("input_footprint_housing_electricity_dollars")
+ " €/yr");
cleanEnergy.setText(inputMap.get("input_footprint_housing_gco2_per_kwh"));
naturalGasUsage.setText(inputMap.get("input_footprint_housing_naturalgas_dollars")
+ " €/yr");
heatingOilUsage.setText(inputMap.get("input_footprint_housing_heatingoil_dollars")
+ " €/yr");
waterUsage.setText(inputMap.get("input_footprint_housing_watersewage") + " €/yr");
livingSpace.setText(inputMap.get("input_footprint_housing_squarefeet") + "");
gasolineMiles.setText(inputMap.get("input_footprint_transportation_miles1"));
gasolineMpg.setText(inputMap.get("input_footprint_transportation_mpg1"));
dieselMiles.setText(inputMap.get("input_footprint_transportation_miles2"));
dieselMpg.setText(inputMap.get("input_footprint_transportation_mpg2"));
electricMiles.setText(inputMap.get("input_footprint_transportation_miles3"));
electricMpg.setText(inputMap.get("input_footprint_transportation_mpg3"));
publicTransportation.setText(inputMap.get("input_footprint_transportation_publictrans")
+ " km/yr");
airPlane.setText(inputMap.get("input_footprint_transportation_airtotal") + " km/yr");
goodShopping.setText(inputMap.get("input_footprint_shopping_goods_total") + " €/mo");
serviceShopping.setText(inputMap.get("input_footprint_shopping_services_total") + " €/mo");
meat.setText(inputMap.get("input_footprint_shopping_food_meatfisheggs"));
grains.setText(inputMap.get("input_footprint_shopping_food_cereals"));
dairy.setText(inputMap.get("input_footprint_shopping_food_dairy"));
fruits.setText(inputMap.get("input_footprint_shopping_food_fruitvegetables"));
snacks.setText(inputMap.get("input_footprint_shopping_food_otherfood"));
Map<String, String> extraMap = userService
.getExtraInputs(userService.currentUser.getName());
veganMeal.setText(extraMap.get("vegan"));
localProduce.setText(extraMap.get("local_produce"));
bike.setText(extraMap.get("bike"));
publicTrans.setText(extraMap.get("public_transport"));
loweringTemp.setText(extraMap.get("temperature"));
solarPanels.setText(extraMap.get("solar_panels"));
}
/**
* displays the user profile pane.
* Displays the user profile pane.
* @param event the event (clicking the button)
*/
public void displayUser(ActionEvent event) {
public void displayUser(ActionEvent event) throws InterruptedException {
System.out.println(userService.currentUser.getName());
System.out.println(userService.getFootprint(userService.currentUser.getName()));
footprintLabel.setText("" + userService.getFootprint(userService.currentUser.getName()));
firstFootprintLabel.setText("" + userService
.getFirstFootprint(userService.currentUser.getName()));
Double diff = userService.getFirstFootprint(userService.currentUser.getName()) - userService
.getFootprint(userService.currentUser.getName());
differenceLabel.setText( "" + Math.round(diff * 10) / 10.0);
usernameLabel.setText("" + userService.currentUser.getName());
addFadeTransition(userPane);
System.out.println("display user");
dashboardPane.setVisible(false);
userPane.setVisible(true);
activitiesPane.setVisible(false);
friendsPane.setVisible(false);
updatePiechart();
}
/**
* adds a vegetarian meal.
* Displays the friends pane.
* @param event the event (clicking the button)
*/
public void addVeganMeal(ActionEvent event) {
count++;
int net = userService.currentUser.getVeganMeal() + count;
totalVeganMealCounter.setText("" + net);
veganMealCounter.setText("" + count);
System.out.println(userService);
userService.addVeganMeal(userService.currentUser.getId(),
userService.currentUser.getName());
System.out.println("Vegetarian meal is added");
public void displayFriends(ActionEvent event) throws InterruptedException {
addFadeTransition(friendsPane);
System.out.println("display friends");
dashboardPane.setVisible(false);
userPane.setVisible(false);
activitiesPane.setVisible(false);
friendsPane.setVisible(true);
updateFriends();
}
}
/**
* Logs out the user.
* @param event the event (clicking the button)
* @throws IOException if the Application doesn't load.
*/
public void logOut(ActionEvent event) throws IOException {
//get the current window
Window owner = logOutButton.getScene().getWindow();
Stage current = (Stage) owner;
//close current window (log out)
current.close();
System.out.println("User is logged out");
//global leaderboard
globalLeaderboard.getItems().clear();
globalLeaderData.removeAll();
//development leaderboard
developmentLeaderboard.getItems().clear();
developmentData.removeAll();
//friends leaderboard
friendLeaderboard.getItems().clear();
friendLeaderData.removeAll();
//load the fxml file
Parent dash = Application.load(this.getClass().getClassLoader()
.getResource("fxml/LoginWindow.fxml"));
Scene scene = new Scene(dash);
//add the stylesheet for the CSS
scene.getStylesheets().add(Objects.requireNonNull(getClass().getClassLoader()
.getResource("stylesheets/LoginWindowStyle.css")).toExternalForm());
Stage appStage = new Stage();
appStage.setScene(scene);
//set the title
appStage.setTitle("Greenify");
appStage.show();
}
//sets the slide in transition for startup
public void addSlideTransition(Node node, Line path1) {
PathTransition pathTrans = new PathTransition(Duration.millis(1100), path1, node);
pathTrans.play();
}
/**
* Opens the calculator.
* @throws IOException if the Application doesn't load.
*/
@SuppressWarnings("Duplicates")
public void openCalculator() throws IOException, InterruptedException {
Parent calc = Application.load(this.getClass().getClassLoader()
.getResource("fxml/calculator.fxml"));
Scene scene = new Scene(calc);
scene.getStylesheets().add(getClass().getClassLoader()
.getResource("stylesheets/calculatorStyle.css").toExternalForm());
Stage calcStage = new Stage();
calcStage.setScene(scene);
calcStage.setTitle("Calculate CO2 footprint - " + userService.currentUser.getName());
calcStage.show();
}
/**
* This method adds a random hint to the side bar.
*/
public void addRandomHints() {
FadeTransition fadeOut = new FadeTransition(Duration.millis(400), hintText);
fadeOut.setFromValue(1.0);
fadeOut.setToValue(0.0);
fadeOut.play();
hintText.setWrapText(true);
hintText.setText(hints.randomHint());
FadeTransition fadeIn = new FadeTransition(Duration.millis(400), hintText);
fadeIn.setFromValue(0.0);
fadeIn.setToValue(1.0);
fadeIn.play();
}
/**
* Opens extra activities.
* @param event the event (clicking the button)
* @throws IOException if the Application doesn't load.
*/
public void openExtraActivities(ActionEvent event) throws IOException {
Parent extra = Application.load(this.getClass().getClassLoader()
.getResource("fxml/extraActivities.fxml"));
Scene scene = new Scene(extra);
Stage extraStage = new Stage();
extraStage.setScene(scene);
extraStage.setTitle("Add extra activity - " + userService.currentUser.getName());
extraStage.show();
}
/**
* method opens addFriend scene.
* @throws IOException when file is not found
*/
public void openAddFriend() throws IOException {
Parent calc = Application.load(this.getClass().getClassLoader()
.getResource("fxml/AddFriend.fxml"));
Scene scene = new Scene(calc);
Stage calcStage = new Stage();
calcStage.setScene(scene);
calcStage.setTitle("Add a new friend - " + userService.currentUser.getName());
calcStage.show();
}
/**
* method opens removeFriend scene.
* @throws IOException when file is not found
*/
public void openRemoveFriend() throws IOException {
Parent calc = Application.load(this.getClass().getClassLoader()
.getResource("fxml/RemoveFriend.fxml"));
Scene scene = new Scene(calc);
Stage calcStage = new Stage();
calcStage.setScene(scene);
calcStage.setTitle("Remove your friend - " + userService.currentUser.getName());
calcStage.show();
}
/**
* Leaderboard is updating.
* @throws InterruptedException throws exception
*/
@SuppressWarnings("Duplicates")
public void updateLeaderboard() throws InterruptedException {
//global leaderboard
globalLeaderboard.getItems().clear();
globalLeaderData.removeAll();
//development leaderboard
developmentLeaderboard.getItems().clear();
developmentData.removeAll();
List<String> userList = userService.getAllUsers();
sortScores(userList);
for (int i = userList.size() - 1; i >= 0; i--) {
Friend user = new Friend(userList.size() - i, userList.get(i),
userService.getFootprint(userList.get(i)));
globalLeaderData.add(user);
}
List<String> secondList = sortDiffScores(userList);
for (int j = 0; j < userList.size(); j++) {
double diff = Math.round((userService.getFirstFootprint(secondList.get(j))
- userService.getFootprint(secondList.get(j))) * 10) / 10.0;
Friend diffUser = new Friend(j + 1, secondList.get(j), diff);
developmentData.add(diffUser);
}
globalLeaderboard.setItems(globalLeaderData);
developmentLeaderboard.setItems(developmentData);
}
/**
* The method updating piechart.
* @throws InterruptedException exception
*/
public void updatePiechart() throws InterruptedException {
Map<String, String> resultMap = userService.getResults(userService.currentUser.getName());
if (pieChart != null) {
ObservableList<PieChart.Data> pieChartData =
FXCollections.observableArrayList(
new PieChart.Data("Transport",
Double.parseDouble(resultMap.get("transport"))),
new PieChart.Data("Housing",
Double.parseDouble(resultMap.get("housing"))),
new PieChart.Data("Food",
Double.parseDouble(resultMap.get("food"))),
new PieChart.Data("Goods",
Double.parseDouble(resultMap.get("goods"))),
new PieChart.Data("Services",
Double.parseDouble(resultMap.get("services")))
);
pieChart.setTitle("FOOTPRINT DISTRIBUTION");
pieChart.setMaxSize(1000, 1000);
pieChart.setData(pieChartData);
}
}
/**
* Friends tables are updating.
* @throws InterruptedException throws exception
*/
@SuppressWarnings("Duplicates")
public void updateFriends() throws InterruptedException {
List<String> wholeList = userService.getFriendNames(userService.currentUser.getName());
wholeList.add(userService.currentUser.getName());
//friend list
friendsTable.getItems().clear();
data.removeAll();
List<String> friendList = userService.getFriendNames(userService.currentUser.getName());
sortScores(friendList);
//friends leaderboard
friendLeaderboard.getItems().clear();
friendLeaderData.removeAll();
sortDiffScores(wholeList);
for (int i = friendList.size() - 1; i >= 0 ; i--) {
Friend user = new Friend(i, friendList.get(i), userService
.getFootprint(friendList.get(i)));
data.add(user);
}
for (int j = 0; j < wholeList.size(); j++) {
double diff = Math.round((userService.getFirstFootprint(wholeList.get(j))
- userService.getFootprint(wholeList.get(j))) * 10) / 10.0;
Friend diffUser = new Friend(j + 1, wholeList.get(j), diff);
friendLeaderData.add(diffUser);
}
friendsTable.setItems(data);
friendLeaderboard.setItems(friendLeaderData);
}
/**
* Updates the achievements.
*/
public void updateAchievements() {
Map achievements = userService.getAchievements(userService.currentUser.getName());
ColorAdjust desaturate = new ColorAdjust();
desaturate.setSaturation(-0.75);
if ((Boolean)achievements.get("Starting off")) {
achieve1.setOpacity(1);
} else {
achieve1.setEffect(desaturate);
achieve1.setOpacity(0.3);
}
if ((Boolean)achievements.get("Social butterfly")) {
achieve2.setOpacity(1);
} else {
achieve2.setEffect(desaturate);
achieve2.setOpacity(0.3);
}
if ((Boolean)achievements.get("Green saver")) {
achieve3.setOpacity(1);
} else {
achieve3.setEffect(desaturate);
achieve3.setOpacity(0.3);
}
if ((Boolean)achievements.get("Animal friend")) {
achieve4.setOpacity(1);
} else {
achieve4.setEffect(desaturate);
achieve4.setOpacity(0.3);
}
if ((Boolean)achievements.get("Tom Dumoulin")) {
achieve5.setOpacity(1);
} else {
achieve5.setEffect(desaturate);
achieve5.setOpacity(0.3);
}
if ((Boolean)achievements.get("Let it shine")) {
achieve6.setOpacity(1);
} else {
achieve6.setEffect(desaturate);
achieve6.setOpacity(0.3);
}
}
//class for the animations on the navigation buttons
private class MyButtonSkin extends ButtonSkin {
/**
* adds a skin and scale animation to a button.
* the scale transition is for hovering over it so it then scales up
* and scales down when you stop hovering over it.
* @param button the button to add the animation to
*/
private MyButtonSkin(Button button) {
//inherit the button properties
super(button);
//transition to scale up on hover
final ScaleTransition scaleUp = new ScaleTransition(Duration.millis(100));
//add the node and the position to scale to
scaleUp.setNode(button);
scaleUp.setToX(1.1);
//play the transition when hovered over the button
button.setOnMouseEntered(e -> scaleUp.playFromStart());
final ScaleTransition scaleDown = new ScaleTransition(Duration.millis(100));
scaleDown.setNode(button);
scaleDown.setToX(1.0);
button.setOnMouseExited(e -> scaleDown.playFromStart());
}
}
@SuppressWarnings("Duplicates")
private class ClickButtonSkin extends ButtonSkin {
/**
* button skin for the 'add activity' buttons.
* adds scale animations on entering, clicking and exiting the button
* @param button the button to set the skin of
*/
private ClickButtonSkin(Button button) {
super(button);
//transition to scale up on hover
final ScaleTransition scaleUp = new ScaleTransition(Duration.millis(100));
//add the node and the position to scale to
scaleUp.setNode(button);
scaleUp.setToX(1.1);
scaleUp.setToY(1.1);
//play the transition when hovered over the button
button.setOnMouseEntered(e -> scaleUp.playFromStart());
final ScaleTransition scaleMiddleDown = new ScaleTransition(Duration.millis(50));
scaleMiddleDown.setNode(button);
scaleMiddleDown.setToX(1.05);
scaleMiddleDown.setToY(1.05);
button.setOnMousePressed(e -> scaleMiddleDown.playFromStart());
final ScaleTransition scaleMiddleUp = new ScaleTransition(Duration.millis(50));
scaleMiddleUp.setNode(button);
scaleMiddleUp.setToX(1.1);
scaleMiddleUp.setToY(1.1);
button.setOnMouseReleased(e -> scaleMiddleUp.playFromStart());
final ScaleTransition scaleDown = new ScaleTransition(Duration.millis(100));
scaleDown.setNode(button);
scaleDown.setToX(1.0);
scaleDown.setToY(1.0);
button.setOnMouseExited(e -> scaleDown.playFromStart());
}
}
}

View File

@@ -0,0 +1,372 @@
package greenify.client.controller;
import com.sun.javafx.scene.control.skin.ButtonSkin;
import greenify.client.rest.UserService;
import javafx.animation.FadeTransition;
import javafx.animation.ParallelTransition;
import javafx.animation.ScaleTransition;
import javafx.animation.TranslateTransition;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.layout.AnchorPane;
import javafx.util.Duration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller
public class ExtraActivityController {
@Autowired
UserService userService;
@Autowired
CalculatorController calculatorController;
@Autowired
DashBoardController controller;
@FXML
private AnchorPane veganMealPane;
@FXML
private AnchorPane bikePane;
@FXML
private AnchorPane temperaturePane;
@FXML
private AnchorPane solarPanelPane;
@FXML
private AnchorPane localProducePane;
@FXML
private AnchorPane publicTransportPane;
@FXML
private Button displayVeganMealButton;
@FXML
private Button displayBikeButton;
@FXML
private Button displayTemperatureButton;
@FXML
private Button displaySolarPanelButton;
@FXML
private Button displayLocalProduceButton;
@FXML
private Button displayPublicTransportButton;
@FXML
private Button addVeganMealButton;
@FXML
private Button addBikeButton;
@FXML
private Button addTemperatureButton;
@FXML
private Button addSolarPanelsButton;
@FXML
private Button addLocalProduceButton;
@FXML
private Button addPublicTransportButton;
@FXML
private Slider bikeSlider;
@FXML
private Label bikeLabel;
@FXML
private Slider temperatureSlider;
@FXML
private Label temperatureLabel;
@FXML
private Slider solarPanelsSlider;
@FXML
private Label solarPanelsLabel;
@FXML
private Label publicTransportLabel;
@FXML
private Slider publicTransportSlider;
/**
* initializes the sliders and labels before loading.
* sets the labels to display the outputs of the designated sliders.
*/
public void initialize() {
coupleSliderToLabel(bikeSlider, bikeLabel, " km", false);
coupleSliderToLabel(temperatureSlider, temperatureLabel, " Degrees", true);
coupleSliderToLabel(solarPanelsSlider, solarPanelsLabel, "", true);
coupleSliderToLabel(publicTransportSlider, publicTransportLabel, " km", false);
addVeganMealButton.setSkin(new ActivityButtonSkin(addVeganMealButton));
addBikeButton.setSkin(new ActivityButtonSkin(addBikeButton));
addTemperatureButton.setSkin(new ActivityButtonSkin(addTemperatureButton));
addSolarPanelsButton.setSkin(new ActivityButtonSkin(addSolarPanelsButton));
addLocalProduceButton.setSkin(new ActivityButtonSkin(addLocalProduceButton));
addPublicTransportButton.setSkin(new ActivityButtonSkin(addPublicTransportButton));
displayVeganMealButton.setSkin(new TranslateButtonSkin(displayVeganMealButton));
displayBikeButton.setSkin(new TranslateButtonSkin(displayBikeButton));
displayTemperatureButton.setSkin(new TranslateButtonSkin(displayTemperatureButton));
displaySolarPanelButton.setSkin(new TranslateButtonSkin(displaySolarPanelButton));
displayLocalProduceButton.setSkin(new TranslateButtonSkin(displayLocalProduceButton));
displayPublicTransportButton.setSkin(new TranslateButtonSkin(displayPublicTransportButton));
}
/**
* Sets the label to display the value of the designated slider.
* sets the text to be displayed after the value of the slider.
* sets whether the slider should snap to ticks
* @param slider the slider to read the value from
* @param label the label to display the value of the slider
* @param string the string to be placed after the outputted value of the slider
* @param snapToTicks whether the slider should snap to ticks or not
*/
private void coupleSliderToLabel(Slider slider, Label label, String string,
boolean snapToTicks) {
slider.setSnapToTicks(snapToTicks);
slider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
label.setText(newValue.intValue() + string);
}
});
}
/**
* add transition animation.
* @param node adding animation
*/
public void addFadeTransAnimation(Node node) {
FadeTransition fade = new FadeTransition(Duration.millis(350), node);
fade.setFromValue(0);
fade.setToValue(1.0);
TranslateTransition trans = new TranslateTransition(Duration.millis(350), node);
trans.setFromX(-800);
trans.setToX(0);
ParallelTransition par = new ParallelTransition();
par.setNode(node);
par.getChildren().addAll(fade, trans);
par.play();
}
/**
* displays the vegetarian meal section.
* @param event the click of the designated button
*/
public void displayVeganMeal(ActionEvent event) {
// System.out.println("display vm");
addFadeTransAnimation(veganMealPane);
veganMealPane.setVisible(true);
bikePane.setVisible(false);
temperaturePane.setVisible(false);
solarPanelPane.setVisible(false);
localProducePane.setVisible(false);
publicTransportPane.setVisible(false);
}
/**
* displays the bike section.
* @param event the click of the designated button
*/
public void displayBike(ActionEvent event) {
// System.out.println("display b");
addFadeTransAnimation(bikePane);
veganMealPane.setVisible(false);
bikePane.setVisible(true);
temperaturePane.setVisible(false);
solarPanelPane.setVisible(false);
localProducePane.setVisible(false);
publicTransportPane.setVisible(false);
}
/**
* displays the temperature section.
* @param event the click of the designated button
*/
public void displayTemperature(ActionEvent event) {
// System.out.println("display t");
addFadeTransAnimation(temperaturePane);
veganMealPane.setVisible(false);
bikePane.setVisible(false);
temperaturePane.setVisible(true);
solarPanelPane.setVisible(false);
localProducePane.setVisible(false);
publicTransportPane.setVisible(false);
}
/**
* displays the solar panels section.
* @param event the click of the designated button
*/
public void displaySolarPanel(ActionEvent event) {
// System.out.println("display sp");
addFadeTransAnimation(solarPanelPane);
veganMealPane.setVisible(false);
bikePane.setVisible(false);
temperaturePane.setVisible(false);
solarPanelPane.setVisible(true);
localProducePane.setVisible(false);
publicTransportPane.setVisible(false);
}
/**
* displays the local produce section.
* @param event the click of the designated button
*/
public void displayLocalProduce(ActionEvent event) {
addFadeTransAnimation(localProducePane);
veganMealPane.setVisible(false);
bikePane.setVisible(false);
temperaturePane.setVisible(false);
solarPanelPane.setVisible(false);
localProducePane.setVisible(true);
publicTransportPane.setVisible(false);
}
/**
* displays the public transport section.
* @param event the click of the designated button
*/
public void displayPublicTransport(ActionEvent event) {
addFadeTransAnimation(publicTransportPane);
veganMealPane.setVisible(false);
bikePane.setVisible(false);
temperaturePane.setVisible(false);
solarPanelPane.setVisible(false);
localProducePane.setVisible(false);
publicTransportPane.setVisible(true);
}
/**
* The method updates the values.
*/
@SuppressWarnings("Duplicates")
public void save(ActionEvent event) {
try {
updateExtras();
Float footprint = userService.saveFootprint(userService.currentUser.getName());
controller.updateLeaderboard();
controller.updateAchievements();
} catch (InterruptedException ex) {
System.out.println("continue");
}
}
/**
* The method updates the values of extras.
*/
@SuppressWarnings("Duplicates")
public void updateExtras() throws InterruptedException {
if (!bikeLabel.getText().replace(" km", "").equals("0")) {
userService.updateExtraInput(userService.currentUser.getName(),
"bike",
bikeLabel.getText().replace(" km", ""));
}
if (!solarPanelsLabel.getText().equals("0")) {
userService.updateExtraInput(userService.currentUser.getName(),
"solar_panels",
solarPanelsLabel.getText());
}
if (!temperatureLabel.getText().replace(" Degrees", "").equals("0")) {
userService.updateExtraInput(userService.currentUser.getName(),
"temperature",
temperatureLabel.getText().replace(" Degrees", ""));
}
if (!publicTransportLabel.getText().replace(" km", "").equals("0")) {
userService.updateExtraInput(userService.currentUser.getName(),
"public_transport",
publicTransportLabel.getText().replace(" km", ""));
}
}
/**
* The method updates the values of extras.
*/
@SuppressWarnings("Duplicates")
public void updateExtraVegan() throws InterruptedException {
try {
userService.updateExtraInput(userService.currentUser.getName(), "vegan", "1");
Float footprint = userService.saveFootprint(userService.currentUser.getName());
controller.updateAchievements();
controller.updateLeaderboard();
} catch (NullPointerException ex) {
System.out.println("continue");
}
}
/**
* The method updates the values of extras.
*/
@SuppressWarnings("Duplicates")
public void updateExtraLocal() throws InterruptedException {
try {
userService.updateExtraInput(userService.currentUser.getName(), "local_produce", "1");
Float footprint = userService.saveFootprint(userService.currentUser.getName());
controller.updateAchievements();
controller.updateLeaderboard();
} catch (NullPointerException ex) {
System.out.println("continue");
}
}
public class TranslateButtonSkin extends ButtonSkin {
/**
* button skin that sets a translate animation on entering and exiting the button.
* @param button the button to set the animation for
*/
private TranslateButtonSkin(Button button) {
super(button);
TranslateTransition transEnter = new TranslateTransition(Duration.millis(50));
transEnter.setNode(button);
transEnter.setToX(10);
button.setOnMouseEntered(e -> transEnter.playFromStart());
TranslateTransition transExit = new TranslateTransition(Duration.millis(50));
transExit.setNode(button);
transExit.setToX(1.0);
button.setOnMouseExited(e -> transExit.playFromStart());
}
}
@SuppressWarnings("Duplicates")
private class ActivityButtonSkin extends ButtonSkin {
/**
* button skin for the 'add activity' buttons.
* adds scale animations on entering, clicking and exiting the button
* @param button the button to set the skin of
*/
private ActivityButtonSkin(Button button) {
super(button);
//transition to scale up on hover
final ScaleTransition scaleUp = new ScaleTransition(Duration.millis(100));
//add the node and the position to scale to
scaleUp.setNode(button);
scaleUp.setToX(1.1);
scaleUp.setToY(1.1);
//play the transition when hovered over the button
button.setOnMouseEntered(e -> scaleUp.playFromStart());
final ScaleTransition scaleMiddleDown = new ScaleTransition(Duration.millis(50));
scaleMiddleDown.setNode(button);
scaleMiddleDown.setToX(1.05);
scaleMiddleDown.setToY(1.05);
button.setOnMousePressed(e -> scaleMiddleDown.playFromStart());
final ScaleTransition scaleMiddleUp = new ScaleTransition(Duration.millis(50));
scaleMiddleUp.setNode(button);
scaleMiddleUp.setToX(1.1);
scaleMiddleUp.setToY(1.1);
button.setOnMouseReleased(e -> scaleMiddleUp.playFromStart());
final ScaleTransition scaleDown = new ScaleTransition(Duration.millis(100));
scaleDown.setNode(button);
scaleDown.setToX(1.0);
scaleDown.setToY(1.0);
button.setOnMouseExited(e -> scaleDown.playFromStart());
}
}
}

View File

@@ -0,0 +1,109 @@
package greenify.client.controller;
import greenify.client.rest.UserService;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
import javafx.stage.Window;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller
public class FriendController {
@Autowired
UserService userService;
@Autowired
DashBoardController dashBoardController;
@FXML
private Button addButton;
@FXML
private TextField userNameText;
@FXML
private Button removeButton;
@FXML
private TextField removeUserNameText;
/**
* Add a new friend.
* @param event the click of the sign up button
*/
@FXML
public void addFriend(ActionEvent event) throws InterruptedException {
//set the window to the current window (for displaying the alerts)
Window owner = addButton.getScene().getWindow();
//check if the username field is empty
if (userNameText.getText().isEmpty()) {
//if so, display an alert
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Username Error!",
"Please enter a username!");
return;
} else if (userNameText.getText().equals(userService.currentUser.getName())) {
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Error!",
"Cannot add yourself as a friend!");
return;
} else if (userService.getFriendNames(userService.currentUser.getName())
.contains(userNameText.getText())) {
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Error!",
"Cannot add a friend twice!");
return;
} else if (!userService.getAllUsers().contains(userNameText.getText())) {
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Error!",
"The user does not exist!");
return;
}
//add friend to the current user
userService.addFriend(userService.currentUser.getName(), userNameText.getText());
//close the register window after the user has entered all the credentials
String friendName = userNameText.getText();
Stage current = (Stage) owner;
dashBoardController.updateAchievements();
dashBoardController.updateFriends();
current.close();
UserController.AlertHelper.showAlert(Alert.AlertType.CONFIRMATION, owner, "Friend added!",
userNameText.getText() + " is now your friend!");
}
/**
* Removes one of the friends of the user.
* @param event the click of the sign up button
*/
@FXML
public void removeFriend(ActionEvent event) throws InterruptedException {
//set the window to the current window (for displaying the alerts)
Window owner = removeButton.getScene().getWindow();
//check if the username field is empty
if (removeUserNameText.getText().isEmpty()) {
//if so, display an alert
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Username Error!",
"Please enter a username!");
return;
} else if (removeUserNameText.getText().equals(userService.currentUser.getName())) {
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Error!",
"You are not your friend!");
return;
} else if (!userService.getFriendNames(userService.currentUser.getName())
.contains(removeUserNameText.getText())) {
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Error!",
"You do not have a friend with this username!");
return;
} else if (!userService.getAllUsers().contains(removeUserNameText.getText())) {
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Error!",
"The user does not exist!");
return;
}
//add friend to the current user
userService.removeFriend(userService.currentUser.getName(), removeUserNameText.getText());
//close the register window after the user has entered all the credentials
Stage current = (Stage) owner;
dashBoardController.updateFriends();
dashBoardController.updateAchievements();
current.close();
UserController.AlertHelper.showAlert(Alert.AlertType.CONFIRMATION, owner, "Friend removed!",
removeUserNameText.getText() + " is not your friend anymore!");
}
}

View File

@@ -1,23 +1,163 @@
package greenify.client.controller;
import com.sun.javafx.scene.control.skin.ButtonSkin;
import greenify.client.Application;
import greenify.client.rest.UserService;
import javafx.animation.FadeTransition;
import javafx.animation.Interpolator;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.ParallelTransition;
import javafx.animation.ScaleTransition;
import javafx.animation.Timeline;
import javafx.animation.TranslateTransition;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.Slider;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.stage.Window;
import javafx.util.Duration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.client.HttpClientErrorException;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.text.DecimalFormat;
import java.util.concurrent.TimeUnit;
/**
* Class that controls the actions for the register window.
*/
@Controller
public class RegisterWindowController {
@Autowired
UserService userService;
@Autowired
ExtraActivityController extraActivityController;
@FXML
private Text explainText;
//navigation panes
@FXML
private AnchorPane getStartedPane;
@FXML
private AnchorPane travelPane;
@FXML
private AnchorPane homePane;
@FXML
private ScrollPane foodPane;
@FXML
private AnchorPane shoppingPane;
//'get started' pane
@FXML
private Slider peopleInHouseholdSlider;
@FXML
private Label peopleInHouseHoldLabel;
@FXML
private Slider annualIncomeSlider;
@FXML
private Label annualIncomeLabel;
@FXML
private Button saveButton;
//travel pane
@FXML
private TextField publicTransitField;
@FXML
private TextField airplaneTravelField;
@FXML
private TextField carTravelGasolineField;
@FXML
private Slider carTravelGasolineSlider;
@FXML
private Label carTravelGasolineLabel;
@FXML
private TextField carTravelDieselField;
@FXML
private Slider carTravelDieselSlider;
@FXML
private Label carTravelDieselLabel;
@FXML
private TextField carTravelElectricField;
@FXML
private Slider carTravelElectricSlider;
@FXML
private Label carTravelElectricLabel;
//home pane
@FXML
private TextField electricityField;
@FXML
private Slider cleanEnergyPurchasedSlider;
@FXML
private Label cleanEnergyPurchasedLabel;
@FXML
private TextField naturalGasField;
@FXML
private TextField heatingOilField;
@FXML
private TextField livingSpaceField;
@FXML
private Slider waterUsageSlider;
@FXML
private Label waterUsageLabel;
//food pane
@FXML
private Slider meatFishEggsSlider;
@FXML
private Label meatFishEggsLabel;
@FXML
private Slider grainsBakedGoodsSlider;
@FXML
private Label grainsBakedGoodsLabel;
@FXML
private Slider dairySlider;
@FXML
private Label dairyLabel;
@FXML
private Slider fruitsVegetablesSlider;
@FXML
private Label fruitsVegetablesLabel;
@FXML
private Slider snacksDrinksSlider;
@FXML
private Label snacksDrinksLabel;
//shopping pane
@FXML
private Text goodsField;
@FXML
private Text servicesField;
@FXML
private Slider goodsSlider;
@FXML
private Label goodsLabel;
@FXML
private Slider servicesSlider;
@FXML
private Label servicesLabel;
//extra pane
@FXML
private AnchorPane extraPane;
@FXML
private TextField userNameText;
@FXML
@@ -25,16 +165,58 @@ public class RegisterWindowController {
@FXML
private PasswordField passwordField2;
@FXML
private Button signupButton;
private Button signUpButton;
//@FXML
//private Line uNamePathLine;
/**
* signs the user up.
* @param event the click of the signup button
* Initializes the animation.
* @throws InterruptedException exception when interrupted
*/
public void initialize() throws InterruptedException {
addSlideAnimation(1100, userNameText, -300);
addSlideAnimation(1100, passwordField, 300);
TimeUnit.MILLISECONDS.sleep(300);
addSlideAnimation(1100, passwordField2, -420);
signUpButton.setSkin(new RegisterButtonSkin(signUpButton));
}
/**
* Adds the slide animation.
* @param duration the duration
* @param node the node
* @param from from where
*/
private void addSlideAnimation(int duration, Node node, int from) {
TranslateTransition slideIn = new TranslateTransition(Duration.millis(duration), node);
slideIn.setFromX(from);
slideIn.setToX(0);
slideIn.play();
}
/**
* Shows an explanation of the application.
* @param event the click of the question mark button
*/
public void showExplanation(ActionEvent event) {
if (explainText.isVisible()) {
explainText.setVisible(false);
} else {
explainText.setVisible(true);
}
}
/**
* Signs up the user.
* @param event the click of the sign up button
*/
@FXML
public void handleSignUpButton(ActionEvent event) {
public void handleSignUpButton(ActionEvent event) throws IOException, NoSuchAlgorithmException {
//set the window to the current window (for displaying the alerts)
Window owner = signupButton.getScene().getWindow();
Window owner = signUpButton.getScene().getWindow();
//check if the username field is empty
if (userNameText.getText().isEmpty()) {
//if so, display an alert
@@ -59,10 +241,435 @@ public class RegisterWindowController {
return;
}
userService.registerUser(userNameText.getText(), passwordField.getText());
//register the user with the provided username and password
try {
userService.registerUser(userNameText.getText(), passwordField.getText());
} catch (HttpClientErrorException ex) {
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Username Error!",
"This username has already been taken!");
return;
}
//close the register window after the user has entered all the credentials
Stage current = (Stage) owner;
current.close();
Parent calc = Application.load(this.getClass().getClassLoader()
.getResource("fxml/FirstCalculator.fxml"));
Scene scene = new Scene(calc);
scene.getStylesheets().add(getClass().getClassLoader()
.getResource("stylesheets/calculatorStyle.css").toExternalForm());
Stage calcStage = new Stage();
calcStage.setScene(scene);
calcStage.setTitle("Calculate CO2 footprint - " + userService.currentUser.getName());
calcStage.show();
peopleInHouseholdSlider.setSnapToTicks(true);
//add listener to slider for amount of people in household
peopleInHouseholdSlider.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
peopleInHouseHoldLabel.setText("" + newValue.intValue());
}
});
//add listener to slider for annual income
annualIncomeSlider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
annualIncomeLabel.setText("" + (newValue.intValue() * 1000));
}
});
addSliderListenerCarUsage(carTravelGasolineSlider, carTravelGasolineLabel, " km/L");
addSliderListenerCarUsage(carTravelDieselSlider, carTravelDieselLabel, " km/L");
addSliderListenerCarUsage(carTravelElectricSlider, carTravelElectricLabel, " km/Le");
cleanEnergyPurchasedSlider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
cleanEnergyPurchasedLabel.setText(newValue.intValue() + " %");
}
});
waterUsageSlider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
waterUsageLabel.setText(newValue.intValue() + "% of similar households");
}
});
addSliderListenerDailyServing(meatFishEggsSlider, meatFishEggsLabel);
addSliderListenerDailyServing(grainsBakedGoodsSlider, grainsBakedGoodsLabel);
addSliderListenerDailyServing(dairySlider, dairyLabel);
addSliderListenerDailyServing(fruitsVegetablesSlider, fruitsVegetablesLabel);
addSliderListenerDailyServing(snacksDrinksSlider, snacksDrinksLabel);
addSliderListenerGoodsServices(goodsSlider, goodsLabel);
addSliderListenerGoodsServices(servicesSlider, servicesLabel);
}
}
/**
* 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<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
label.setText(newValue.intValue() + unit);
}
});
}
@SuppressWarnings("Duplicates")
private void addSliderListenerDailyServing(Slider slider, Label label) {
DecimalFormat df = new DecimalFormat("0.0");
slider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
label.setText(df.format(newValue.doubleValue()) + " daily servings per person");
}
});
}
private void addSliderListenerGoodsServices(Slider slider, Label label) {
slider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
label.setText(newValue.intValue() + "€ / month");
}
});
}
/**
* adds a fade transition to the given node.
* @param node the node to add the transition to
*/
public void addFadeTransAnimation(Node node) {
FadeTransition fade = new FadeTransition(Duration.millis(350), node);
fade.setFromValue(0);
fade.setToValue(1.0);
TranslateTransition trans = new TranslateTransition(Duration.millis(350), node);
trans.setFromY(800);
trans.setToY(0);
ParallelTransition par = new ParallelTransition();
par.setNode(travelPane);
par.getChildren().addAll(fade, trans);
par.play();
}
private void addSlideInAnimation(Node node) {
Timeline timeline = new Timeline();
KeyValue keyValue = new KeyValue(node.translateXProperty(), 0, Interpolator.EASE_OUT);
KeyFrame keyFrame = new KeyFrame(Duration.millis(600), keyValue);
timeline.getKeyFrames().add(keyFrame);
timeline.play();
}
/**
* displays the 'get started' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the button
*/
@SuppressWarnings("Duplicates")
public void displayGetStarted(ActionEvent event) {
addFadeTransAnimation(getStartedPane);
getStartedPane.setVisible(true);
travelPane.setVisible(false);
homePane.setVisible(false);
foodPane.setVisible(false);
shoppingPane.setVisible(false);
extraPane.setVisible(false);
}
/**
* displays the 'travel' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the button
*/
@SuppressWarnings("Duplicates")
public void displayTravel(ActionEvent event) {
addFadeTransAnimation(travelPane);
getStartedPane.setVisible(false);
travelPane.setVisible(true);
homePane.setVisible(false);
foodPane.setVisible(false);
shoppingPane.setVisible(false);
extraPane.setVisible(false);
}
/**
* displays the 'home' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the button
*/
@SuppressWarnings("Duplicates")
public void displayHome(ActionEvent event) {
addFadeTransAnimation(homePane);
getStartedPane.setVisible(false);
travelPane.setVisible(false);
homePane.setVisible(true);
foodPane.setVisible(false);
shoppingPane.setVisible(false);
extraPane.setVisible(false);
}
/**
* displays the 'food' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the button
*/
@SuppressWarnings("Duplicates")
public void displayFood(ActionEvent event) {
addFadeTransAnimation(foodPane);
getStartedPane.setVisible(false);
travelPane.setVisible(false);
homePane.setVisible(false);
foodPane.setVisible(true);
shoppingPane.setVisible(false);
extraPane.setVisible(false);
}
/**
* displays the 'shopping' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the button
*/
@SuppressWarnings("Duplicates")
public void displayShopping(ActionEvent event) {
addFadeTransAnimation(shoppingPane);
getStartedPane.setVisible(false);
travelPane.setVisible(false);
homePane.setVisible(false);
foodPane.setVisible(false);
shoppingPane.setVisible(true);
extraPane.setVisible(false);
}
/**
* displays the 'Extra' section of the calculator.
* Activated when the designated button (navigation button) is clicked
* @param event the click of the designated button
*/
@SuppressWarnings("Duplicates")
public void displayExtra(ActionEvent event) throws IOException {
addFadeTransAnimation(extraPane);
extraPane.getChildren().setAll((Node) Application.load(this.getClass()
.getClassLoader().getResource("fxml/extraActivities.fxml")));
getStartedPane.setVisible(false);
travelPane.setVisible(false);
homePane.setVisible(false);
foodPane.setVisible(false);
shoppingPane.setVisible(false);
extraPane.setVisible(true);
}
/**
* The method saves the calculation.
* @param event user clicks to button
*/
@SuppressWarnings("Duplicates")
public void saveCalc(ActionEvent event) throws InterruptedException {
getStartedPane.setVisible(false);
travelPane.setVisible(false);
homePane.setVisible(false);
foodPane.setVisible(false);
shoppingPane.setVisible(false);
if (!annualIncomeLabel.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(), "input_income",
annualIncomeLabel.getText());
}
if (!peopleInHouseHoldLabel.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(), "input_size",
peopleInHouseHoldLabel.getText());
}
checkTransportLabels();
checkHousingLabels();
checkFoodLabels();
if (!goodsLabel.getText().replace(" € / month", "").equals("1520")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_goods_total",
goodsLabel.getText().replace("€ / month", ""));
}
if (!servicesLabel.getText().replace(" € / month", "").equals("3428")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_services_total",
servicesLabel.getText().replace("€ / month", ""));
}
try {
extraActivityController.updateExtras();
} catch (NullPointerException ex) {
System.out.println("Continue");
}
Float firstFootprint = userService.saveFirstFootprint(userService.currentUser.getName());
Float footprint = userService.saveFootprint(userService.currentUser.getName());
Window owner = saveButton.getScene().getWindow();
Stage current = (Stage) owner;
current.close();
UserController.AlertHelper.showAlert(Alert.AlertType.CONFIRMATION,
owner, "Footprint saved!", "Your footprint is saved!");
}
/**
* Checks the food labels.
*/
public void checkFoodLabels() {
if (!meatFishEggsLabel.getText().replace(" daily servings per person", "").equals("2.6")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_food_meatfisheggs",
meatFishEggsLabel.getText().replace(" daily servings per person", ""));
}
if (!grainsBakedGoodsLabel.getText()
.replace(" daily servings per person", "").equals("4.4")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_food_cereals",
grainsBakedGoodsLabel.getText().replace(" daily servings per person", ""));
}
if (!dairyLabel.getText().replace(" daily servings per person", "").equals("2.4")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_food_dairy",
dairyLabel.getText().replace(" daily servings per person", ""));
}
if (!fruitsVegetablesLabel.getText()
.replace(" daily servings per person", "").equals("3.9")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_food_fruitvegetables",
fruitsVegetablesLabel.getText().replace(" daily servings per person", ""));
}
if (!snacksDrinksLabel.getText().replace(" daily servings per person", "").equals("3.7")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_shopping_food_otherfood",
snacksDrinksLabel.getText().replace(" daily servings per person", ""));
}
}
/**
* Checks the housing labels.
*/
public void checkHousingLabels() {
if (!electricityField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_electricity_dollars",
electricityField.getText());
}
if (!cleanEnergyPurchasedLabel.getText().replace(" %", "").equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_gco2_per_kwh",
cleanEnergyPurchasedLabel.getText().replace(" %", ""));
}
if (!naturalGasField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_naturalgas_dollars",
naturalGasField.getText());
}
if (!heatingOilField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_heatingoil_dollars",
heatingOilField.getText());
}
if (!livingSpaceField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_squarefeet",
livingSpaceField.getText());
}
if (!waterUsageLabel.getText().replace("% of similar households", "").equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_housing_watersewage",
waterUsageLabel.getText().replace("% of similar households", ""));
}
}
/**
* Checks the transport labels.
*/
public void checkTransportLabels() {
if (!publicTransitField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_publictrans",
publicTransitField.getText());
}
if (!airplaneTravelField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_airtotal",
airplaneTravelField.getText());
}
if (!carTravelGasolineField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_miles1",
carTravelGasolineField.getText());
}
if (!carTravelGasolineLabel.getText().replace(" km/L", "").equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_mpg1",
carTravelGasolineLabel.getText().replace(" km/L", ""));
}
if (!carTravelDieselField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_miles2",
carTravelDieselField.getText());
}
if (!carTravelDieselLabel.getText().replace(" km/L", "").equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_mpg2",
carTravelDieselLabel.getText().replace(" km/L", ""));
}
if (!carTravelElectricField.getText().equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_miles3",
carTravelElectricField.getText());
}
if (!carTravelElectricLabel.getText().replace(" km/Le", "").equals("0")) {
userService.updateInput(userService.currentUser.getName(),
"input_footprint_transportation_mpg3",
carTravelElectricLabel.getText().replace(" km/Le", ""));
}
}
@SuppressWarnings("Duplicates")
public class RegisterButtonSkin extends ButtonSkin {
/**
* registers button skins.
* @param button clicking
*/
public RegisterButtonSkin(Button button) {
super(button);
ScaleTransition scaleUp = new ScaleTransition(Duration.millis(140));
scaleUp.setToX(1.2);
scaleUp.setToY(1.2);
scaleUp.setNode(button);
button.setOnMouseEntered(e -> scaleUp.playFromStart());
ScaleTransition scaleMiddleDown = new ScaleTransition(Duration.millis(50));
scaleMiddleDown.setToX(1.1);
scaleMiddleDown.setToY(1.1);
scaleMiddleDown.setNode(button);
button.setOnMousePressed(e -> scaleMiddleDown.playFromStart());
ScaleTransition scaleMiddleUp = new ScaleTransition(Duration.millis(50));
scaleMiddleUp.setToX(1.2);
scaleMiddleUp.setToY(1.2);
scaleMiddleUp.setNode(button);
button.setOnMouseReleased(e -> scaleMiddleUp.playFromStart());
ScaleTransition scaleDown = new ScaleTransition(Duration.millis(200));
scaleDown.setToX(1.0);
scaleDown.setToY(1.0);
scaleDown.setNode(button);
button.setOnMouseExited(e -> scaleDown.playFromStart());
}
}
}

View File

@@ -1,7 +1,9 @@
package greenify.client.controller;
import com.sun.javafx.scene.control.skin.ButtonSkin;
import greenify.client.Application;
import greenify.client.rest.UserService;
import javafx.animation.ScaleTransition;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Parent;
@@ -12,11 +14,18 @@ import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
import javafx.stage.Window;
import javafx.util.Duration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.client.HttpClientErrorException;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.Objects;
/**
* Class that controls the actions for the login screen.
*/
@Controller
public class UserController {
@Autowired
@@ -24,22 +33,34 @@ public class UserController {
@FXML
private TextField usernameField;
@FXML
private PasswordField passwordField;
@FXML
private Button loginButton;
@FXML
private Button signupButton;
private Button signUpButton;
public void initialize() {
loginButton.setSkin(new LoginButtonSkin(loginButton));
signUpButton.setSkin(new LoginButtonSkin(signUpButton));
}
/**
* Handles when the user clicks on the login button.
* it checks if the username and password fields are filled
* and gives alerts if they aren't filled in.
* @param event the click of the login button
* @throws IOException an exception for logging in the user
*/
@FXML
protected void handleLoginButtonAction(ActionEvent event) throws IOException {
Window owner = loginButton.getScene().getWindow();
protected void handleLoginButtonAction(ActionEvent event)
throws IOException, NoSuchAlgorithmException {
Window owner = loginButton.getScene().getWindow(); //get the current window
if (usernameField.getText().isEmpty()) {
AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Log-in Error!",
"Please enter your username");
//checks if the username field is filled,
// and gives an alert if it is not
return;
} else {
System.out.println("Username is " + usernameField.getText());
@@ -47,35 +68,52 @@ public class UserController {
if (passwordField.getText().isEmpty()) {
AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Log-in Error!",
"Please enter a password");
//checks if the password field is filled,
// and gives an alert if it is not.
return;
} else {
System.out.println("Password is " + passwordField.getText());
}
userService.loginUser(usernameField.getText(), passwordField.getText());
//log the user in with the userService method
try {
userService.loginUser(usernameField.getText(), passwordField.getText());
} catch (HttpClientErrorException ex) {
AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Log-in Error!",
"Your username or password is incorrect!");
return;
}
Stage current = (Stage) owner;
//after logging in, close the login window
current.close();
//open the other dashboard window
openDashboard();
}
/**
* opens the dashboard stage.
* Opens the dashboard stage.
* @throws IOException exception if fxml file can't be found
* @author sem
*/
public void openDashboard() throws IOException {
private void openDashboard() throws IOException {
//load the fxml file
Parent dash = Application.load(this.getClass().getClassLoader()
.getResource("fxml/dashboard.fxml"));
.getResource("fxml/dashboard.fxml"));
Scene scene = new Scene(dash);
scene.getStylesheets().add(getClass().getClassLoader()
.getResource("stylesheets/dashboardStyle.css").toExternalForm());
//add the stylesheet for the CSS
scene.getStylesheets().add(Objects.requireNonNull(getClass().getClassLoader()
.getResource("stylesheets/dashboardStyle.css")).toExternalForm());
Stage appStage = new Stage();
appStage.setScene(scene);
//set the title
appStage.setTitle("Greenify - " + usernameField.getText());
appStage.show();
}
public static class AlertHelper {
/**
* Class for showing the alerts.
*/
static class AlertHelper {
/**
* alerts for the login screen.
* @param alertType the type of alert
@@ -83,10 +121,10 @@ public class UserController {
* @param title the title given to the displayed alert
* @param message the message displayed in the alert
*/
public static void showAlert(Alert.AlertType alertType,
Window owner,
String title,
String message) {
static void showAlert(Alert.AlertType alertType,
Window owner,
String title,
String message) {
Alert alert = new Alert(alertType);
alert.setTitle(title);
alert.setHeaderText(null);
@@ -97,18 +135,61 @@ public class UserController {
}
/**
* The method handles register button.
* @param event User clicks to the button
* @throws Exception when the file couldn't find
* The method handles the clicking of the register button.
* it then opens the register window where the user can register
* (handled by RegisterWindowController)
* @param event User clicks on the button
* @throws Exception when the fxml file couldn't be found
*/
public void handleRegisterButtonAction(ActionEvent event) throws Exception {
Parent registerWindow = Application.load(this.getClass().getClassLoader()
.getResource("fxml/RegisterWindow.fxml"));
Scene registerScene = new Scene(registerWindow);
registerScene.getStylesheets().add(this.getClass().getClassLoader()
.getResource("stylesheets/registerWindowStyle.css").toExternalForm());
Stage registerStage = new Stage();
registerStage.setScene(registerScene);
registerStage.setTitle("Enter register credentials");
registerStage.show();
}
@SuppressWarnings("Duplicates")
public class LoginButtonSkin extends ButtonSkin {
/**
* method for the skin of login button.
* @param button clicking
*/
public LoginButtonSkin(Button button) {
super(button);
ScaleTransition scaleUp = new ScaleTransition(Duration.millis(140));
scaleUp.setToX(1.1);
scaleUp.setToY(1.1);
scaleUp.setNode(button);
button.setOnMouseEntered(e -> scaleUp.playFromStart());
ScaleTransition scaleMiddleDown = new ScaleTransition(Duration.millis(50));
scaleMiddleDown.setFromX(1.1);
scaleMiddleDown.setFromY(1.1);
scaleMiddleDown.setToX(1.05);
scaleMiddleDown.setToY(1.05);
scaleMiddleDown.setNode(button);
button.setOnMousePressed(e -> scaleMiddleDown.playFromStart());
ScaleTransition scaleMiddleUp = new ScaleTransition(Duration.millis(50));
scaleMiddleUp.setFromX(1.05);
scaleMiddleUp.setFromY(1.05);
scaleMiddleUp.setToX(1.1);
scaleMiddleUp.setToY(1.1);
scaleMiddleUp.setNode(button);
button.setOnMouseReleased(e -> scaleMiddleUp.playFromStart());
ScaleTransition scaleDown = new ScaleTransition(Duration.millis(200));
scaleDown.setToX(1.0);
scaleDown.setToY(1.0);
scaleDown.setNode(button);
button.setOnMouseExited(e -> scaleDown.playFromStart());
}
}
}

View File

@@ -0,0 +1,48 @@
package greenify.client.features;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
public class Friend {
private SimpleIntegerProperty place;
private SimpleStringProperty friend;
private SimpleDoubleProperty score;
/**
* Constructor for a friend.
* @param place place in the leaderboard
* @param friend name of the user
* @param friendScore score of the user
*/
public Friend(Integer place, String friend, Double friendScore) {
this.place = new SimpleIntegerProperty(place);
this.friend = new SimpleStringProperty(friend);
this.score = new SimpleDoubleProperty(friendScore);
}
public Integer getPlace() {
return place.get();
}
public void setPlace(Integer place) {
this.place = new SimpleIntegerProperty(place);
}
public String getFriend() {
return friend.get();
}
public void setFriend(String name) {
this.friend = new SimpleStringProperty(name);
}
public Double getScore() {
return score.get();
}
public void setScore(Double score) {
this.score = new SimpleDoubleProperty(score);
}
}

View File

@@ -0,0 +1,92 @@
package greenify.client.features;
import java.util.ArrayList;
import java.util.Random;
public class Hints {
public ArrayList<String> hints;
public Hints() {
this.hints = new ArrayList<String>();
initHints();
}
/**
* This method adds all the Strings to the array list.
*/
private void initHints() {
this.hints.add("Buying local produce will not only decrease your carbon "
+ "footprint, but it will also help your local economy: A win-win!");
this.hints.add("Did you know that a gas oven only uses 6% of its energy "
+ "to cook? And an electric oven is not much better at 12%!");
this.hints.add("70% of the deforestation of the Amazon rainforest is to provide land "
+ "for cattle ranches.");
this.hints.add("Research shows that reducing meat consumption can "
+ "increase your life span by 3,6 years");
this.hints.add("Vegetarians have a lower risk of getting: Heart disease, high blood "
+ "pressure, diabetes and cancer than meat eaters.");
this.hints.add("The carbon footprint of a vegetarian diet is about half "
+ "that of a meat-lovers diet!");
this.hints.add("Cycling is good for the environment and for your body, "
+ "so why not grab your bike instead of your car?");
this.hints.add("If we could capture all of the suns energy shining on the Earth for just "
+ "one hour, we could power the entire world for one whole year!");
this.hints.add("27,000 trees are cut down every day so we can have toilet paper.");
this.hints.add("Recycle glass bottles! A glass bottle made now will take "
+ "more than 4,000 years to decompose.");
this.hints.add("Don't forget to turn off the lights and heating in rooms"
+ " you're not using at the moment. Save some energy!");
this.hints.add("Did you know that about 4,5% of the Dutch population does not eat meat?");
this.hints.add("Reuse your bags when you go grocery shopping. You will save "
+ "plastic bags and won't have a lot of unused bags at home!");
this.hints.add("An estimated 250 million trees can be saved each year "
+ "if every published newspaper would be recycled!");
this.hints.add("About 88,000 jobs were created in 2015 through the wind power sector. "
+ "That is a lot of jobs");
this.hints.add("You can use LED lights in your home to save energy! "
+ "They make light from about 85% of their energy");
this.hints.add("If you isolate your home well, it will be warmer, "
+ "and you'll save energy as well! No need to wear sweaters anymore");
this.hints.add("Do you have leftovers? Donate them to food kitchens."
+ " This way you won't waste"
+ " food, and you'll help a lot of people at the same time!");
this.hints.add("A lot of coffee places give you a discount if you bring your own cup. "
+ "Get rid of disposable cups!");
this.hints.add("When shopping, look for products with minimal to no packaging, "
+ "or packaging made from recycled items. ");
this.hints.add("If you order food, you can ask the restaurant to not include "
+ "utensils and napkins, it saves plastic and paper!");
this.hints.add("It takes about 66 days to form a new habit, keep going, you'll get there!");
this.hints.add("Get yourself a nice reusable water bottle! It's cheaper and better for "
+ "the environment to refill than to buy one every time it's empty.");
this.hints.add("Only 1% of our planets water supply can be used a drinkwater."
+ " 97% is ocean water and 2% is frozen solid in the Arctic, for now.");
this.hints.add("For every two million tons of paper and glass, collected in "
+ "the Netherlands, close to 90% gets recycled and used to make new products");
this.hints.add("In the Netherlands: Whenever you purchase any new, electronic or household "
+ "equipment, you will automatically be charged a recycling tax on it. This is "
+ "also known as removal tax, or verwijderingsbijdrage in Dutch");
this.hints.add("Second only to Germany, the Netherlands leads the world in recycling"
+ ", with 65 percent of all waste recycled.");
this.hints.add("If tbe back of your fridge is dusty, it can increase "
+ "energy consumption by 30 per cent.");
this.hints.add("Underinflated tyres decrease fuel economy by up to three percent and"
+ " lead to increased pollution and higher greenhouse gas emissions.");
this.hints.add("Meat production is extremely resource-intensive. "
+ "If you gave it up just once a week, you would save the 840 gallons "
+ "of fresh water it takes to produce a single serving.");
this.hints.add("Plastic bad, very bad.");
}
/**
* This seeks out a random hint from the list of strings.
* @return the random string hint.
*/
public String randomHint() {
Random rand = new Random();
int index = rand.nextInt(this.hints.size());
return this.hints.get(index);
}
}

View File

@@ -2,42 +2,88 @@ package greenify.client.rest;
import greenify.common.UserDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.Map;
@Service
public class UserService {
public UserDto currentUser;
@Value( "${server.address:http://localhost:8080}" )
String serverAddress = "http://localhost:8080";
@Autowired
RestTemplate restTemplate;
public UserDto currentUser;
@Bean
RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
/**
* registers the user.
* Registers the user.
* @param name the username of the user
* @param password the password of the user
* @return a userDTO
*/
public UserDto registerUser(String name, String password) {
@SuppressWarnings("Duplicates")
//this suppressWarnings is to get rid of the errors of duplicate code
//because the methods are very similar
public UserDto registerUser(String name, String password) throws NoSuchAlgorithmException {
//headers for http
HttpHeaders headers = new HttpHeaders();
//set the accept header in JSON value
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
//connect to the server with the needed url
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/registerUser")
.queryParam("name", name)
//getting the name from the database
.queryParam("password", hashPassword(password));
//getting the password from the database
//create a http entity to be sent
new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
//the result to be sent is a userDto
//encodes the userDTO object to a Uri so the database can work with it
UserDto result = this.restTemplate.getForObject(builder.build()
.encode().toUri(), UserDto.class);
this.currentUser = result;
return result;
}
/**
* Signs in the user.
* @param name the username of the user
* @param password the password of the user
* @return a userDTO
*/
@SuppressWarnings("Duplicates")
public UserDto loginUser(String name, String password) throws NoSuchAlgorithmException {
//this method is almost the same as the registerUser one, but with a different link
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/registerUser")
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/loginUser")
.queryParam("name", name)
.queryParam("password", password);
HttpEntity<?> entity = new HttpEntity<>(headers);
.queryParam("password", hashPassword(password));
new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
UserDto result = this.restTemplate.getForObject(builder.build()
.encode().toUri(), UserDto.class);
@@ -46,44 +92,303 @@ public class UserService {
}
/**
* sign ins the user.
* @param name the username of the user
* @param password the password of the user
* @return a userDTO
* Updates the input of the user.
* @param name name of the user
* @param inputName name of the input
* @param value value of the input
*/
public UserDto loginUser(String name, String password) {
@SuppressWarnings("Duplicates")
public void updateInput(String name, String inputName, String value) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/loginUser")
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(serverAddress + "/setInput")
.queryParam("name", name)
.queryParam("password", password);
HttpEntity<?> entity = new HttpEntity<>(headers);
.queryParam("inputName", inputName)
.queryParam("value",value);
new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
UserDto result = this.restTemplate.getForObject(builder.build()
.encode().toUri(), UserDto.class);
this.currentUser = result;
ResponseEntity<String> authenticateResponse = this.restTemplate.getForEntity(builder.build()
.encode().toUri(), String.class);
}
/**
* Updates the extra input of the user.
* @param name name of the user
* @param inputName name of the input
* @param value value of the input
*/
@SuppressWarnings("Duplicates")
public void updateExtraInput(String name, String inputName, String value) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/setExtraInput")
.queryParam("name", name)
.queryParam("inputName", inputName)
.queryParam("value", value);
new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
ResponseEntity<String> authenticateResponse = this.restTemplate.getForEntity(builder.build()
.encode().toUri(), String.class);
}
/**
* Gets the footprint of the user.
* @param name name of the user
* @return returns the footprint score
*/
@SuppressWarnings("Duplicates")
public double getFootprint(String name) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/getFootprint")
.queryParam("name", name);
new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
Float footprint = this.restTemplate.getForObject(builder
.build().encode().toUri(), Float.class);
double result = Math.round(footprint * 10) / 10.0;
return result;
}
/**
* a user adds vegan meal.
* @param id the id of the user
* @param name the username of the user
* @return a userDTO
* Gets the first footprint of the user.
* @param name name of the user
* @return returns the footprint score
*/
public UserDto addVeganMeal(Long id, String name) {
public double getFirstFootprint(String name) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/addVeganMeal")
.queryParam("id", id)
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(serverAddress + "/getFirst")
.queryParam("name", name);
new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
Float footprint = this.restTemplate.getForObject(builder
.build().encode().toUri(), Float.class);
double result = Math.round(footprint * 10) / 10.0;
return result;
}
/**
* Saves the footprint of the user.
* @param name name of the user
* @return returns the footprint score
*/
@SuppressWarnings("Duplicates")
public Float saveFootprint(String name) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/saveFootprint")
.queryParam("name", name);
new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
Float result = this.restTemplate.getForObject(builder
.build().encode().toUri(), Float.class);
return result;
}
/**
* Saves the first footprint of the user.
* @param name name of the user
* @return returns the footprint score
*/
@SuppressWarnings("Duplicates")
public Float saveFirstFootprint(String name) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/saveFirstFootprint")
.queryParam("name", name);
new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
Float result = this.restTemplate.getForObject(builder
.build().encode().toUri(), Float.class);
return result;
}
/**
* Gets the friend list of the user.
* @param name name of the user
* @return returns the friend list
*/
@SuppressWarnings("Duplicates")
public List<String> getFriendNames(String name) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/getFriends")
.queryParam("name", name);
new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
List<String> result = this.restTemplate.getForObject(builder
.build().encode().toUri(), List.class);
return result;
}
/**
* Adds a friend to the user.
* @param name the username of the current user.
* @param friend the username of the friend you want to add.
*/
@SuppressWarnings("Duplicates")
public void addFriend(String name, String friend) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/addFriend")
.queryParam("name", name)
.queryParam("friend",friend);
HttpEntity<?> entity = new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
ResponseEntity<String> authenticateResponse = this.restTemplate.getForEntity(builder.build()
.encode().toUri(), String.class);
}
/**
* Removes a friend from the friendslist of the user.
* @param name the username of the current user.
* @param friend the username of the friend you want to remove.
*/
@SuppressWarnings("Duplicates")
public void removeFriend(String name, String friend) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/removeFriend")
.queryParam("name", name)
.queryParam("friend",friend);
HttpEntity<?> entity = new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
ResponseEntity<String> authenticateResponse = this.restTemplate.getForEntity(builder.build()
.encode().toUri(), String.class);
}
/**
* Gets the footprint inputs of the user.
* @param name the username of the current user.
*/
@SuppressWarnings("Duplicates")
public Map<String, String> getInputs(String name) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/getInputs")
.queryParam("name", name);
HttpEntity<?> entity = new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
return this.restTemplate.getForObject(builder.build().encode().toUri(), UserDto.class);
Map<String, String> result = this.restTemplate.getForObject(builder.build()
.encode().toUri(), Map.class);
return result;
}
@RequestMapping("/userData")
public int getVeganData(@RequestParam(value = "veganMeal") int veganMeal) {
return veganMeal;
/**
* Gets the footprint inputs of the user.
* @param name the username of the current user.
*/
@SuppressWarnings("Duplicates")
public Map<String, String> getExtraInputs(String name) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/getExtraInputs")
.queryParam("name", name);
HttpEntity<?> entity = new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
Map<String, String> result = this.restTemplate.getForObject(builder.build()
.encode().toUri(), Map.class);
return result;
}
}
/**
* Gets the achievements of a user.
* @param name name of the user
* @return Map with all achievements
*/
@SuppressWarnings("Duplicates")
public Map getAchievements(String name) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/getAchievements")
.queryParam("name", name);
HttpEntity<?> entity = new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
return this.restTemplate.getForObject(builder.build()
.encode().toUri(), Map.class);
}
/**
* Gets the results of a user.
* @param name name of the user
* @return Map with all results
*/
@SuppressWarnings("Duplicates")
public Map<String, String> getResults(String name) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/getResults")
.queryParam("name", name);
HttpEntity<?> entity = new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
return this.restTemplate.getForObject(builder.build()
.encode().toUri(), Map.class);
}
/**
* Gets the list of all users.
*/
@SuppressWarnings("Duplicates")
public List<String> getAllUsers() {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/getAllUsers");
HttpEntity<?> entity = new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
List<String> result = this.restTemplate.getForObject(builder
.build().encode().toUri(), List.class);
return result;
}
/**
* Removes a user from the database.
* @param name the username of the current user.
*/
@SuppressWarnings("Duplicates")
public void deleteAccount(String name) {
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
UriComponentsBuilder builder = UriComponentsBuilder
.fromHttpUrl(serverAddress + "/deleteAccount")
.queryParam("name", name);
HttpEntity<?> entity = new HttpEntity<>(headers);
System.out.println(builder.build().encode().toUri());
ResponseEntity<String> authenticateResponse = this.restTemplate.getForEntity(builder.build()
.encode().toUri(), String.class);
}
/**
* Hashes the password of a user.
* @param password password of the user
* @return hashed password
* @throws NoSuchAlgorithmException when there is no such algorithm
*/
public String hashPassword(String password)
throws NoSuchAlgorithmException {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] encodedHash = digest.digest(password.getBytes(StandardCharsets.UTF_8));
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < encodedHash.length; i++) {
String hex = Integer.toHexString(0xff & encodedHash[i]);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
}
}

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane prefHeight="287.0" prefWidth="187.0" style="-fx-background-color: #e2f0c8;" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.FriendController">
<children>
<Text fill="#00650d" layoutX="114.0" layoutY="64.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Add Friend" textAlignment="CENTER" wrappingWidth="234.96600341796875">
<font>
<Font size="36.0" />
</font>
</Text>
<TextField fx:id="userNameText" layoutX="140.0" layoutY="100.0" prefHeight="35.0" prefWidth="183.0" promptText="Username">
<font>
<Font size="13.0" />
</font>
</TextField>
<Button fx:id="addButton" layoutX="206.0" layoutY="154.0" mnemonicParsing="false" onAction="#addFriend" style="-fx-background-color: #005e07;" text="Add!" textFill="#c4eec9">
<font>
<Font name="Corbel Bold" size="14.0" />
</font>
</Button>
<ImageView fitHeight="80.0" fitWidth="349.0" layoutY="211.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/grass.png"/>
</image>
</ImageView>
<ImageView fitHeight="150.0" fitWidth="200.0" layoutY="43.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/friends.png" />
</image>
</ImageView>
</children>
</AnchorPane>

View File

@@ -0,0 +1,652 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.shape.*?>
<?import javafx.scene.text.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Slider?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.shape.Line?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane prefHeight="703.0" prefWidth="820.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.RegisterWindowController">
<children>
<AnchorPane fx:id="calculatorTabs" prefHeight="92.0" prefWidth="820.0" style="-fx-background-color: #677069;">
<children>
<Button fx:id="calculatorGetStartedButton" contentDisplay="TOP" layoutX="147.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayGetStarted" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Get started" textFill="#d4ddd6" AnchorPane.leftAnchor="147.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/cloud.png" />
<!--image credits:-->
<!--image made by Smashicons https://www.flaticon.com/authors/smashicons-->
<!--from https://www.flaticon.com/
flaticon is licenced by http://creativecommons.org/licenses/by/3.0/ Creative Commons BY 3.0-->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="calculatorTravelButton" contentDisplay="TOP" layoutX="232.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayTravel" prefWidth="79.0" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Travel" textFill="#d4ddd6" AnchorPane.leftAnchor="232.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/world.png" />
<!--image credits:
made by prettycons https://www.flaticon.com/authors/prettycons
from https://www.flaticon.com/
flaticon is licenced by http://creativecommons.org/licenses/by/3.0/ Creative Commons BY 3.0
-->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="calculatorHomeButton" contentDisplay="TOP" layoutX="317.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayHome" prefWidth="79.0" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Home" textFill="#d4ddd6" AnchorPane.leftAnchor="317.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/home.png" />
<!--image credits:
made by Smashicons https://www.flaticon.com/authors/smashicons
from https://www.flaticon.com/
flaticon is licenced by http://creativecommons.org/licenses/by/3.0/ Creative Commons BY 3.0
-->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="calculatorFoodButton" contentDisplay="TOP" layoutX="402.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayFood" prefWidth="79.0" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Food" textFill="#d4ddd6" AnchorPane.leftAnchor="402.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/coffee-cup.png" />
<!--image credits:
made by pixel-perfect https://www.flaticon.com/authors/pixel-perfect
from https://www.flaticon.com/
flaticon is licenced by http://creativecommons.org/licenses/by/3.0/ Creative Commons BY 3.0
-->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="calculatorShoppingButton" contentDisplay="TOP" layoutX="487.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayShopping" prefHeight="81.0" prefWidth="79.0" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Shopping" textFill="#d4ddd6" AnchorPane.leftAnchor="487.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/shopping-cart.png" />
<!--image credits:
made by Gregor Cresnar https://www.flaticon.com/authors/gregor-cresnar
from https://www.flaticon.com/
flaticon is licenced by http://creativecommons.org/licenses/by/3.0/ Creative Commons BY 3.0
-->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="saveButton" layoutX="702.0" layoutY="24.0" mnemonicParsing="false" onAction="#saveCalc" text="Save">
<font>
<Font size="17.0" />
</font></Button>
<Button fx:id="calculatorExtraButton" contentDisplay="TOP" layoutX="497.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayExtra" prefHeight="81.0" prefWidth="79.0" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Extra" textFill="#d4ddd6" AnchorPane.leftAnchor="572.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/icons8-potted-plant-100.png" />
</image>
</ImageView>
</graphic>
</Button>
</children>
</AnchorPane>
<AnchorPane fx:id="getStartedPane" layoutY="85.0" prefHeight="618.0" prefWidth="820.0" AnchorPane.leftAnchor="0.0">
<children>
<Text layoutX="224.0" layoutY="96.0" strokeType="OUTSIDE" strokeWidth="0.0" text="1. How many people live in your household?">
<font>
<Font size="19.0" />
</font>
</Text>
<Slider fx:id="peopleInHouseholdSlider" blockIncrement="1.0" layoutX="260.0" layoutY="147.0" majorTickUnit="1.0" max="6.0" min="1.0" minorTickCount="0" prefHeight="38.0" prefWidth="300.0" showTickLabels="true" showTickMarks="true" snapToTicks="true" styleClass="slidertje" />
<Label fx:id="peopleInHouseHoldLabel" alignment="CENTER" contentDisplay="CENTER" layoutX="612.0" layoutY="70.0" prefHeight="38.0" prefWidth="44.0" text="0">
<font>
<Font size="20.0" />
</font></Label>
<Text layoutX="207.0" layoutY="254.0" strokeType="OUTSIDE" strokeWidth="0.0" text="2. What is your gross annual household income?">
<font>
<Font size="19.0" />
</font>
</Text>
<Slider fx:id="annualIncomeSlider" layoutX="224.0" layoutY="302.0" majorTickUnit="10.0" minorTickCount="0" prefHeight="38.0" prefWidth="388.0" showTickLabels="true" showTickMarks="true" />
<Text fill="#757575" layoutX="373.0" layoutY="277.0" strokeType="OUTSIDE" strokeWidth="0.0" text="in 1000 euros">
<font>
<Font size="15.0" />
</font>
</Text>
<Label fx:id="annualIncomeLabel" layoutX="634.0" layoutY="232.0" prefHeight="30.0" prefWidth="150.0" text="0">
<font>
<Font size="20.0" />
</font>
<opaqueInsets>
<Insets />
</opaqueInsets>
</Label>
<Button fx:id="getStartedNextButton" layoutX="383.0" layoutY="406.0" mnemonicParsing="false" onAction="#displayTravel" styleClass="nextButton" text="Next" />
<Line endX="79.0" layoutX="147.0" layoutY="14.0" stroke="#545b54" />
<Text layoutX="296.0" layoutY="51.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Welcome to Greenify!">
<font>
<Font name="System Bold" size="22.0" />
</font>
</Text>
<Text fx:id="explainText" layoutX="52.0" layoutY="456.0" strokeType="OUTSIDE" strokeWidth="0.0" text="This application will help you decrease your CO2-footprint. In the next screen, you will be asked to fill in certain things, like your yearly energy costs. These values will help us calculate your CO2-footprint. Warning: If you don't fill anything in, the calculator will use a default value based on averages, so if you want a value to be zero, please fill in zero. After that, you'll be able to see your score and compare your footprint to those of your friends. Let's go green and save the planet!" textAlignment="CENTER" visible="false" wrappingWidth="714.0">
<font>
<Font size="14.0" />
</font></Text>
<Button fx:id="showExplanation" layoutX="31.0" layoutY="534.0" mnemonicParsing="false" onAction="#showExplanation" prefHeight="63.0" prefWidth="52.0" style="-fx-background-color: transparent; -fx-padding: 0 0 0 0;">
<graphic>
<ImageView fitHeight="62.0" fitWidth="83.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/questionmark.png" />
</image>
</ImageView>
</graphic>
</Button>
</children></AnchorPane>
<AnchorPane fx:id="travelPane" layoutY="85.0" prefHeight="618.0" prefWidth="820.0" visible="false">
<children>
<ScrollPane layoutX="158.0" layoutY="109.0" prefHeight="215.0" prefWidth="499.0">
<content>
<AnchorPane prefHeight="505.0" prefWidth="497.0">
<children>
<Text fill="#505050" layoutX="14.0" layoutY="27.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Gasoline">
<font>
<Font size="16.0" />
</font>
</Text>
<TextField fx:id="carTravelGasolineField" layoutX="14.0" layoutY="38.0" prefHeight="31.0" prefWidth="405.0" promptText="16.400" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<HBox alignment="CENTER_LEFT" layoutX="419.0" layoutY="38.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="km/year" wrappingWidth="49.0">
<font>
<Font size="13.0" />
</font>
</Text>
</children>
</HBox>
<Slider fx:id="carTravelGasolineSlider" layoutX="14.0" layoutY="122.0" majorTickUnit="15.0" max="115.0" min="10.0" minorTickCount="0" prefHeight="14.0" prefWidth="453.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="204.0" layoutY="77.0" prefHeight="31.0" prefWidth="89.0" styleClass="km-indicator">
<children>
<Label fx:id="carTravelGasolineLabel" alignment="TOP_CENTER" contentDisplay="CENTER" text="0 km/L">
<font>
<Font size="13.0" />
</font>
</Label>
</children>
</HBox>
<HBox alignment="CENTER" layoutX="204.0" layoutY="239.0" prefHeight="31.0" prefWidth="89.0" styleClass="km-indicator">
<children>
<Label fx:id="carTravelDieselLabel" alignment="TOP_CENTER" contentDisplay="CENTER" text="0 km/L">
<font>
<Font size="13.0" />
</font>
</Label>
</children>
</HBox>
<Slider fx:id="carTravelDieselSlider" layoutX="14.0" layoutY="285.0" majorTickUnit="15.0" max="115.0" min="10.0" minorTickCount="0" prefHeight="14.0" prefWidth="453.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER_LEFT" layoutX="419.0" layoutY="200.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="km/year" wrappingWidth="49.0">
<font>
<Font size="13.0" />
</font>
</Text>
</children>
</HBox>
<TextField fx:id="carTravelDieselField" layoutX="14.0" layoutY="200.0" prefHeight="31.0" prefWidth="405.0" promptText="15.400" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<Text fill="#505050" layoutX="14.0" layoutY="189.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Diesel">
<font>
<Font size="16.0" />
</font>
</Text>
<Text fill="#505050" layoutX="14.0" layoutY="354.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Electric">
<font>
<Font size="16.0" />
</font>
</Text>
<TextField fx:id="carTravelElectricField" layoutX="14.0" layoutY="365.0" prefHeight="31.0" prefWidth="405.0" promptText="14.900" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<HBox alignment="CENTER_LEFT" layoutX="419.0" layoutY="365.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="km/year" wrappingWidth="49.0">
<font>
<Font size="13.0" />
</font>
</Text>
</children>
</HBox>
<Slider fx:id="carTravelElectricSlider" layoutX="14.0" layoutY="450.0" majorTickUnit="15.0" max="115.0" min="10.0" minorTickCount="0" prefHeight="14.0" prefWidth="453.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="204.0" layoutY="404.0" prefHeight="31.0" prefWidth="89.0" styleClass="km-indicator">
<children>
<Label fx:id="carTravelElectricLabel" alignment="TOP_CENTER" contentDisplay="CENTER" text="0 km/Le">
<font>
<Font size="13.0" />
</font>
</Label>
</children>
</HBox>
</children>
</AnchorPane>
</content></ScrollPane>
<Text layoutX="300.0" layoutY="36.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How do you get around?">
<font>
<Font size="20.0" />
</font></Text>
<Text fill="#727272" layoutX="370.0" layoutY="103.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Car travel">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="355.0" layoutY="374.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Public Transit">
<font>
<Font size="18.0" />
</font>
</Text>
<TextField fx:id="publicTransitField" alignment="CENTER_RIGHT" layoutX="158.0" layoutY="394.0" prefHeight="31.0" prefWidth="499.0" promptText="0" text="0">
<font>
<Font size="18.0" />
</font></TextField>
<Text fill="#727272" layoutX="350.0" layoutY="476.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Airplane travel">
<font>
<Font size="18.0" />
</font>
</Text>
<TextField fx:id="airplaneTravelField" alignment="CENTER_RIGHT" layoutX="158.0" layoutY="495.0" prefHeight="31.0" prefWidth="499.0" promptText="0" text="0">
<font>
<Font size="18.0" />
</font></TextField>
<HBox alignment="CENTER_LEFT" layoutX="659.0" layoutY="398.0" prefHeight="31.0" prefWidth="62.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="km/year" wrappingWidth="63.0">
<font>
<Font size="16.0" />
</font>
</Text>
</children>
</HBox>
<HBox alignment="CENTER_LEFT" layoutX="659.0" layoutY="499.0" prefHeight="31.0" prefWidth="62.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="km/year" wrappingWidth="63.0">
<font>
<Font size="16.0" />
</font>
</Text>
</children>
</HBox>
<Button fx:id="travelNextButton" layoutX="383.0" layoutY="559.0" mnemonicParsing="false" onAction="#displayHome" styleClass="nextButton" text="Next" />
<Line endX="79.0" layoutX="232.0" layoutY="14.0" stroke="#545b54" />
</children>
</AnchorPane>
<AnchorPane fx:id="homePane" layoutY="85.0" prefHeight="618.0" prefWidth="820.0" visible="false">
<children>
<Text layoutX="245.0" layoutY="36.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How much do you use in your home?">
<font>
<Font size="20.0" />
</font>
</Text>
<Text fill="#727272" layoutX="177.0" layoutY="85.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Electricity">
<font>
<Font size="18.0" />
</font>
</Text>
<TextField fx:id="electricityField" layoutX="177.0" layoutY="105.0" prefHeight="31.0" prefWidth="434.0" promptText="1,570" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<HBox alignment="CENTER_LEFT" layoutX="616.0" layoutY="105.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="€/year" wrappingWidth="41.0">
<font>
<Font size="13.0" />
</font>
<HBox.margin>
<Insets left="3.0" />
</HBox.margin>
</Text>
</children>
</HBox>
<Slider fx:id="waterUsageSlider" blockIncrement="100.0" layoutX="177.0" layoutY="509.0" majorTickUnit="100.0" max="300.0" minorTickCount="0" prefHeight="24.0" prefWidth="499.0" showTickLabels="true" showTickMarks="true" />
<Slider fx:id="cleanEnergyPurchasedSlider" blockIncrement="25.0" layoutX="177.0" layoutY="188.0" minorTickCount="0" prefHeight="24.0" prefWidth="499.0" showTickLabels="true" showTickMarks="true" />
<Text fill="#6f6f6f" layoutX="238.0" layoutY="165.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Percent purchased from clean energy program:">
<font>
<Font size="15.0" />
</font>
</Text>
<HBox alignment="CENTER" layoutX="553.0" layoutY="146.0" prefHeight="27.0" prefWidth="55.0" styleClass="km-indicator">
<children>
<Label fx:id="cleanEnergyPurchasedLabel" text="0 %">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Button layoutX="400.0" layoutY="547.0" mnemonicParsing="false" onAction="#displayFood" styleClass="nextButton" text="Next" />
<Text fill="#727272" layoutX="177.0" layoutY="255.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Natural gas">
<font>
<Font size="18.0" />
</font>
</Text>
<HBox alignment="CENTER_LEFT" layoutX="616.0" layoutY="262.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="€/year" wrappingWidth="41.0">
<font>
<Font size="13.0" />
</font>
<HBox.margin>
<Insets left="3.0" />
</HBox.margin>
</Text>
</children>
</HBox>
<TextField fx:id="naturalGasField" layoutX="177.0" layoutY="262.0" prefHeight="31.0" prefWidth="434.0" promptText="2,000" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<HBox alignment="CENTER_LEFT" layoutX="616.0" layoutY="325.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="€/year" wrappingWidth="41.0">
<font>
<Font size="13.0" />
</font>
<HBox.margin>
<Insets left="3.0" />
</HBox.margin>
</Text>
</children>
</HBox>
<TextField fx:id="heatingOilField" layoutX="177.0" layoutY="325.0" prefHeight="31.0" prefWidth="434.0" promptText="3,100" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<Text fill="#727272" layoutX="177.0" layoutY="316.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Heating oil &amp; other fuels">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="177.0" layoutY="383.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Living space area">
<font>
<Font size="18.0" />
</font>
</Text>
<TextField fx:id="livingSpaceField" layoutX="177.0" layoutY="390.0" prefHeight="31.0" prefWidth="434.0" promptText="1,570" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<HBox alignment="CENTER_LEFT" layoutX="616.0" layoutY="390.0" prefHeight="31.0" prefWidth="0.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="m²" textAlignment="CENTER" wrappingWidth="41.0">
<font>
<Font size="19.0" />
</font>
<HBox.margin>
<Insets left="3.0" />
</HBox.margin>
</Text>
</children>
</HBox>
<Text fill="#727272" layoutX="177.0" layoutY="454.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Water usage">
<font>
<Font size="18.0" />
</font>
</Text>
<HBox alignment="CENTER" layoutX="298.0" layoutY="459.0" prefHeight="27.0" prefWidth="258.0" styleClass="km-indicator">
<children>
<Label fx:id="waterUsageLabel" text="0% of similar households">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Line endX="79.0" layoutX="317.0" layoutY="14.0" stroke="#545b54" />
</children></AnchorPane>
<ScrollPane fx:id="foodPane" layoutY="92.0" prefHeight="611.0" prefWidth="820.0" visible="false">
<content>
<AnchorPane prefHeight="1000.0" prefWidth="817.0">
<children>
<Text layoutX="146.0" layoutY="36.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How much does the average person in your household eat?">
<font>
<Font size="20.0" />
</font>
</Text>
<Text fill="#727272" layoutX="146.0" layoutY="117.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Meat, fish, eggs">
<font>
<Font size="18.0" />
</font>
</Text>
<Slider fx:id="meatFishEggsSlider" blockIncrement="2.5" layoutX="146.0" layoutY="205.0" majorTickUnit="2.5" max="7.5" minorTickCount="0" prefHeight="24.0" prefWidth="517.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="299.0" layoutY="149.0" prefHeight="31.0" prefWidth="220.0" styleClass="km-indicator">
<children>
<Label fx:id="meatFishEggsLabel" text="2.6 daily servings per person">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Text fill="#727272" layoutX="519.0" layoutY="115.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 2,6">
<font>
<Font size="15.0" />
</font>
</Text>
<Text fill="#727272" layoutX="519.0" layoutY="276.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 4,4">
<font>
<Font size="15.0" />
</font>
</Text>
<HBox alignment="CENTER" layoutX="299.0" layoutY="310.0" prefHeight="31.0" prefWidth="220.0" styleClass="km-indicator">
<children>
<Label fx:id="grainsBakedGoodsLabel" text="4.4 daily servings per person">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Slider fx:id="grainsBakedGoodsSlider" blockIncrement="4.5" layoutX="146.0" layoutY="366.0" majorTickUnit="4.5" max="13.5" minorTickCount="0" prefHeight="24.0" prefWidth="517.0" showTickLabels="true" showTickMarks="true" />
<Text fill="#727272" layoutX="146.0" layoutY="278.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Grains &amp; baked goods">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="146.0" layoutY="439.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Dairy">
<font>
<Font size="18.0" />
</font>
</Text>
<Slider fx:id="dairySlider" blockIncrement="2.5" layoutX="146.0" layoutY="527.0" majorTickUnit="2.5" max="7.5" minorTickCount="0" prefHeight="24.0" prefWidth="517.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="299.0" layoutY="471.0" prefHeight="31.0" prefWidth="220.0" styleClass="km-indicator">
<children>
<Label fx:id="dairyLabel" text="2.4 daily servings per person">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Text fill="#727272" layoutX="519.0" layoutY="437.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 2,4">
<font>
<Font size="15.0" />
</font>
</Text>
<Text fill="#727272" layoutX="524.0" layoutY="776.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 3,7">
<font>
<Font size="15.0" />
</font>
</Text>
<HBox alignment="CENTER" layoutX="304.0" layoutY="810.0" prefHeight="31.0" prefWidth="220.0" styleClass="km-indicator">
<children>
<Label fx:id="snacksDrinksLabel" text="3.7 daily servings per person">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Slider fx:id="snacksDrinksSlider" blockIncrement="3.7" layoutX="151.0" layoutY="866.0" majorTickUnit="3.7" max="11.0" minorTickCount="0" prefHeight="24.0" prefWidth="517.0" showTickLabels="true" showTickMarks="true" />
<Text fill="#727272" layoutX="151.0" layoutY="778.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Snacks, drinks etc.">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="151.0" layoutY="617.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Fruits &amp; vegetables">
<font>
<Font size="18.0" />
</font>
</Text>
<Slider fx:id="fruitsVegetablesSlider" blockIncrement="3.9" layoutX="151.0" layoutY="705.0" majorTickUnit="3.9" max="11.6" minorTickCount="0" prefHeight="24.0" prefWidth="517.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="304.0" layoutY="649.0" prefHeight="31.0" prefWidth="220.0" styleClass="km-indicator">
<children>
<Label fx:id="fruitsVegetablesLabel" text="3.9 daily servings per person">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Text fill="#727272" layoutX="524.0" layoutY="615.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 3,9">
<font>
<Font size="15.0" />
</font>
</Text>
<Button layoutX="378.0" layoutY="926.0" mnemonicParsing="false" onAction="#displayShopping" styleClass="nextButton" text="Next" />
<Line endX="79.0" layoutX="402.0" layoutY="7.0" stroke="#545b54" />
</children>
</AnchorPane>
</content>
</ScrollPane>
<AnchorPane fx:id="shoppingPane" layoutY="92.0" prefHeight="611.0" prefWidth="820.0" visible="false">
<children>
<Text layoutX="185.0" layoutY="36.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How much do you spend on each of the following?">
<font>
<Font size="20.0" />
</font>
</Text>
<Text fill="#727272" layoutX="133.0" layoutY="119.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Goods">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="133.0" layoutY="310.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Services">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="518.0" layoutY="117.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 1.520 € / month">
<font>
<Font size="15.0" />
</font>
</Text>
<Text fill="#727272" layoutX="518.0" layoutY="309.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 3.428 € / month">
<font>
<Font size="15.0" />
</font>
</Text>
<Slider fx:id="goodsSlider" blockIncrement="1520.0" layoutX="133.0" layoutY="209.0" majorTickUnit="1520.0" max="4560.0" minorTickCount="0" prefHeight="24.0" prefWidth="554.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="335.0" layoutY="145.0" prefHeight="31.0" prefWidth="150.0" styleClass="km-indicator">
<children>
<Label fx:id="goodsLabel" text="1520 € / month">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<HBox alignment="CENTER" layoutX="335.0" layoutY="348.0" prefHeight="31.0" prefWidth="150.0" styleClass="km-indicator">
<children>
<Label fx:id="servicesLabel" text="3428 € / month">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Slider fx:id="servicesSlider" blockIncrement="3428.0" layoutX="133.0" layoutY="418.0" majorTickUnit="3428.0" max="10284.0" minorTickCount="0" prefHeight="24.0" prefWidth="554.0" showTickLabels="true" showTickMarks="true" />
<Button layoutX="383.0" layoutY="547.0" mnemonicParsing="false" onAction="#displayExtra" styleClass="nextButton" text="Next" />
<Line endX="79.0" layoutX="487.0" layoutY="7.0" stroke="#545b54" />
</children></AnchorPane>
<AnchorPane fx:id="extraPane" layoutY="92.0" prefHeight="611.0" prefWidth="820.0" visible="false">
<children>
<Text layoutX="199.0" layoutY="36.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Have you done any extra activities to save CO2?">
<font>
<Font size="20.0" />
</font>
</Text>
<CheckBox fx:id="localProduceCheckbox" layoutX="233.0" layoutY="189.0" mnemonicParsing="false" styleClass="extraCheckBox" text="Buying local produce" textFill="#727272">
<font>
<Font size="18.0" />
</font>
</CheckBox>
<CheckBox fx:id="bikeCheckbox" layoutX="233.0" layoutY="235.0" mnemonicParsing="false" styleClass="extraCheckBox" text="Using your bike instead of your car" textFill="#727272">
<font>
<Font size="18.0" />
</font>
</CheckBox>
<CheckBox fx:id="temperatureCheckbox" layoutX="233.0" layoutY="281.0" mnemonicParsing="false" styleClass="extraCheckBox" text="Lowering the temperature of your home" textFill="#727272">
<font>
<Font size="18.0" />
</font>
</CheckBox>
<CheckBox fx:id="solarPanelsCheckbox" layoutX="233.0" layoutY="327.0" mnemonicParsing="false" styleClass="extraCheckBox" text="Installing solar panels" textFill="#727272">
<font>
<Font size="18.0" />
</font>
</CheckBox>
<Line endX="79.0" layoutX="572.0" layoutY="7.0" stroke="#545b54" />
</children>
</AnchorPane>
</children>
</AnchorPane>

View File

@@ -1,30 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.*?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="602.0" prefWidth="934.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.UserController">
<children>
<ImageView fitHeight="600.0" fitWidth="943.0" layoutX="-1.0" pickOnBounds="true">
<image>
<Image url="@../pinkleaf.jpg" />
</image></ImageView>
<Text fill="#23773d" layoutX="283.0" layoutY="100.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Go Green" textAlignment="CENTER" wrappingWidth="374.936767578125">
<Text fill="#23773d" layoutX="283.0" layoutY="100.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Greenify" textAlignment="CENTER" wrappingWidth="374.936767578125">
<font>
<Font name="Californian FB" size="72.0" />
<Font name="Corbel" size="72.0" />
</font>
</Text>
<Button fx:id="loginButton" layoutX="419.0" layoutY="274.0" mnemonicParsing="false" onAction="#handleLoginButtonAction" prefHeight="26.0" prefWidth="96.0" text="Login" textAlignment="CENTER" />
<Button fx:id="signupButton" layoutX="42.0" layoutY="52.0" mnemonicParsing="false" onAction="#handleRegisterButtonAction" prefHeight="10.0" prefWidth="96.0" text="Sign up!" />
<Button fx:id="signUpButton" layoutX="42.0" layoutY="52.0" mnemonicParsing="false" onAction="#handleRegisterButtonAction" prefHeight="10.0" prefWidth="96.0" text="Sign up!" />
<PasswordField fx:id="passwordField" layoutX="318.0" layoutY="210.0" prefHeight="42.0" prefWidth="303.0" promptText="Password" />
<Hyperlink layoutX="392.0" layoutY="308.0" prefHeight="42.0" prefWidth="173.0" text="Forgot Password?" textAlignment="CENTER" textFill="WHITE" textOverrun="LEADING_WORD_ELLIPSIS">
<font>
<Font name="Bodoni MT Bold" size="18.0" />
</font>
</Hyperlink>
<Text fill="#23773d" layoutX="20.0" layoutY="40.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Not Member?" textAlignment="CENTER" wrappingWidth="146.13673400878906">
<Text fill="#23773d" layoutX="20.0" layoutY="40.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Not a member?" textAlignment="CENTER" wrappingWidth="146.13673400878906">
<font>
<Font name="Californian FB" size="20.0" />
</font>

View File

@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.PasswordField?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.shape.*?>
<?import javafx.scene.text.*?>
<AnchorPane prefHeight="300.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.RegisterWindowController">
<children>
<Line fx:id="uNamePathLine" endX="100.0" layoutX="2.0" layoutY="109.0" startX="-100.0" />
<ImageView fitHeight="312.0" fitWidth="300.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../registerBackground.png" />
@@ -25,7 +25,7 @@
<Font size="13.0" />
</font>
</TextField>
<Button fx:id="signupButton" layoutX="115.0" layoutY="229.0" mnemonicParsing="false" onAction="#handleSignUpButton" style="-fx-background-color: #005e07;" text="Sign up!" textFill="#c4eec9">
<Button fx:id="signUpButton" layoutX="115.0" layoutY="229.0" mnemonicParsing="false" onAction="#handleSignUpButton" text="Sign up!" textFill="#c4eec9">
<font>
<Font name="Corbel Bold" size="14.0" />
</font>

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane prefHeight="287.0" prefWidth="187.0" style="-fx-background-color: #e2f0c8;" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.FriendController">
<children>
<Text fill="#00650d" layoutX="114.0" layoutY="64.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Remove Friend" textAlignment="CENTER" wrappingWidth="234.96600341796875">
<font>
<Font size="30.0" />
</font>
</Text>
<TextField fx:id="removeUserNameText" layoutX="140.0" layoutY="100.0" prefHeight="35.0" prefWidth="183.0" promptText="Username">
<font>
<Font size="13.0" />
</font>
</TextField>
<Button fx:id="removeButton" layoutX="206.0" layoutY="154.0" mnemonicParsing="false" onAction="#removeFriend" style="-fx-background-color: #005e07;" text="Remove!" textFill="#c4eec9">
<font>
<Font name="Corbel Bold" size="14.0" />
</font>
</Button>
<ImageView fitHeight="80.0" fitWidth="349.0" layoutY="211.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/grass.png"/>
</image>
</ImageView>
<ImageView fitHeight="150.0" fitWidth="200.0" layoutY="43.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/friends.png" />
</image>
</ImageView>
</children>
</AnchorPane>

View File

@@ -0,0 +1,632 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.shape.*?>
<?import java.lang.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Slider?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane prefHeight="703.0" prefWidth="820.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.CalculatorController">
<children>
<AnchorPane fx:id="calculatorTabs" prefHeight="92.0" prefWidth="820.0" style="-fx-background-color: #677069;">
<children>
<Button fx:id="calculatorGetStartedButton" contentDisplay="TOP" layoutX="147.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayGetStarted" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Get started" textFill="#d4ddd6" AnchorPane.leftAnchor="147.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/cloud.png" />
<!--image credits:-->
<!--image made by Smashicons https://www.flaticon.com/authors/smashicons-->
<!--from https://www.flaticon.com/
flaticon is licenced by http://creativecommons.org/licenses/by/3.0/ Creative Commons BY 3.0-->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="calculatorTravelButton" contentDisplay="TOP" layoutX="232.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayTravel" prefWidth="79.0" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Travel" textFill="#d4ddd6" AnchorPane.leftAnchor="232.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/world.png" />
<!--image credits:
made by prettycons https://www.flaticon.com/authors/prettycons
from https://www.flaticon.com/
flaticon is licenced by http://creativecommons.org/licenses/by/3.0/ Creative Commons BY 3.0
-->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="calculatorHomeButton" contentDisplay="TOP" layoutX="317.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayHome" prefWidth="79.0" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Home" textFill="#d4ddd6" AnchorPane.leftAnchor="317.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/home.png" />
<!--image credits:
made by Smashicons https://www.flaticon.com/authors/smashicons
from https://www.flaticon.com/
flaticon is licenced by http://creativecommons.org/licenses/by/3.0/ Creative Commons BY 3.0
-->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="calculatorFoodButton" contentDisplay="TOP" layoutX="402.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayFood" prefWidth="79.0" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Food" textFill="#d4ddd6" AnchorPane.leftAnchor="402.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/coffee-cup.png" />
<!--image credits:
made by pixel-perfect https://www.flaticon.com/authors/pixel-perfect
from https://www.flaticon.com/
flaticon is licenced by http://creativecommons.org/licenses/by/3.0/ Creative Commons BY 3.0
-->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="calculatorShoppingButton" contentDisplay="TOP" layoutX="487.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayShopping" prefHeight="81.0" prefWidth="79.0" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Shopping" textFill="#d4ddd6" AnchorPane.leftAnchor="487.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/shopping-cart.png" />
<!--image credits:
made by Gregor Cresnar https://www.flaticon.com/authors/gregor-cresnar
from https://www.flaticon.com/
flaticon is licenced by http://creativecommons.org/licenses/by/3.0/ Creative Commons BY 3.0
-->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="saveButton" layoutX="702.0" layoutY="24.0" mnemonicParsing="false" onAction="#saveCalc" text="Save">
<font>
<Font size="17.0" />
</font></Button>
<Button fx:id="calculatorExtraButton" contentDisplay="TOP" layoutX="497.0" layoutY="5.0" mnemonicParsing="false" onAction="#displayExtra" prefHeight="81.0" prefWidth="79.0" style="-fx-padding: 0px 0px 0px 0px;" styleClass="navButton" text="Extra" textFill="#d4ddd6" AnchorPane.leftAnchor="572.0">
<font>
<Font name="Corbel Bold" size="16.0" />
</font>
<graphic>
<ImageView fitHeight="60.0" fitWidth="52.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/icons8-potted-plant-100.png" />
</image>
</ImageView>
</graphic>
</Button>
</children>
</AnchorPane>
<AnchorPane fx:id="getStartedPane" layoutY="85.0" prefHeight="618.0" prefWidth="820.0" AnchorPane.leftAnchor="0.0">
<children>
<Text layoutX="224.0" layoutY="96.0" strokeType="OUTSIDE" strokeWidth="0.0" text="1. How many people live in your household?">
<font>
<Font size="19.0" />
</font>
</Text>
<Slider fx:id="peopleInHouseholdSlider" blockIncrement="1.0" layoutX="260.0" layoutY="147.0" majorTickUnit="1.0" max="6.0" min="1.0" minorTickCount="0" prefHeight="38.0" prefWidth="300.0" showTickLabels="true" showTickMarks="true" snapToTicks="true" styleClass="slidertje" />
<Label fx:id="peopleInHouseHoldLabel" alignment="CENTER" contentDisplay="CENTER" layoutX="612.0" layoutY="70.0" prefHeight="38.0" prefWidth="44.0" text="0">
<font>
<Font size="20.0" />
</font></Label>
<Text layoutX="207.0" layoutY="254.0" strokeType="OUTSIDE" strokeWidth="0.0" text="2. What is your gross annual household income?">
<font>
<Font size="19.0" />
</font>
</Text>
<Slider fx:id="annualIncomeSlider" layoutX="224.0" layoutY="302.0" majorTickUnit="10.0" minorTickCount="0" prefHeight="38.0" prefWidth="388.0" showTickLabels="true" showTickMarks="true" />
<Text fill="#757575" layoutX="373.0" layoutY="277.0" strokeType="OUTSIDE" strokeWidth="0.0" text="in 1000 euros">
<font>
<Font size="15.0" />
</font>
</Text>
<Label fx:id="annualIncomeLabel" layoutX="634.0" layoutY="232.0" prefHeight="30.0" prefWidth="150.0" text="0">
<font>
<Font size="20.0" />
</font>
<opaqueInsets>
<Insets />
</opaqueInsets>
</Label>
<Button fx:id="getStartedNextButton" layoutX="383.0" layoutY="406.0" mnemonicParsing="false" onAction="#displayTravel" styleClass="nextButton" text="Next" />
<Line endX="79.0" layoutX="147.0" layoutY="14.0" stroke="#545b54" />
</children></AnchorPane>
<AnchorPane fx:id="travelPane" layoutY="85.0" prefHeight="618.0" prefWidth="820.0" visible="false">
<children>
<ScrollPane layoutX="158.0" layoutY="109.0" prefHeight="215.0" prefWidth="499.0">
<content>
<AnchorPane prefHeight="505.0" prefWidth="497.0">
<children>
<Text fill="#505050" layoutX="14.0" layoutY="27.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Gasoline">
<font>
<Font size="16.0" />
</font>
</Text>
<TextField fx:id="carTravelGasolineField" layoutX="14.0" layoutY="38.0" prefHeight="31.0" prefWidth="405.0" promptText="16.400" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<HBox alignment="CENTER_LEFT" layoutX="419.0" layoutY="38.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="km/year" wrappingWidth="49.0">
<font>
<Font size="13.0" />
</font>
</Text>
</children>
</HBox>
<Slider fx:id="carTravelGasolineSlider" layoutX="14.0" layoutY="122.0" majorTickUnit="15.0" max="115.0" min="10.0" minorTickCount="0" prefHeight="14.0" prefWidth="453.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="204.0" layoutY="77.0" prefHeight="31.0" prefWidth="89.0" styleClass="km-indicator">
<children>
<Label fx:id="carTravelGasolineLabel" alignment="TOP_CENTER" contentDisplay="CENTER" text="0 km/L">
<font>
<Font size="13.0" />
</font>
</Label>
</children>
</HBox>
<HBox alignment="CENTER" layoutX="204.0" layoutY="239.0" prefHeight="31.0" prefWidth="89.0" styleClass="km-indicator">
<children>
<Label fx:id="carTravelDieselLabel" alignment="TOP_CENTER" contentDisplay="CENTER" text="0 km/L">
<font>
<Font size="13.0" />
</font>
</Label>
</children>
</HBox>
<Slider fx:id="carTravelDieselSlider" layoutX="14.0" layoutY="285.0" majorTickUnit="15.0" max="115.0" min="10.0" minorTickCount="0" prefHeight="14.0" prefWidth="453.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER_LEFT" layoutX="419.0" layoutY="200.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="km/year" wrappingWidth="49.0">
<font>
<Font size="13.0" />
</font>
</Text>
</children>
</HBox>
<TextField fx:id="carTravelDieselField" layoutX="14.0" layoutY="200.0" prefHeight="31.0" prefWidth="405.0" promptText="15.400" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<Text fill="#505050" layoutX="14.0" layoutY="189.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Diesel">
<font>
<Font size="16.0" />
</font>
</Text>
<Text fill="#505050" layoutX="14.0" layoutY="354.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Electric">
<font>
<Font size="16.0" />
</font>
</Text>
<TextField fx:id="carTravelElectricField" layoutX="14.0" layoutY="365.0" prefHeight="31.0" prefWidth="405.0" promptText="14.900" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<HBox alignment="CENTER_LEFT" layoutX="419.0" layoutY="365.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="km/year" wrappingWidth="49.0">
<font>
<Font size="13.0" />
</font>
</Text>
</children>
</HBox>
<Slider fx:id="carTravelElectricSlider" layoutX="14.0" layoutY="450.0" majorTickUnit="15.0" max="115.0" min="10.0" minorTickCount="0" prefHeight="14.0" prefWidth="453.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="204.0" layoutY="404.0" prefHeight="31.0" prefWidth="89.0" styleClass="km-indicator">
<children>
<Label fx:id="carTravelElectricLabel" alignment="TOP_CENTER" contentDisplay="CENTER" text="0 km/Le">
<font>
<Font size="13.0" />
</font>
</Label>
</children>
</HBox>
</children>
</AnchorPane>
</content></ScrollPane>
<Text layoutX="300.0" layoutY="36.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How do you get around?">
<font>
<Font size="20.0" />
</font></Text>
<Text fill="#727272" layoutX="370.0" layoutY="103.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Car travel">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="355.0" layoutY="374.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Public Transit">
<font>
<Font size="18.0" />
</font>
</Text>
<TextField fx:id="publicTransitField" alignment="CENTER_RIGHT" layoutX="158.0" layoutY="394.0" prefHeight="31.0" prefWidth="499.0" promptText="0" text="0">
<font>
<Font size="18.0" />
</font></TextField>
<Text fill="#727272" layoutX="350.0" layoutY="476.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Airplane travel">
<font>
<Font size="18.0" />
</font>
</Text>
<TextField fx:id="airplaneTravelField" alignment="CENTER_RIGHT" layoutX="158.0" layoutY="495.0" prefHeight="31.0" prefWidth="499.0" promptText="0" text="0">
<font>
<Font size="18.0" />
</font></TextField>
<HBox alignment="CENTER_LEFT" layoutX="659.0" layoutY="398.0" prefHeight="31.0" prefWidth="62.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="km/year" wrappingWidth="63.0">
<font>
<Font size="16.0" />
</font>
</Text>
</children>
</HBox>
<HBox alignment="CENTER_LEFT" layoutX="659.0" layoutY="499.0" prefHeight="31.0" prefWidth="62.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="km/year" wrappingWidth="63.0">
<font>
<Font size="16.0" />
</font>
</Text>
</children>
</HBox>
<Button fx:id="travelNextButton" layoutX="383.0" layoutY="559.0" mnemonicParsing="false" onAction="#displayHome" styleClass="nextButton" text="Next" />
<Line endX="79.0" layoutX="232.0" layoutY="14.0" stroke="#545b54" />
</children>
</AnchorPane>
<AnchorPane fx:id="homePane" layoutY="85.0" prefHeight="618.0" prefWidth="820.0" visible="false">
<children>
<Text layoutX="245.0" layoutY="36.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How much do you use in your home?">
<font>
<Font size="20.0" />
</font>
</Text>
<Text fill="#727272" layoutX="177.0" layoutY="85.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Electricity">
<font>
<Font size="18.0" />
</font>
</Text>
<TextField fx:id="electricityField" layoutX="177.0" layoutY="105.0" prefHeight="31.0" prefWidth="434.0" promptText="1,570" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<HBox alignment="CENTER_LEFT" layoutX="616.0" layoutY="105.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="€/year" wrappingWidth="41.0">
<font>
<Font size="13.0" />
</font>
<HBox.margin>
<Insets left="3.0" />
</HBox.margin>
</Text>
</children>
</HBox>
<Slider fx:id="waterUsageSlider" blockIncrement="100.0" layoutX="177.0" layoutY="509.0" majorTickUnit="100.0" max="300.0" minorTickCount="0" prefHeight="24.0" prefWidth="499.0" showTickLabels="true" showTickMarks="true" />
<Slider fx:id="cleanEnergyPurchasedSlider" blockIncrement="25.0" layoutX="177.0" layoutY="188.0" minorTickCount="0" prefHeight="24.0" prefWidth="499.0" showTickLabels="true" showTickMarks="true" />
<Text fill="#6f6f6f" layoutX="238.0" layoutY="165.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Percent purchased from clean energy program:">
<font>
<Font size="15.0" />
</font>
</Text>
<HBox alignment="CENTER" layoutX="553.0" layoutY="146.0" prefHeight="27.0" prefWidth="55.0" styleClass="km-indicator">
<children>
<Label fx:id="cleanEnergyPurchasedLabel" text="0 %">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Button layoutX="400.0" layoutY="547.0" mnemonicParsing="false" onAction="#displayFood" styleClass="nextButton" text="Next" />
<Text fill="#727272" layoutX="177.0" layoutY="255.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Natural gas">
<font>
<Font size="18.0" />
</font>
</Text>
<HBox alignment="CENTER_LEFT" layoutX="616.0" layoutY="262.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="€/year" wrappingWidth="41.0">
<font>
<Font size="13.0" />
</font>
<HBox.margin>
<Insets left="3.0" />
</HBox.margin>
</Text>
</children>
</HBox>
<TextField fx:id="naturalGasField" layoutX="177.0" layoutY="262.0" prefHeight="31.0" prefWidth="434.0" promptText="2,000" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<HBox alignment="CENTER_LEFT" layoutX="616.0" layoutY="325.0" prefHeight="31.0" prefWidth="54.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="€/year" wrappingWidth="41.0">
<font>
<Font size="13.0" />
</font>
<HBox.margin>
<Insets left="3.0" />
</HBox.margin>
</Text>
</children>
</HBox>
<TextField fx:id="heatingOilField" layoutX="177.0" layoutY="325.0" prefHeight="31.0" prefWidth="434.0" promptText="3,100" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<Text fill="#727272" layoutX="177.0" layoutY="316.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Heating oil &amp; other fuels">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="177.0" layoutY="383.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Living space area">
<font>
<Font size="18.0" />
</font>
</Text>
<TextField fx:id="livingSpaceField" layoutX="177.0" layoutY="390.0" prefHeight="31.0" prefWidth="434.0" promptText="1,570" text="0">
<font>
<Font size="15.0" />
</font>
</TextField>
<HBox alignment="CENTER_LEFT" layoutX="616.0" layoutY="390.0" prefHeight="31.0" prefWidth="0.0" styleClass="km-yearBox">
<children>
<Text layoutY="3.0" strokeType="OUTSIDE" strokeWidth="0.0" text="m²" textAlignment="CENTER" wrappingWidth="41.0">
<font>
<Font size="19.0" />
</font>
<HBox.margin>
<Insets left="3.0" />
</HBox.margin>
</Text>
</children>
</HBox>
<Text fill="#727272" layoutX="177.0" layoutY="454.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Water usage">
<font>
<Font size="18.0" />
</font>
</Text>
<HBox alignment="CENTER" layoutX="298.0" layoutY="459.0" prefHeight="27.0" prefWidth="258.0" styleClass="km-indicator">
<children>
<Label fx:id="waterUsageLabel" text="0% of similar households">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Line endX="79.0" layoutX="317.0" layoutY="14.0" stroke="#545b54" />
</children></AnchorPane>
<ScrollPane fx:id="foodPane" layoutY="92.0" prefHeight="611.0" prefWidth="820.0" visible="false">
<content>
<AnchorPane prefHeight="1000.0" prefWidth="817.0">
<children>
<Text layoutX="146.0" layoutY="36.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How much does the average person in your household eat?">
<font>
<Font size="20.0" />
</font>
</Text>
<Text fill="#727272" layoutX="146.0" layoutY="117.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Meat, fish, eggs">
<font>
<Font size="18.0" />
</font>
</Text>
<Slider fx:id="meatFishEggsSlider" blockIncrement="2.5" layoutX="146.0" layoutY="205.0" majorTickUnit="2.5" max="7.5" minorTickCount="0" prefHeight="24.0" prefWidth="517.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="299.0" layoutY="149.0" prefHeight="31.0" prefWidth="220.0" styleClass="km-indicator">
<children>
<Label fx:id="meatFishEggsLabel" text="2.6 daily servings per person">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Text fill="#727272" layoutX="519.0" layoutY="115.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 2,6">
<font>
<Font size="15.0" />
</font>
</Text>
<Text fill="#727272" layoutX="519.0" layoutY="276.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 4,4">
<font>
<Font size="15.0" />
</font>
</Text>
<HBox alignment="CENTER" layoutX="299.0" layoutY="310.0" prefHeight="31.0" prefWidth="220.0" styleClass="km-indicator">
<children>
<Label fx:id="grainsBakedGoodsLabel" text="4.4 daily servings per person">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Slider fx:id="grainsBakedGoodsSlider" blockIncrement="4.5" layoutX="146.0" layoutY="366.0" majorTickUnit="4.5" max="13.5" minorTickCount="0" prefHeight="24.0" prefWidth="517.0" showTickLabels="true" showTickMarks="true" />
<Text fill="#727272" layoutX="146.0" layoutY="278.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Grains &amp; baked goods">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="146.0" layoutY="439.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Dairy">
<font>
<Font size="18.0" />
</font>
</Text>
<Slider fx:id="dairySlider" blockIncrement="2.5" layoutX="146.0" layoutY="527.0" majorTickUnit="2.5" max="7.5" minorTickCount="0" prefHeight="24.0" prefWidth="517.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="299.0" layoutY="471.0" prefHeight="31.0" prefWidth="220.0" styleClass="km-indicator">
<children>
<Label fx:id="dairyLabel" text="2.4 daily servings per person">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Text fill="#727272" layoutX="519.0" layoutY="437.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 2,4">
<font>
<Font size="15.0" />
</font>
</Text>
<Text fill="#727272" layoutX="524.0" layoutY="776.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 3,7">
<font>
<Font size="15.0" />
</font>
</Text>
<HBox alignment="CENTER" layoutX="304.0" layoutY="810.0" prefHeight="31.0" prefWidth="220.0" styleClass="km-indicator">
<children>
<Label fx:id="snacksDrinksLabel" text="3.7 daily servings per person">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Slider fx:id="snacksDrinksSlider" blockIncrement="3.7" layoutX="151.0" layoutY="866.0" majorTickUnit="3.7" max="11.0" minorTickCount="0" prefHeight="24.0" prefWidth="517.0" showTickLabels="true" showTickMarks="true" />
<Text fill="#727272" layoutX="151.0" layoutY="778.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Snacks, drinks etc.">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="151.0" layoutY="617.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Fruits &amp; vegetables">
<font>
<Font size="18.0" />
</font>
</Text>
<Slider fx:id="fruitsVegetablesSlider" blockIncrement="3.9" layoutX="151.0" layoutY="705.0" majorTickUnit="3.9" max="11.6" minorTickCount="0" prefHeight="24.0" prefWidth="517.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="304.0" layoutY="649.0" prefHeight="31.0" prefWidth="220.0" styleClass="km-indicator">
<children>
<Label fx:id="fruitsVegetablesLabel" text="3.9 daily servings per person">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Text fill="#727272" layoutX="524.0" layoutY="615.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 3,9">
<font>
<Font size="15.0" />
</font>
</Text>
<Button layoutX="378.0" layoutY="926.0" mnemonicParsing="false" onAction="#displayShopping" styleClass="nextButton" text="Next" />
<Line endX="79.0" layoutX="402.0" layoutY="7.0" stroke="#545b54" />
</children>
</AnchorPane>
</content>
</ScrollPane>
<AnchorPane fx:id="shoppingPane" layoutY="92.0" prefHeight="611.0" prefWidth="820.0" visible="false">
<children>
<Text layoutX="185.0" layoutY="36.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How much do you spend on each of the following?">
<font>
<Font size="20.0" />
</font>
</Text>
<Text fill="#727272" layoutX="133.0" layoutY="119.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Goods">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="133.0" layoutY="310.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Services">
<font>
<Font size="18.0" />
</font>
</Text>
<Text fill="#727272" layoutX="518.0" layoutY="117.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 1.520 € / month">
<font>
<Font size="15.0" />
</font>
</Text>
<Text fill="#727272" layoutX="518.0" layoutY="309.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Average: 3.428 € / month">
<font>
<Font size="15.0" />
</font>
</Text>
<Slider fx:id="goodsSlider" blockIncrement="1520.0" layoutX="133.0" layoutY="209.0" majorTickUnit="1520.0" max="4560.0" minorTickCount="0" prefHeight="24.0" prefWidth="554.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="335.0" layoutY="145.0" prefHeight="31.0" prefWidth="150.0" styleClass="km-indicator">
<children>
<Label fx:id="goodsLabel" text="1520 € / month">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<HBox alignment="CENTER" layoutX="335.0" layoutY="348.0" prefHeight="31.0" prefWidth="150.0" styleClass="km-indicator">
<children>
<Label fx:id="servicesLabel" text="3428 € / month">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</HBox>
<Slider fx:id="servicesSlider" blockIncrement="3428.0" layoutX="133.0" layoutY="418.0" majorTickUnit="3428.0" max="10284.0" minorTickCount="0" prefHeight="24.0" prefWidth="554.0" showTickLabels="true" showTickMarks="true" />
<Button layoutX="383.0" layoutY="547.0" mnemonicParsing="false" onAction="#displayExtra" styleClass="nextButton" text="Next" />
<Line endX="79.0" layoutX="487.0" layoutY="7.0" stroke="#545b54" />
</children></AnchorPane>
<AnchorPane fx:id="extraPane" layoutY="92.0" prefHeight="611.0" prefWidth="820.0" visible="false">
<children>
<Text layoutX="199.0" layoutY="36.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Have you done any extra activities to save CO2?">
<font>
<Font size="20.0" />
</font>
</Text>
<CheckBox fx:id="localProduceCheckbox" layoutX="233.0" layoutY="189.0" mnemonicParsing="false" styleClass="extraCheckBox" text="Buying local produce" textFill="#727272">
<font>
<Font size="18.0" />
</font>
</CheckBox>
<CheckBox fx:id="bikeCheckbox" layoutX="233.0" layoutY="235.0" mnemonicParsing="false" styleClass="extraCheckBox" text="Using your bike instead of your car" textFill="#727272">
<font>
<Font size="18.0" />
</font>
</CheckBox>
<CheckBox fx:id="temperatureCheckbox" layoutX="233.0" layoutY="281.0" mnemonicParsing="false" styleClass="extraCheckBox" text="Lowering the temperature of your home" textFill="#727272">
<font>
<Font size="18.0" />
</font>
</CheckBox>
<CheckBox fx:id="solarPanelsCheckbox" layoutX="233.0" layoutY="327.0" mnemonicParsing="false" styleClass="extraCheckBox" text="Installing solar panels" textFill="#727272">
<font>
<Font size="18.0" />
</font>
</CheckBox>
<Line endX="79.0" layoutX="572.0" layoutY="7.0" stroke="#545b54" />
</children>
</AnchorPane>
</children>
</AnchorPane>

View File

@@ -1,20 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.chart.PieChart?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.shape.Line?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane prefHeight="602.0" prefWidth="934.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.DashBoardController">
<AnchorPane prefHeight="702.0" prefWidth="1032.0" xmlns="http://javafx.com/javafx/10.0.1" 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;">
<AnchorPane fx:id="menuBar" prefHeight="703.0" prefWidth="216.0" style="-fx-background-color: #5a635c;">
<children>
<Label alignment="CENTER" contentDisplay="CENTER" layoutY="-2.0" prefHeight="90.0" prefWidth="216.0" text="Greenify" textAlignment="CENTER" textFill="#71bc84">
<font>
@@ -36,144 +41,369 @@
<Font size="21.0" />
</font>
</Button>
<Button fx:id="friendsButton" layoutY="224.0" mnemonicParsing="false" onAction="#displayFriends" prefHeight="45.0" prefWidth="216.0" text="friends">
<font>
<Font size="21.0" />
</font>
</Button>
<Button fx:id="logOutButton" layoutX="33.0" layoutY="638.0" mnemonicParsing="false" onAction="#logOut" prefHeight="45.0" prefWidth="149.0" text="log out ">
<font>
<Font size="21.0" />
</font>
</Button>
<Line endX="104.0" layoutX="102.0" layoutY="133.0" scaleY="0.7" startX="-100.0" stroke="#e3ffe8" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
<Line endX="104.0" layoutX="105.0" layoutY="178.0" scaleY="0.7" startX="-100.0" stroke="#e3ffe8" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
<Line endX="104.0" layoutX="109.0" layoutY="223.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
<Line fx:id="pathLine" endX="100.0" endY="28.0" fill="#1b9736" layoutX="8.0" layoutY="323.0" startX="-100.0" startY="28.0" stroke="#5a635c" />
<Line endX="104.0" layoutX="106.0" layoutY="270.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
<Label fx:id="hintText" alignment="TOP_LEFT" layoutX="14.0" layoutY="420.0" prefHeight="218.0" prefWidth="187.0" text="Hints" textFill="#c2cdc4">
<font>
<Font size="15.0" />
</font>
</Label>
<Text fill="#002c0c" layoutX="14.0" layoutY="415.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Random hint!">
<font>
<Font size="20.0" />
</font>
</Text>
<Button fx:id="refreshHintsButton" layoutX="157.0" layoutY="390.0" mnemonicParsing="false" onAction="#addRandomHints" style="-fx-background-color: transparent;">
<graphic>
<ImageView fitHeight="26.0" fitWidth="24.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/refresh2.png" />
</image>
</ImageView>
</graphic>
</Button>
<Line endX="104.0" layoutX="108.0" layoutY="88.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" />
</children></AnchorPane>
<AnchorPane fx:id="activitiesPane" layoutX="214.0" prefHeight="603.0" prefWidth="711.0" visible="false">
<AnchorPane fx:id="activitiesPane" layoutX="214.0" prefHeight="703.0" prefWidth="820.0" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="214.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<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">
<Text fill="#002c0c" layoutX="101.0" layoutY="74.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Activity Summary" AnchorPane.leftAnchor="60.0" AnchorPane.topAnchor="40.0">
<font>
<Font size="30.0" />
</font>
</Text>
<Pane layoutX="20.0" layoutY="93.0" prefHeight="471.0" prefWidth="280.0" style="-fx-background-color: #f4fff4;">
<Label alignment="CENTER" layoutX="20.0" layoutY="100.0" prefHeight="32.0" prefWidth="255.0" text="Get Started!" textAlignment="CENTER" textFill="#107222">
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
</Label>
<Pane layoutX="20.0" layoutY="130.0" prefHeight="142.0" prefWidth="255.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">
<Label layoutX="14.0" layoutY="16.0" prefHeight="40.0" prefWidth="154.0" text="Number of people">
<font>
<Font size="14.0" />
<Font size="18.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">
</Label>
<Label layoutX="14.0" layoutY="70.0" prefHeight="40.0" prefWidth="154.0" text="Household income">
<font>
<Font size="14.0" />
<Font size="18.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>
</Label>
<Label fx:id="peopleNumber" layoutX="207.0" layoutY="28.0" styleClass="activityField" text=" " textAlignment="CENTER" />
<Label fx:id="income" layoutX="204.0" layoutY="82.0" styleClass="activityField" text=" " textAlignment="CENTER" />
</children>
</Pane>
<Pane layoutX="310.0" layoutY="93.0" prefHeight="471.0" prefWidth="150.0" style="-fx-background-color: #f4fff4;">
<Label alignment="CENTER" layoutX="20.0" layoutY="275.0" prefHeight="32.0" prefWidth="255.0" text="Home!" textAlignment="CENTER" textFill="#107222">
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
</Label>
<Pane layoutX="20.0" layoutY="307.0" prefHeight="342.0" prefWidth="255.0" style="-fx-background-color: #f4fff4;">
<children>
<Text layoutX="48.0" layoutY="37.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Count" textAlignment="CENTER">
<font>
<Font size="21.0" />
</font>
</Text>
<Label fx:id="veganMealCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="55.0" prefHeight="30.0" prefWidth="115.0" text="0">
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="26.0" prefHeight="40.0" prefWidth="149.0" text="Electricity usage">
<font>
<Font size="18.0" />
</font>
</Label>
<Label fx:id="localProduceCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="100.0" prefHeight="30.0" prefWidth="115.0" text="0">
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="74.0" prefHeight="40.0" prefWidth="149.0" text="\% of clean energy prog.">
<font>
<Font size="14.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="122.0" prefHeight="40.0" prefWidth="149.0" text="Natural gas usage">
<font>
<Font size="18.0" />
</font>
</Label>
<Label fx:id="bikeCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="145.0" prefHeight="30.0" prefWidth="115.0" text="0">
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="168.0" prefHeight="40.0" prefWidth="149.0" text="Heating oil usage">
<font>
<Font size="18.0" />
</font>
</Label>
<Label fx:id="publicTransportCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="190.0" prefHeight="30.0" prefWidth="115.0" text="0">
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="216.0" prefHeight="40.0" prefWidth="149.0" text="Water usage">
<font>
<Font size="18.0" />
</font>
</Label>
<Label fx:id="temperatureCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="18.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="18.0" layoutY="280.0" prefHeight="30.0" prefWidth="115.0" text="0">
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="264.0" prefHeight="40.0" prefWidth="149.0" text="Living space area">
<font>
<Font size="18.0" />
</font>
</Label>
<Label fx:id="electricityUsage" layoutX="207.0" layoutY="38.0" styleClass="activityField" text="Label" />
<Label fx:id="cleanEnergy" layoutX="207.0" layoutY="86.0" styleClass="activityField" text="Label" />
<Label fx:id="naturalGasUsage" layoutX="207.0" layoutY="134.0" styleClass="activityField" text="Label" />
<Label fx:id="heatingOilUsage" layoutX="207.0" layoutY="180.0" styleClass="activityField" text="Label" />
<Label fx:id="waterUsage" layoutX="207.0" layoutY="228.0" styleClass="activityField" text="Label" />
<Label fx:id="livingSpace" layoutX="207.0" layoutY="276.0" styleClass="activityField" text="Label" />
</children>
</Pane>
<Pane layoutX="470.0" layoutY="93.0" prefHeight="471.0" prefWidth="150.0" style="-fx-background-color: #f4fff4;">
<Label alignment="CENTER" layoutX="290.0" layoutY="100.0" prefHeight="32.0" prefWidth="230.0" text="Travel!" textAlignment="CENTER" textFill="#107222">
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
</Label>
<Pane layoutX="290.0" layoutY="130.0" prefHeight="342.0" prefWidth="230.0" style="-fx-background-color: #f4fff4;">
<children>
<Text layoutX="7.0" layoutY="37.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Activities done">
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="11.0" prefHeight="27.0" prefWidth="149.0" text="Gasoline km">
<font>
<Font size="21.0" />
</font>
</Text>
<Label fx:id="totalVeganMealCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="55.0" prefHeight="30.0" prefWidth="115.0" text="0">
<font>
<Font size="18.0" />
<Font size="14.0" />
</font>
</Label>
<Label fx:id="totalLocalProduceCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="100.0" prefHeight="30.0" prefWidth="115.0" text="0">
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="55.0" prefHeight="27.0" prefWidth="149.0" text="Gasoline km/L">
<font>
<Font size="18.0" />
<Font size="14.0" />
</font>
</Label>
<Label fx:id="totalBikeCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="145.0" prefHeight="30.0" prefWidth="115.0" text="0">
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="99.0" prefHeight="27.0" prefWidth="149.0" text="Diesel km">
<font>
<Font size="18.0" />
<Font size="14.0" />
</font>
</Label>
<Label fx:id="totalPublicTransportCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="190.0" prefHeight="30.0" prefWidth="115.0" text="0">
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="143.0" prefHeight="27.0" prefWidth="149.0" text="Diesel km/L">
<font>
<Font size="18.0" />
<Font size="14.0" />
</font>
</Label>
<Label fx:id="totalTemperatureCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="235.0" prefHeight="30.0" prefWidth="115.0" text="0">
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="187.0" prefHeight="27.0" prefWidth="149.0" text="Electric km">
<font>
<Font size="18.0" />
<Font size="14.0" />
</font>
</Label>
<Label fx:id="totalSolarPanelCounter" alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="280.0" prefHeight="30.0" prefWidth="115.0" text="0">
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="231.0" prefHeight="27.0" prefWidth="149.0" text="Electric km/Le">
<font>
<Font size="18.0" />
<Font size="14.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="275.0" prefHeight="27.0" prefWidth="149.0" text="Public transportation">
<font>
<Font size="14.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="319.0" prefHeight="27.0" prefWidth="149.0" text="Airplane">
<font>
<Font size="14.0" />
</font>
</Label>
<Label fx:id="gasolineMiles" layoutX="181.0" layoutY="16.0" styleClass="activityField" text="Label" />
<Label fx:id="gasolineMpg" layoutX="181.0" layoutY="60.0" styleClass="activityField" text="Label" />
<Label fx:id="dieselMiles" layoutX="181.0" layoutY="104.0" styleClass="activityField" text="Label" />
<Label fx:id="dieselMpg" layoutX="181.0" layoutY="148.0" styleClass="activityField" text="Label" />
<Label fx:id="electricMiles" layoutX="181.0" layoutY="192.0" styleClass="activityField" text="Label" />
<Label fx:id="electricMpg" layoutX="181.0" layoutY="236.0" styleClass="activityField" text="Label" />
<Label fx:id="publicTransportation" layoutX="181.0" layoutY="280.0" styleClass="activityField" text="Label" />
<Label fx:id="airPlane" layoutX="181.0" layoutY="324.0" styleClass="activityField" text="Label" />
</children>
</Pane>
</children></AnchorPane>
<AnchorPane fx:id="userPane" layoutX="215.0" layoutY="-1.0" prefHeight="603.0" prefWidth="711.0" visible="false">
<Label alignment="CENTER" layoutX="290.0" layoutY="488.0" prefHeight="32.0" prefWidth="230.0" text="Shopping!" textAlignment="CENTER" textFill="#107222">
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
</Label>
<Pane layoutX="290.0" layoutY="520.0" prefHeight="129.0" prefWidth="230.0" style="-fx-background-color: #f4fff4;">
<children>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="11.0" prefHeight="59.0" prefWidth="115.0" text="Goods &#10;shopping" textAlignment="CENTER">
<font>
<Font size="16.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="75.0" prefHeight="59.0" prefWidth="115.0" text="Services &#10;shopping" textAlignment="CENTER">
<font>
<Font size="16.0" />
</font>
</Label>
<Label fx:id="goodShopping" layoutX="167.0" layoutY="32.0" styleClass="activityField" text="Label" />
<Label fx:id="serviceShopping" layoutX="167.0" layoutY="96.0" styleClass="activityField" text="Label" />
</children>
</Pane>
<Label alignment="CENTER" layoutX="545.0" layoutY="100.0" prefHeight="32.0" prefWidth="255.0" text="Food!" textAlignment="CENTER" textFill="#107222">
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
</Label>
<Pane layoutX="545.0" layoutY="130.0" prefHeight="255.0" prefWidth="255.0" style="-fx-background-color: #f4fff4;">
<children>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="14.0" prefHeight="46.0" prefWidth="115.0" text="Meat fish eggs">
<font>
<Font size="14.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="60.0" prefHeight="46.0" prefWidth="115.0" text="Grains/baked &#10;foods" textAlignment="CENTER">
<font>
<Font size="14.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="106.0" prefHeight="46.0" prefWidth="115.0" text="Dairy">
<font>
<Font size="14.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="152.0" prefHeight="46.0" prefWidth="115.0" text="Fruits vegetables">
<font>
<Font size="14.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="198.0" prefHeight="46.0" prefWidth="115.0" text="Snacks drinks">
<font>
<Font size="14.0" />
</font>
</Label>
<Label fx:id="meat" layoutX="171.0" layoutY="29.0" styleClass="activityField" text="Label" />
<Label fx:id="grains" layoutX="171.0" layoutY="75.0" styleClass="activityField" text="Label" />
<Label fx:id="dairy" layoutX="171.0" layoutY="121.0" styleClass="activityField" text="Label" />
<Label fx:id="fruits" layoutX="171.0" layoutY="167.0" styleClass="activityField" text="Label" />
<Label fx:id="snacks" layoutX="171.0" layoutY="213.0" styleClass="activityField" text="Label" />
</children>
</Pane>
<Label alignment="CENTER" layoutX="545.0" layoutY="385.0" prefHeight="32.0" prefWidth="255.0" text="Extras!" textAlignment="CENTER" textFill="#107222">
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
</Label>
<Pane layoutX="545.0" layoutY="412.0" prefHeight="238.0" prefWidth="255.0" style="-fx-background-color: #f4fff4;">
<children>
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="12.0" layoutY="56.0" prefHeight="27.0" prefWidth="183.0" text="Buying local produce">
<font>
<Font size="14.0" />
</font>
</Label>
<Label fx:id="localProduce" layoutX="189.0" layoutY="56.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="12.0" layoutY="92.0" prefHeight="27.0" prefWidth="183.0" text="Using bike">
<font>
<Font size="14.0" />
</font>
</Label>
<Label fx:id="bike" layoutX="189.0" layoutY="92.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="13.0" layoutY="164.0" prefHeight="27.0" prefWidth="183.0" text="Lowering the temperature">
<font>
<Font size="14.0" />
</font>
</Label>
<Label fx:id="loweringTemp" layoutX="188.0" layoutY="164.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="13.0" layoutY="200.0" prefHeight="27.0" prefWidth="183.0" text="Installing solar panels">
<font>
<Font size="14.0" />
</font>
</Label>
<Label fx:id="solarPanels" layoutX="188.0" layoutY="200.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="13.0" layoutY="128.0" prefHeight="27.0" prefWidth="183.0" text="Using public transport">
<font>
<Font size="14.0" />
</font>
</Label>
<Label fx:id="publicTrans" layoutX="188.0" layoutY="128.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="11.0" layoutY="20.0" prefHeight="27.0" prefWidth="183.0" text="Eating vegetarian meal">
<font>
<Font size="14.0" />
</font>
</Label>
<Label fx:id="veganMeal" layoutX="188.0" layoutY="20.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
</children>
</Pane>
<Button fx:id="addExtraActivityButton2" contentDisplay="RIGHT" layoutX="545.0" layoutY="14.0" mnemonicParsing="false" onAction="#openExtraActivities" style="-fx-background-color: transparent;" text="Add extra activity!" textFill="#147219">
<graphic>
<ImageView fitHeight="69.0" fitWidth="61.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/addActivity1.png" />
</image>
</ImageView>
</graphic>
<font>
<Font name="System Bold Italic" size="14.0" />
</font>
</Button>
</children>
</AnchorPane>
<AnchorPane fx:id="userPane" layoutX="215.0" layoutY="-1.0" prefHeight="703.0" prefWidth="820.0" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="214.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<Text layoutX="94.0" layoutY="72.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Your Profile" AnchorPane.leftAnchor="60.0" AnchorPane.topAnchor="40.0">
<font>
<Font size="30.0" />
</font>
</Text>
<VBox layoutX="517.0" layoutY="28.0" prefHeight="53.0" prefWidth="100.0" style="-fx-background-color: #daefdf; -fx-border-radius: 20%;">
<VBox layoutX="80.0" layoutY="150.0" prefHeight="59.0" prefWidth="266.0" style="-fx-background-color: #daefdf; -fx-border-radius: 20%;">
<children>
<Text fill="#004d11" strokeType="OUTSIDE" strokeWidth="0.0" text="Score" textAlignment="CENTER" wrappingWidth="100.79296875">
<Text fill="#004d11" strokeType="OUTSIDE" strokeWidth="0.0" text="Username" textAlignment="CENTER" wrappingWidth="267.1929016113281">
<font>
<Font size="24.0" />
</font>
</Text>
<Label fx:id="scoreField" alignment="CENTER" contentDisplay="CENTER" prefHeight="17.0" prefWidth="101.0" text="score" textAlignment="CENTER">
<Label fx:id="usernameLabel" alignment="CENTER" contentDisplay="CENTER" layoutX="50.0" prefHeight="27.0" prefWidth="267.0" text="username" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Label>
</children>
</VBox>
<VBox alignment="CENTER" layoutX="80.0" layoutY="250.0" prefHeight="59.0" prefWidth="266.0" style="-fx-background-color: #daefdf; -fx-border-radius: 20%;">
<children>
<Text fill="#004d11" strokeType="OUTSIDE" strokeWidth="0.0" text="Last CO2 footprint" textAlignment="CENTER" wrappingWidth="161.79296875">
<font>
<Font size="24.0" />
</font>
</Text>
<Label fx:id="footprintLabel" alignment="CENTER" contentDisplay="CENTER" prefHeight="41.0" prefWidth="162.0" text="co2 footprint" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" prefHeight="41.0" prefWidth="162.0" text="tons CO2 / year" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Label>
</children>
</VBox>
<VBox alignment="CENTER" layoutX="80.0" layoutY="400.0" prefHeight="59.0" prefWidth="266.0" style="-fx-background-color: #daefdf; -fx-border-radius: 20%;">
<children>
<Text fill="#004d11" strokeType="OUTSIDE" strokeWidth="0.0" text="First CO2 footprint" textAlignment="CENTER" wrappingWidth="161.79296875">
<font>
<Font size="24.0" />
</font>
</Text>
<Label fx:id="firstFootprintLabel" alignment="CENTER" contentDisplay="CENTER" prefHeight="41.0" prefWidth="162.0" text="co2 footprint" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" prefHeight="41.0" prefWidth="162.0" text="tons CO2 / year" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Label>
</children>
</VBox>
<PieChart fx:id="pieChart" layoutX="441.0" layoutY="300.0" prefHeight="352.0" prefWidth="363.0" />
<ImageView fitHeight="163.0" fitWidth="200.0" layoutX="550.0" layoutY="47.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/butterfly.png" />
</image>
</ImageView>
<VBox alignment="CENTER" layoutX="80.0" layoutY="550.0" prefHeight="59.0" prefWidth="266.0" style="-fx-background-color: #daefdf; -fx-border-radius: 20%;">
<children>
<Text fill="#004d11" strokeType="OUTSIDE" strokeWidth="0.0" text="Development" textAlignment="CENTER" wrappingWidth="161.79296875">
<font>
<Font size="24.0" />
</font>
</Text>
<Label fx:id="differenceLabel" alignment="CENTER" contentDisplay="CENTER" prefHeight="27.0" prefWidth="239.0" text="co2 footprint difference" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Label>
<Label alignment="CENTER" contentDisplay="CENTER" prefHeight="41.0" prefWidth="162.0" text="tons CO2 / year" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
@@ -181,22 +411,217 @@
</children>
</VBox>
</children></AnchorPane>
<AnchorPane fx:id="dashboardPane" layoutX="215.0" prefHeight="603.0" prefWidth="711.0">
<AnchorPane fx:id="dashboardPane" layoutX="215.0" prefHeight="703.0" prefWidth="820.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="214.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<HBox layoutX="97.0" layoutY="124.0" prefHeight="100.0" prefWidth="200.0" />
<Label fx:id="welcomebacktext" layoutX="69.0" layoutY="53.0" text="Welcome back user!" AnchorPane.leftAnchor="60.0" AnchorPane.topAnchor="40.0">
<font>
<Font size="30.0" />
</font>
</Label>
<Button layoutX="567.0" layoutY="26.0" mnemonicParsing="false" onAction="#displayActivities" prefHeight="74.0" prefWidth="62.0" style="-fx-border-radius: 20px; -fx-padding: 0px 0px 0px 0px; -fx-background-color: transparent;" textFill="#e0fcdb">
<Text fill="#797676" layoutX="60.0" layoutY="105.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How will you make the world greener today?">
<font>
<Font name="Eras Bold ITC" size="28.0" />
<Font size="15.0" />
</font>
</Text>
<Button fx:id="calculateFootPrintButton" contentDisplay="RIGHT" layoutX="573.0" layoutY="40.0" mnemonicParsing="false" onAction="#openCalculator" prefHeight="74.0" prefWidth="205.0" style="-fx-border-radius: 20px; -fx-padding: 0px 0px 0px 0px; -fx-background-color: transparent;" text="Calculate your &#10;CO2 footprint" textFill="#29721a">
<font>
<Font name="Corbel Bold" size="14.0" />
</font>
<graphic>
<ImageView fitHeight="81.0" fitWidth="74.0" pickOnBounds="true" preserveRatio="true">
<ImageView fitHeight="81.0" fitWidth="64.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../addActivity1.png" />
<Image url="@../icons/co2_2.png" />
<!--image credits:-->
<!--https://www.flaticon.com/authors/vectors-market-->
<!--https://www.flaticon.com-->
<!--http://creativecommons.org/licenses/by/3.0/-->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="addFriendButton" contentDisplay="RIGHT" layoutX="592.0" layoutY="134.0" mnemonicParsing="false" onAction="#openAddFriend" prefHeight="74.0" prefWidth="200.0" style="-fx-border-radius: 20px; -fx-padding: 0px 0px 0px 0px; -fx-background-color: transparent;" text="Add friend" textFill="#29721a">
<font>
<Font name="Corbel Bold" size="14.0" />
</font>
<graphic>
<ImageView fitHeight="74.0" fitWidth="64.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/friend2.png" />
</image>
</ImageView>
</graphic>
</Button>
<TableView fx:id="globalLeaderboard" layoutX="53.0" layoutY="220.0" prefHeight="334.0" prefWidth="207.0">
<columns>
<TableColumn fx:id="globalPlace" prefWidth="30.0" text="#" />
<TableColumn fx:id="globalUser" prefWidth="75.0" text="User" />
<TableColumn fx:id="globalScore" prefWidth="100.0" text="Score" />
</columns>
</TableView>
<Label layoutX="69.0" layoutY="177.0" prefHeight="46.0" prefWidth="187.0" text="Global Leaderboard" textAlignment="CENTER" textFill="#5f1616">
<font>
<Font size="20.0" />
</font>
</Label>
<Label layoutX="279.0" layoutY="177.0" prefHeight="46.0" prefWidth="266.0" text="Development Leaderboard" textAlignment="CENTER" textFill="#5e1515">
<font>
<Font size="20.0" />
</font>
</Label>
<Button fx:id="addExtraActivityButton" contentDisplay="RIGHT" layoutX="568.0" layoutY="223.0" mnemonicParsing="false" onAction="#openExtraActivities" style="-fx-background-color: transparent;" text="Add extra activity" textFill="#147219">
<font>
<Font name="Corbel Bold" size="14.0" />
</font>
<graphic>
<ImageView fitHeight="80.0" fitWidth="79.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/addActivity1.png" />
</image>
</ImageView>
</graphic>
</Button>
<Label fx:id="achiev1text" alignment="CENTER" layoutX="555.0" layoutY="350.0" prefHeight="30.0" prefWidth="250.0" text="ACHIEVEMENTS" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Label>
<GridPane layoutX="539.0" layoutY="380.0" prefHeight="303.0" prefWidth="258.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Button fx:id="achiev1Tip" mnemonicParsing="false" styleClass="toolTipButton">
<graphic>
<ImageView fx:id="achieve1" fitHeight="101.0" fitWidth="129.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/Clover.png" />
<!-- image from pngall.com - 3548 -->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="achiev4Tip" mnemonicParsing="false" styleClass="toolTipButton" GridPane.columnIndex="1">
<graphic>
<ImageView fx:id="achieve4" fitHeight="101.0" fitWidth="129.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/alternate_foods.png" />
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="achiev2Tip" mnemonicParsing="false" styleClass="toolTipButton" GridPane.rowIndex="1">
<graphic>
<ImageView fx:id="achieve2" fitHeight="101.0" fitWidth="129.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/Friendship.png" />
<!-- image from pngall.com - 24498 -->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="achiev3Tip" mnemonicParsing="false" styleClass="toolTipButton" GridPane.rowIndex="2">
<graphic>
<ImageView fx:id="achieve3" fitHeight="101.0" fitWidth="129.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/co2dev.png" />
<!-- image from exceldryer.com -->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="achiev5Tip" mnemonicParsing="false" styleClass="toolTipButton" GridPane.columnIndex="1" GridPane.rowIndex="1">
<graphic>
<ImageView fx:id="achieve5" fitHeight="101.0" fitWidth="129.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/achiev1pic.jpg" />
<!-- image from shutterstock.com - 1038138760 -->
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="achiev6Tip" mnemonicParsing="false" styleClass="toolTipButton" GridPane.columnIndex="1" GridPane.rowIndex="2">
<graphic>
<ImageView fx:id="achieve6" fitHeight="101.0" fitWidth="129.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/solar_panels.jpeg" />
<!-- image from moregreenenergy.com -->
</image>
</ImageView>
</graphic>
</Button>
</children>
</GridPane>
<TableView fx:id="developmentLeaderboard" layoutX="292.0" layoutY="220.0" prefHeight="334.0" prefWidth="207.0">
<columns>
<TableColumn fx:id="developmentPlace" prefWidth="30.0" text="#" />
<TableColumn fx:id="developmentUser" prefWidth="75.0" text="User" />
<TableColumn fx:id="developmentScore" prefWidth="100.0" text="Score" />
</columns>
</TableView>
</children>
</AnchorPane>
<AnchorPane fx:id="friendsPane" layoutX="216.0" prefHeight="703.0" prefWidth="820.0" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="214.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<Text layoutX="94.0" layoutY="72.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Your Friends" AnchorPane.leftAnchor="60.0" AnchorPane.topAnchor="40.0">
<font>
<Font size="30.0" />
</font>
</Text>
<Text layoutX="117.0" layoutY="155.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Friend List">
<font>
<Font size="20.0" />
</font>
</Text>
<TableView fx:id="friendsTable" layoutX="60.0" layoutY="170.0" prefHeight="426.0" prefWidth="214.0" style="-fx-background-color: #e1fcd9;">
<columns>
<TableColumn fx:id="friendsColumn" prefWidth="107.0" text="Friend" />
<TableColumn fx:id="scoreColumn" prefWidth="108.0" text="Score" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
<Text layoutX="315.0" layoutY="155.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Friend Leaderboard">
<font>
<Font size="20.0" />
</font>
</Text>
<TableView fx:id="friendLeaderboard" layoutX="300.0" layoutY="170.0" prefHeight="426.0" prefWidth="232.0" style="-fx-background-color: #e1fcd9;">
<columns>
<TableColumn fx:id="friendPlace" prefWidth="30.0" resizable="false" text="#" />
<TableColumn fx:id="friendUser" minWidth="30.0" prefWidth="100.0" resizable="false" text="Friend" />
<TableColumn fx:id="friendScore" minWidth="30.0" prefWidth="100.0" resizable="false" text="Score" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
<Button fx:id="addFriend" contentDisplay="RIGHT" layoutX="575.0" layoutY="75.0" mnemonicParsing="false" onAction="#openAddFriend" prefHeight="74.0" prefWidth="200.0" style="-fx-border-radius: 20px; -fx-padding: 0px 0px 0px 0px; -fx-background-color: transparent;" text="Add friend" textFill="#29721a">
<font>
<Font name="Corbel Bold" size="14.0" />
</font>
<graphic>
<ImageView fitHeight="74.0" fitWidth="64.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/friend2.png" />
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="removeFriend" contentDisplay="RIGHT" layoutX="560.0" layoutY="150.0" mnemonicParsing="false" onAction="#openRemoveFriend" prefHeight="74.0" prefWidth="200.0" style="-fx-border-radius: 20px; -fx-padding: 0px 0px 0px 0px; -fx-background-color: transparent;" text="Remove friend" textFill="#29721a">
<font>
<Font name="Corbel Bold" size="14.0" />
</font>
<graphic>
<ImageView fitHeight="70.0" fitWidth="60.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/remove_friend.png" />
</image>
</ImageView>
</graphic>

View File

@@ -0,0 +1,262 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.shape.*?>
<?import javafx.scene.text.*?>
<AnchorPane prefHeight="611.0" prefWidth="820.0" stylesheets="@../stylesheets/extraActivitiesStyle.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.ExtraActivityController">
<children>
<AnchorPane fx:id="veganMealPane" layoutX="107.0" prefHeight="611.0" prefWidth="713.0">
<children>
<Line fx:id="line1" endX="79.0" layoutX="465.0" layoutY="7.0" stroke="#545b54" />
<Text layoutX="248.0" layoutY="56.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Eating a vegetarian meal">
<font>
<Font size="20.0" />
</font>
</Text>
<Button fx:id="addVeganMealButton" contentDisplay="TOP" layoutX="267.0" layoutY="226.0" mnemonicParsing="false" onAction="#updateExtraVegan" prefHeight="150.0" prefWidth="180.0" style="-fx-background-color: transparent;" text="Add activity!" textFill="#23652b">
<graphic>
<ImageView fitHeight="116.0" fitWidth="156.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/addActivity1.png" />
</image>
</ImageView>
</graphic>
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
</Button>
</children>
</AnchorPane>
<AnchorPane fx:id="bikePane" layoutX="107.0" prefHeight="611.0" prefWidth="713.0" visible="false">
<children>
<Line fx:id="line2" endX="79.0" layoutX="465.0" layoutY="7.0" stroke="#545b54" />
<Text layoutX="203.0" layoutY="56.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Using your bike instead of your car">
<font>
<Font size="20.0" />
</font>
</Text>
<Slider fx:id="bikeSlider" layoutX="144.0" layoutY="271.0" majorTickUnit="20.0" max="200.0" minorTickCount="0" prefHeight="24.0" prefWidth="427.0" showTickLabels="true" showTickMarks="true" />
<Text fill="#727272" layoutX="179.0" layoutY="144.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How many km did you travel using your bike &#10;that you would have traveled with your car?" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Text>
<Button fx:id="addBikeButton" contentDisplay="TOP" layoutX="267.0" layoutY="351.0" mnemonicParsing="false" onAction="#save" prefHeight="150.0" prefWidth="180.0" style="-fx-background-color: transparent;" text="Add activity!" textFill="#23652b">
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
<graphic>
<ImageView fitHeight="116.0" fitWidth="156.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/addActivity1.png" />
</image>
</ImageView>
</graphic>
</Button>
<HBox alignment="CENTER" layoutX="305.0" layoutY="204.0" prefHeight="36.0" prefWidth="107.0" styleClass="textHolder">
<children>
<Label fx:id="bikeLabel" text="0 km">
<font>
<Font size="17.0" />
</font>
</Label>
</children>
</HBox>
</children>
</AnchorPane>
<AnchorPane fx:id="temperaturePane" layoutX="107.0" prefHeight="611.0" prefWidth="713.0" visible="false">
<children>
<Line fx:id="line3" endX="79.0" layoutX="465.0" layoutY="7.0" stroke="#545b54" />
<Text layoutX="179.0" layoutY="56.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Lowering the temperature of your home">
<font>
<Font size="20.0" />
</font>
</Text>
<Text fill="#727272" layoutX="187.0" layoutY="133.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How many degrees (Celcius) did you lower&#10;your home temperature?" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Text>
<Slider fx:id="temperatureSlider" blockIncrement="1.0" layoutX="176.0" layoutY="266.0" majorTickUnit="1.0" max="15.0" minorTickCount="0" prefHeight="24.0" prefWidth="360.0" showTickLabels="true" showTickMarks="true" />
<HBox alignment="CENTER" layoutX="316.0" layoutY="194.0" prefHeight="36.0" prefWidth="107.0" styleClass="textHolder">
<children>
<Label fx:id="temperatureLabel" text="0 Degrees">
<font>
<Font size="17.0" />
</font>
</Label>
</children>
</HBox>
<Button fx:id="addTemperatureButton" contentDisplay="TOP" layoutX="267.0" layoutY="353.0" mnemonicParsing="false" onAction="#save" prefHeight="150.0" prefWidth="180.0" style="-fx-background-color: transparent;" text="Add activity!" textFill="#23652b">
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
<graphic>
<ImageView fitHeight="116.0" fitWidth="156.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/addActivity1.png" />
</image>
</ImageView>
</graphic>
</Button>
</children>
</AnchorPane>
<AnchorPane fx:id="solarPanelPane" layoutX="107.0" prefHeight="611.0" prefWidth="713.0" visible="false">
<children>
<Line fx:id="line4" endX="79.0" layoutX="465.0" layoutY="7.0" stroke="#545b54" />
<Text layoutX="262.0" layoutY="56.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Installing solar panels">
<font>
<Font size="20.0" />
</font>
</Text>
<Text fill="#727272" layoutX="202.0" layoutY="150.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How many solar panels did you install?" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Text>
<HBox alignment="CENTER" layoutX="329.0" layoutY="201.0" prefHeight="36.0" prefWidth="56.0" styleClass="textHolder">
<children>
<Label fx:id="solarPanelsLabel" text="0">
<font>
<Font size="17.0" />
</font>
</Label>
</children>
</HBox>
<Slider fx:id="solarPanelsSlider" blockIncrement="1.0" layoutX="187.0" layoutY="274.0" majorTickUnit="1.0" max="10.0" min="1.0" minorTickCount="0" prefHeight="24.0" prefWidth="338.0" showTickLabels="true" showTickMarks="true" />
<Button fx:id="addSolarPanelsButton" contentDisplay="TOP" layoutX="267.0" layoutY="378.0" mnemonicParsing="false" onAction="#save" prefHeight="150.0" prefWidth="180.0" style="-fx-background-color: transparent;" text="Add activity!" textFill="#23652b">
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
<graphic>
<ImageView fitHeight="116.0" fitWidth="156.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/addActivity1.png" />
</image>
</ImageView>
</graphic>
</Button>
</children>
</AnchorPane>
<AnchorPane fx:id="localProducePane" layoutX="107.0" prefHeight="611.0" prefWidth="713.0" visible="false">
<children>
<Line fx:id="line11" endX="79.0" layoutX="465.0" layoutY="7.0" stroke="#545b54" />
<Text layoutX="264.0" layoutY="56.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Buying local produce">
<font>
<Font size="20.0" />
</font>
</Text>
<Button fx:id="addLocalProduceButton" contentDisplay="TOP" layoutX="267.0" layoutY="226.0" mnemonicParsing="false" onAction="#updateExtraLocal" prefHeight="150.0" prefWidth="180.0" style="-fx-background-color: transparent;" text="Add activity!" textFill="#23652b">
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
<graphic>
<ImageView fitHeight="116.0" fitWidth="156.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/addActivity1.png" />
</image>
</ImageView>
</graphic>
</Button>
</children>
</AnchorPane>
<AnchorPane fx:id="publicTransportPane" layoutX="107.0" prefHeight="611.0" prefWidth="713.0" visible="false">
<children>
<Line fx:id="line21" endX="79.0" layoutX="465.0" layoutY="7.0" stroke="#545b54" />
<Text layoutX="153.0" layoutY="56.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Using public transport instead of your car">
<font>
<Font size="20.0" />
</font>
</Text>
<Slider fx:id="publicTransportSlider" layoutX="144.0" layoutY="271.0" majorTickUnit="20.0" max="200.0" minorTickCount="0" prefHeight="24.0" prefWidth="427.0" showTickLabels="true" showTickMarks="true" />
<Text fill="#727272" layoutX="151.0" layoutY="145.0" strokeType="OUTSIDE" strokeWidth="0.0" text="How many km did you travel using public transport &#10;that you would have traveled with your car?" textAlignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Text>
<Button fx:id="addPublicTransportButton" contentDisplay="TOP" layoutX="267.0" layoutY="351.0" mnemonicParsing="false" onAction="#save" prefHeight="150.0" prefWidth="180.0" style="-fx-background-color: transparent;" text="Add activity!" textFill="#23652b">
<font>
<Font name="System Bold Italic" size="18.0" />
</font>
<graphic>
<ImageView fitHeight="116.0" fitWidth="156.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/addActivity1.png" />
</image>
</ImageView>
</graphic>
</Button>
<HBox alignment="CENTER" layoutX="305.0" layoutY="204.0" prefHeight="36.0" prefWidth="107.0" styleClass="textHolder">
<children>
<Label fx:id="publicTransportLabel" text="0 km">
<font>
<Font size="17.0" />
</font>
</Label>
</children>
</HBox>
</children>
</AnchorPane>
<AnchorPane prefHeight="611.0" prefWidth="107.0">
<children>
<Button fx:id="displayVeganMealButton" contentDisplay="TOP" layoutX="14.0" layoutY="62.0" mnemonicParsing="false" onAction="#displayVeganMeal" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
<graphic>
<ImageView fitHeight="45.0" fitWidth="45.0" pickOnBounds="true" preserveRatio="true" styleClass="navButton">
<image>
<Image url="@../icons/icons8-vegan-food-100.png" />
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="displayLocalProduceButton" contentDisplay="TOP" layoutX="14.0" layoutY="143.0" mnemonicParsing="false" onAction="#displayLocalProduce" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
<graphic>
<ImageView fitHeight="45.0" fitWidth="45.0" pickOnBounds="true" preserveRatio="true" styleClass="navButton">
<image>
<Image url="@../icons/localProduce.png" />
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="displayBikeButton" contentDisplay="TOP" layoutX="14.0" layoutY="224.0" mnemonicParsing="false" onAction="#displayBike" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
<graphic>
<ImageView fitHeight="45.0" fitWidth="48.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/icons8-bicycle-filled-100.png" />
</image>
</ImageView>
</graphic></Button>
<Button fx:id="displaySolarPanelButton" contentDisplay="TOP" layoutX="14.0" layoutY="467.0" mnemonicParsing="false" onAction="#displaySolarPanel" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
<graphic>
<ImageView fitHeight="45.0" fitWidth="48.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/icons8-solar-panel-filled-100.png" />
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="displayTemperatureButton" contentDisplay="TOP" layoutX="14.0" layoutY="386.0" mnemonicParsing="false" onAction="#displayTemperature" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
<graphic>
<ImageView fitHeight="45.0" fitWidth="48.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/icons8-temperature-inside-64.png" />
</image>
</ImageView>
</graphic>
</Button>
<Button fx:id="displayPublicTransportButton" contentDisplay="TOP" layoutX="14.0" layoutY="305.0" mnemonicParsing="false" onAction="#displayPublicTransport" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
<graphic>
<ImageView fitHeight="45.0" fitWidth="45.0" pickOnBounds="true" preserveRatio="true" styleClass="navButton">
<image>
<Image url="@../icons/publicTransport.png" />
</image>
</ImageView>
</graphic>
</Button>
</children>
</AnchorPane>
</children>
</AnchorPane>

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Some files were not shown because too many files have changed in this diff Show More