From 7920bdff2821623e4d993bd3a226a990f4f2a7f4 Mon Sep 17 00:00:00 2001 From: giavaphi Date: Sun, 20 Nov 2022 21:10:55 +0100 Subject: [PATCH] new home screen, tutorial fxml file and missing javadoc --- .../CropDetailController.java | 15 ++ .../zhaw/gartenverwaltung/HomeController.java | 46 +++- .../gartenverwaltung/MainFXMLController.java | 30 ++- .../gartenverwaltung/MyGardenController.java | 27 ++- .../SelectSowDayController.java | 9 + .../gartenverwaltung/TutorialController.java | 6 + .../ch/zhaw/gartenverwaltung/Home.fxml | 222 +++++++++++++++--- .../ch/zhaw/gartenverwaltung/Tutorial.fxml | 27 +++ .../zhaw/gartenverwaltung/icons/userIcon.png | Bin 0 -> 26972 bytes 9 files changed, 347 insertions(+), 35 deletions(-) create mode 100644 src/main/java/ch/zhaw/gartenverwaltung/TutorialController.java create mode 100644 src/main/resources/ch/zhaw/gartenverwaltung/Tutorial.fxml create mode 100644 src/main/resources/ch/zhaw/gartenverwaltung/icons/userIcon.png diff --git a/src/main/java/ch/zhaw/gartenverwaltung/CropDetailController.java b/src/main/java/ch/zhaw/gartenverwaltung/CropDetailController.java index 85fb66d..997ac93 100644 --- a/src/main/java/ch/zhaw/gartenverwaltung/CropDetailController.java +++ b/src/main/java/ch/zhaw/gartenverwaltung/CropDetailController.java @@ -81,22 +81,37 @@ public class CropDetailController { } + /** + * close Window + */ @FXML void goBack() { Stage stage = (Stage) imageView.getScene().getWindow(); stage.close(); } + /** + * open dialog to set area + */ @FXML void setArea() { } + /** + * open dialog to set location + */ @FXML void setLocation() { } + /** + * set labels and image from selected {@link Crop} + * set icons for buttons + * @param crop {@link Crop} which will be displayed + * @throws PlantNotFoundException exception + */ public void setPlantFromCrop(Crop crop) throws PlantNotFoundException { this.crop = crop; try { diff --git a/src/main/java/ch/zhaw/gartenverwaltung/HomeController.java b/src/main/java/ch/zhaw/gartenverwaltung/HomeController.java index 7df4661..5c9014c 100644 --- a/src/main/java/ch/zhaw/gartenverwaltung/HomeController.java +++ b/src/main/java/ch/zhaw/gartenverwaltung/HomeController.java @@ -1,5 +1,47 @@ package ch.zhaw.gartenverwaltung; -public class HomeController -{ +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; + +import java.net.URL; +import java.util.ResourceBundle; + +public class HomeController implements Initializable { + + @FXML + private ImageView imageViewDavid; + + @FXML + private ImageView imageViewElias; + + @FXML + private ImageView imageViewGian; + + @FXML + private ImageView imageViewPhilippe; + + @FXML + private ImageView imageViewRoman; + + @Override + public void initialize(URL location, ResourceBundle resources) { + setImages(imageViewDavid, ""); + setImages(imageViewElias, ""); + setImages(imageViewGian, ""); + setImages(imageViewRoman, ""); + setImages(imageViewPhilippe, ""); + } + + private void setImages(ImageView imageView, String photoName) { + Image img; + if (photoName.equals("")) { + img = new Image(String.valueOf(getClass().getResource("icons/userIcon.png"))); + } else { + img = new Image(String.valueOf(getClass().getResource("icons/" + photoName))); + } + imageView.setImage(img); + } } + diff --git a/src/main/java/ch/zhaw/gartenverwaltung/MainFXMLController.java b/src/main/java/ch/zhaw/gartenverwaltung/MainFXMLController.java index 6970451..2cc05d3 100644 --- a/src/main/java/ch/zhaw/gartenverwaltung/MainFXMLController.java +++ b/src/main/java/ch/zhaw/gartenverwaltung/MainFXMLController.java @@ -4,7 +4,6 @@ import ch.zhaw.gartenverwaltung.bootstrap.AfterInject; import ch.zhaw.gartenverwaltung.bootstrap.AppLoader; import ch.zhaw.gartenverwaltung.bootstrap.ChangeViewEvent; import ch.zhaw.gartenverwaltung.bootstrap.Inject; -import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.scene.control.*; @@ -41,26 +40,39 @@ public class MainFXMLController { @FXML private Button tutorial_button; + /** + * go to home pane + */ @FXML void goToHome() { showPaneAsMainView("Home.fxml"); styleChangeButton(home_button); } + /** + * go to my garden pane + */ @FXML void goToMyPlants() { showPaneAsMainView("MyGarden.fxml"); styleChangeButton(myGarden_button); } + /** + * go to the schedule pane + */ @FXML void goToMySchedule() { showPaneAsMainView("MySchedule.fxml"); styleChangeButton(mySchedule_button); } + /** + * open dialog of the settings + * @throws IOException exception + */ @FXML - public void openSettings(ActionEvent actionEvent) throws IOException { + public void openSettings() throws IOException { Dialog dialog = new Dialog<>(); dialog.setTitle("Settings"); dialog.setHeaderText("Settings"); @@ -82,8 +94,11 @@ public class MainFXMLController { } } - public void goToTutorial(ActionEvent actionEvent) { - //showPaneAsMainView("Tutorial.fxml"); + /** + * go to Tutorial pane + */ + public void goToTutorial() { + showPaneAsMainView("Tutorial.fxml"); styleChangeButton(tutorial_button); } @@ -109,10 +124,15 @@ public class MainFXMLController { private final EventHandler changeMainViewHandler = (ChangeViewEvent event) -> showPaneAsMainView(event.view()); + /** + * preload all menu bar panes + * @throws IOException exception + */ private void preloadPanes() throws IOException { appLoader.loadAndCacheFxml("MyGarden.fxml"); appLoader.loadAndCacheFxml("MySchedule.fxml"); appLoader.loadAndCacheFxml("Plants.fxml"); + appLoader.loadAndCacheFxml("Tutorial.fxml"); } private void styleChangeButton(Button button) { @@ -142,7 +162,7 @@ public class MainFXMLController { } /** - * adds icon to button + * adds icon to given button * @param button the button which get the icon * @param iconFileName file name of icon */ diff --git a/src/main/java/ch/zhaw/gartenverwaltung/MyGardenController.java b/src/main/java/ch/zhaw/gartenverwaltung/MyGardenController.java index 3de534f..d7efaf4 100644 --- a/src/main/java/ch/zhaw/gartenverwaltung/MyGardenController.java +++ b/src/main/java/ch/zhaw/gartenverwaltung/MyGardenController.java @@ -47,6 +47,11 @@ public class MyGardenController { @FXML private Button addPlant_button; + /** + * initialize crop list + * add listener for crop list + * set icon for button + */ @AfterInject @SuppressWarnings("unused") public void init() { @@ -65,6 +70,9 @@ public class MyGardenController { setIconToButton(addPlant_button, "addIcon.png"); } + /** + * redirect to plant fxml file + */ @FXML void addPlant() { myGardenRoot.fireEvent(new ChangeViewEvent(ChangeViewEvent.CHANGE_MAIN_VIEW, "Plants.fxml")); @@ -119,6 +127,11 @@ public class MyGardenController { button.setGraphic(imageView); } + /** + * open detail window of the selected {@link Crop} + * @param crop {@link Crop} which is selected + * @return {@link EventHandler} for button + */ private EventHandler getGoToCropDetailEvent(Crop crop) { return (event) -> { try { @@ -136,6 +149,11 @@ public class MyGardenController { }; } + /** + * open alert for deleting the selected {@link Crop} + * @param crop {@link Crop} which is selected + * @return {@link EventHandler} for button + */ private EventHandler getDeleteCropEvent(Crop crop) { return (event) -> { try { @@ -146,9 +164,16 @@ public class MyGardenController { }; } + /** + * Alert to confirm that the crop can be deleted. + * @param crop {@link Crop} which is selected + * @throws IOException exception + * @throws HardinessZoneNotSetException exception + */ private void showConfirmation(Crop crop) throws IOException, HardinessZoneNotSetException { + Plant plant = plantList.getPlantById(Settings.getInstance().getCurrentHardinessZone(), crop.getPlantId()).get(); Alert alert = new Alert(Alert.AlertType.CONFIRMATION); - alert.setTitle("Delete Crop"); + alert.setTitle("Delete" + plant.name()); alert.setHeaderText("Are you sure want to delete this Crop?"); alert.setContentText("Deleting this crop will remove all associated tasks from your schedule."); diff --git a/src/main/java/ch/zhaw/gartenverwaltung/SelectSowDayController.java b/src/main/java/ch/zhaw/gartenverwaltung/SelectSowDayController.java index e3722fc..c6ff944 100644 --- a/src/main/java/ch/zhaw/gartenverwaltung/SelectSowDayController.java +++ b/src/main/java/ch/zhaw/gartenverwaltung/SelectSowDayController.java @@ -21,6 +21,11 @@ public class SelectSowDayController { @FXML public ToggleGroup phase_group; + /** + * if sow date radio button was selected return sow date + * if sow date was not selected get sow from harvest day and return sow date + * @return {@link LocalDate} of the sow date + */ public LocalDate retrieveResult() { LocalDate sowDate = datepicker.getValue(); if (harvest_radio.isSelected()) { @@ -53,6 +58,10 @@ public class SelectSowDayController { harvest_radio.setUserData(GrowthPhaseType.HARVEST); } + /** + * Disable save button when date picker is empty + * @param saveButton {@link Button} to be disabled + */ public void initSaveButton(Button saveButton) { saveButton.disableProperty().bind(datepicker.valueProperty().isNull()); } diff --git a/src/main/java/ch/zhaw/gartenverwaltung/TutorialController.java b/src/main/java/ch/zhaw/gartenverwaltung/TutorialController.java new file mode 100644 index 0000000..aa02930 --- /dev/null +++ b/src/main/java/ch/zhaw/gartenverwaltung/TutorialController.java @@ -0,0 +1,6 @@ +package ch.zhaw.gartenverwaltung; + + +public class TutorialController { + +} diff --git a/src/main/resources/ch/zhaw/gartenverwaltung/Home.fxml b/src/main/resources/ch/zhaw/gartenverwaltung/Home.fxml index c159ce4..35065d8 100644 --- a/src/main/resources/ch/zhaw/gartenverwaltung/Home.fxml +++ b/src/main/resources/ch/zhaw/gartenverwaltung/Home.fxml @@ -2,42 +2,210 @@ + + + - - + - - - - - - - - - - + + + + + + diff --git a/src/main/resources/ch/zhaw/gartenverwaltung/Tutorial.fxml b/src/main/resources/ch/zhaw/gartenverwaltung/Tutorial.fxml new file mode 100644 index 0000000..f86ce0b --- /dev/null +++ b/src/main/resources/ch/zhaw/gartenverwaltung/Tutorial.fxml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/ch/zhaw/gartenverwaltung/icons/userIcon.png b/src/main/resources/ch/zhaw/gartenverwaltung/icons/userIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..f1feb14b502596c4cc53ca0bb702f84debaff5d3 GIT binary patch literal 26972 zcmbTecRZKx`#x?IDqAFbrC~&c?2%bnEh{_9mh7zvsjQ4hW=4u6WLIV>S&+Zon7*OI`MBne#C0<*00Y`Qd&uZ$J*|Y)4UNjt@$kLHoborIr%?1 zpOw$!D|7u(PoGj7SGZ0+d-m*G+3VNzwsv;urKL>DJanf{ol>}Xk>SmoH-XALL8YbQ zL_|LqJ>OXuD=I1yKYH{?K}BWvrOTHU&zvD8d{j-1{CR%96Mit@>gE=rEw{dFd3pIn zsnZb0#QZ#soSfWTcX#)<;L2Uxd6v<_MCp-n(b4AY2M^}io0+D z)6>h*yLy!px5O2#F7<|=I+T=*jLgi!g2dL=_Uo}@$AqbwMTlHoUFkVxJflwetk^rd zx%uJFSf$^H1ZPnkrsccUnkql!(O>GoLQPF=+R)fYlKjQJu%MvZb7OhRRE_HVUkeM- zlP5{#QUmg}Q{_rL<_D>0_Uy@HKXs#xs^c&BvYa!C;(a}R{qI|o?U_&G;^I16pGcBY zQBk?$_nUX`l65@O2vOi7VrNge!pIo+#JuiqP)5ecU^v5Jld_VMFMP(VN=|neC@iw> z-@mULO2f(Fva`K493CEiyRlIbDeG2pnO`0@% zLfY~P-|xJ+cJpOlpW*7o94#t4dwWU^b#*fd35i(Y2)g}@jOnJe{`A5Ll@85O+(p^h z*<~aoBnufbJk*D2l|OgpXj85H{?R}8G4^n$i;K%$e2r0l5nbWY+6VXU?R{HOam7eq zzn&uGL-k4P&u^V>+|XC85bly3-gR4QV7w*4hh5tJv%vA=^ASF)zaJ;W4R6n%VP;{u z{qp5pW?*2T>*2#We@#qGBs6-0X_YP!b!=g&(nu1f10oKr&S7zcK1VcS)9 z@7ndqvAI9#c3z&;egErA zGR@za9__5OGzDL^a4(-VUpaj4czfdmR+^O4H^{-FM3r#C2wxoTjcU3103|#$PV%KxExVYGIb+$LNv#U$Ff^V4)Cx}Z# zFK`L4*jLCR#x1p6e!X? z=olHFt&S&{X7AlaG9rC~vX^2Pi7n1Y-oKT(PSRjn?^t}YBrGg!57JI!=jFs&tDoJUoJF6BGZEhNVkEEQ_%zpf(5$2S)B z{Q0rP6k65N%;(R~?j|SaG%U40=)aqe+sk8T+b{Cy#cV#L9r~elvoYSid-rw)?_r?7 z<>Dek#LbsFGCKOBDU#DP$dsa9T^fBAv^ZzeTC@Azvy8GM%xr zn;GJXR#%q@xhW_ll;3p!;K}VK&VZ^`>tZ8~o;#E84;d3>sGU2vZ)bD;Px6%)`gAd= zsoE868IR)P6irPz_wV2Td}eyug^i8vU3)v-r%#_OIAy(Ehgw^yXJ=>M4GwZ3#VcOE z%-Hqqo1%us6fqGhMXZ~#F?*OYPi}5*V5P^rl9m?r*w|QLT-;@eTetq0Ble+DBSJ0lRc2P=7s{Y^0OrHIF^Kg{sI;OSj**tggT(8-f7AU(l(Q53o@H1#Y?t8wOB9G*)>2<@C(V@b4d$pHx&-RI&fDgdhDG zX^8Mfj@(2=?ig=x{PgL0`_NGB4pNX)Y{72sWtMaCf{V0!LoUAyG)?KCj%>>O{P}Yd zzxLBj=k^ShefjzM#?Sh^c76Nyt-JuKd3brMlhe@9P<(OScVtUbEm+C?TZT%+g87-? z#9uw80dq66vsbApzw4@>#FITrNYHCXIK?00=U<6)EELtoKOIU-OS3{+R`K@suK#D+ zH#J!8vyQVl<}b^`ck;r83o^cbegc8S(iAogeSJwuC#=qHR(bu|L^Z$vY{2Tip0TmR zX6nvnlha6j_#*D

o#H;~-Mvc$y1%C(ZkH65Rdc-*>`882+i5-{C$ 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 UC6n2Sk4qvM9y+4?NZUT-e^g%J-T(jq literal 0 HcmV?d00001