#46 DatePicker for sow and harvest day
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
package ch.zhaw.gartenverwaltung;
|
||||
|
||||
import ch.zhaw.gartenverwaltung.types.GrowthPhaseType;
|
||||
import ch.zhaw.gartenverwaltung.types.Plant;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.Initializable;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.stage.Stage;
|
||||
import javafx.util.Callback;
|
||||
|
||||
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;
|
||||
|
||||
@FXML
|
||||
private DatePicker datepicker;
|
||||
|
||||
@FXML
|
||||
private Label popup_label;
|
||||
|
||||
@FXML
|
||||
private Button save_button;
|
||||
|
||||
@FXML
|
||||
private RadioButton sow_radio;
|
||||
|
||||
@FXML
|
||||
void cancel(ActionEvent event) {
|
||||
closeWindow();
|
||||
}
|
||||
|
||||
@FXML
|
||||
void save(ActionEvent event) {
|
||||
//ToDo save plant and sow date to crop/gardenplan model
|
||||
System.out.println(selectedPlant);
|
||||
if (sow_radio.isSelected()) {
|
||||
System.out.println(datepicker.getValue());
|
||||
} else {
|
||||
//ToDo method to get current lifecycle group in plant
|
||||
//ToDo error when
|
||||
//what's up with that group thing in life_cycle we have hardiness zone for that
|
||||
System.out.println(selectedPlant.sowDateFromHarvestDate(datepicker.getValue(), 0));
|
||||
}
|
||||
closeWindow();
|
||||
}
|
||||
|
||||
public void getSelectedPlant(Plant plant) {
|
||||
selectedPlant = plant;
|
||||
popup_label.setText("Select Harvest/Sow Date for" + selectedPlant.name());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(URL location, ResourceBundle resources) {
|
||||
clearDatePickerEntries();
|
||||
|
||||
Callback<DatePicker, DateCell> dayCellFactory= getDayCellFactory();
|
||||
datepicker.setDayCellFactory(dayCellFactory);
|
||||
datepicker.getEditor().setEditable(false);
|
||||
|
||||
enableDisableSaveButton();
|
||||
}
|
||||
|
||||
private void clearDatePickerEntries() {
|
||||
sow_radio.selectedProperty().addListener(new ChangeListener<Boolean>() {
|
||||
@Override
|
||||
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean isNowSelected) {
|
||||
datepicker.getEditor().clear();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Callback<DatePicker, DateCell> getDayCellFactory() {
|
||||
|
||||
final Callback<DatePicker, DateCell> dayCellFactory = new Callback<DatePicker, DateCell>() {
|
||||
|
||||
@Override
|
||||
public DateCell call(final DatePicker datePicker) {
|
||||
return new DateCell() {
|
||||
@Override
|
||||
public void updateItem(LocalDate item, boolean empty) {
|
||||
super.updateItem(item, empty);
|
||||
setDisable(true);
|
||||
setStyle("-fx-background-color: #ffc0cb;");
|
||||
List<LocalDate> dates;
|
||||
LocalDate today = LocalDate.now();
|
||||
if (sow_radio.isSelected()) {
|
||||
dates = selectedPlant.getDateListOfGrowthPhase(GrowthPhaseType.SOW);
|
||||
} else {
|
||||
dates = selectedPlant.getDateListOfGrowthPhase(GrowthPhaseType.HARVEST);
|
||||
}
|
||||
for (LocalDate date : dates) {
|
||||
if (item.getMonth() == date.getMonth()
|
||||
&& item.getDayOfMonth() == date.getDayOfMonth()
|
||||
&& item.compareTo(today) > 0) {
|
||||
setDisable(false);
|
||||
setStyle("-fx-background-color: #32CD32;");
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
return dayCellFactory;
|
||||
}
|
||||
|
||||
private void closeWindow() {
|
||||
Stage stage = (Stage) save_button.getScene().getWindow();
|
||||
stage.close();
|
||||
}
|
||||
|
||||
private void enableDisableSaveButton() {
|
||||
save_button.setDisable(true);
|
||||
datepicker.getEditor().textProperty().addListener(new ChangeListener<String>() {
|
||||
@Override
|
||||
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
||||
if (newValue == null || newValue.equals("")) {
|
||||
save_button.setDisable(true);
|
||||
} else {
|
||||
save_button.setDisable(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user