refactor: converted SelectSowDay popup to proper JFX Dialog

This commit is contained in:
David Guler
2022-11-15 11:03:36 +01:00
parent 2b7cec7e6a
commit 09e582b8a2
4 changed files with 53 additions and 84 deletions
@@ -1,88 +1,55 @@
package ch.zhaw.gartenverwaltung;
import ch.zhaw.gartenverwaltung.bootstrap.Inject;
import ch.zhaw.gartenverwaltung.models.Garden;
import ch.zhaw.gartenverwaltung.io.HardinessZoneNotSetException;
import ch.zhaw.gartenverwaltung.models.PlantNotFoundException;
import ch.zhaw.gartenverwaltung.types.GrowthPhaseType;
import ch.zhaw.gartenverwaltung.types.Plant;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
import javafx.stage.Stage;
import javafx.util.Callback;
import java.io.IOException;
import java.net.URL;
import java.time.LocalDate;
import java.util.List;
import java.util.ResourceBundle;
public class SelectSowDayController implements Initializable {
private Plant selectedPlant = null;
@Inject
private Garden garden;
public class SelectSowDayController {
private Plant selectedPlant;
@FXML
private DatePicker datepicker;
@FXML
private Label popup_label;
@FXML
private Button save_button;
@FXML
private RadioButton harvest_radio;
/**
* close the date selector window
*/
@FXML
void cancel() {
closeWindow();
}
/**
* get sow date from datePicker or calculate sow date from harvest date
* save selected plant and sow date
*/
@FXML
void save() throws HardinessZoneNotSetException, IOException, PlantNotFoundException {
public LocalDate retrieveResult() {
LocalDate sowDate = datepicker.getValue();
if (harvest_radio.isSelected()) {
//ToDo method to get current lifecycle group in plant
sowDate = selectedPlant.sowDateFromHarvestDate(datepicker.getValue(), 0);
}
garden.plantAsCrop(selectedPlant, sowDate);
closeWindow();
return sowDate;
}
/**
* save the plant which will be planted and update label
* Set the {@link Plant} for which a date should be selected.
*
* @param plant Plant
*/
public void setSelectedPlant(Plant plant) {
selectedPlant = plant;
popup_label.setText(String.format("Select Harvest/Sow Date for %s:", selectedPlant.name()));
}
/**
* add listener and set default values
* {@inheritDoc}
* @param location location
* @param resources resources
*/
@Override
public void initialize(URL location, ResourceBundle resources) {
@FXML
public void initialize() {
clearDatePickerEntries();
Callback<DatePicker, DateCell> dayCellFactory= getDayCellFactory();
Callback<DatePicker, DateCell> dayCellFactory = getDayCellFactory();
datepicker.setDayCellFactory(dayCellFactory);
datepicker.setEditable(false);
}
save_button.disableProperty().bind(datepicker.valueProperty().isNull());
public void initSaveButton(Button saveButton) {
saveButton.disableProperty().bind(datepicker.valueProperty().isNull());
}
/**
@@ -126,12 +93,4 @@ public class SelectSowDayController implements Initializable {
}
};
}
/**
* close date picker window
*/
private void closeWindow() {
Stage stage = (Stage) save_button.getScene().getWindow();
stage.close();
}
}