refactor: converted SelectSowDay popup to proper JFX Dialog
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user