refactor: annotation-based dependency-injection

This commit is contained in:
David Guler
2022-11-14 21:15:27 +01:00
parent 15279838b7
commit 5ef3f6c587
9 changed files with 188 additions and 139 deletions
@@ -1,5 +1,8 @@
package ch.zhaw.gartenverwaltung;
import ch.zhaw.gartenverwaltung.bootstrap.AfterInject;
import ch.zhaw.gartenverwaltung.bootstrap.AppLoader;
import ch.zhaw.gartenverwaltung.bootstrap.Inject;
import ch.zhaw.gartenverwaltung.io.PlantList;
import ch.zhaw.gartenverwaltung.models.Garden;
import ch.zhaw.gartenverwaltung.io.HardinessZoneNotSetException;
@@ -28,19 +31,21 @@ import java.util.logging.Logger;
public class MyGardenController {
private static final Logger LOG = Logger.getLogger(MyGardenController.class.getName());
@Inject
AppLoader appLoader;
@Inject
MainFXMLController mainController;
@Inject
private Garden garden;
@Inject
private PlantList plantList;
@FXML
private VBox myPlants_vbox;
@AfterInject
@SuppressWarnings("unused")
public void injectDependencies(Garden garden, PlantList plantList, MainFXMLController mainController) {
this.garden = garden;
this.plantList = plantList;
this.mainController = mainController;
public void init() {
garden.getPlantedCrops().addListener((observable, oldValue, newValue) -> {
try {
createPlantView(newValue);
@@ -96,7 +101,7 @@ public class MyGardenController {
return (event) -> {
try {
Stage stage = new Stage();
if (mainController.loadSceneToStage("CropDetail.fxml", stage) instanceof CropDetailController controller) {
if (appLoader.loadSceneToStage("CropDetail.fxml", stage) instanceof CropDetailController controller) {
controller.setPlantFromCrop(crop);
}
stage.initModality(Modality.APPLICATION_MODAL);