gridAcademicReq.getChildren().clear();
ObservValidateAcademicReq.clear();
for (CoursesBEAN academicRequirementsBEAN : listAcademicReq) {
academicRequirementsBEAN.setVacancyId(VACANCY_ID);
ComboBox<String> cmbProgramLevel = new ComboBox();
cmbProgramLevel.setPromptText("Select Program Level");
ComboBoxJumpToChar.jumpToChar(cmbProgramLevel);
ObservableList<String> listProgramLevel = FXCollections.observableArrayList(RetrieveStaticMasterDAO.getProgramLevels());
cmbProgramLevel.getItems().addAll(listProgramLevel);
ComboBox cmbProgramField = new ComboBox();
cmbProgramField.setPromptText("Select Program Field");
ComboBoxJumpToChar.jumpToChar(cmbProgramField);
ComboBox cmbDuration = new ComboBox(RetrieveStaticMasterDAO.getDuration());
cmbDuration.setPromptText("Select Duration");
ComboBoxJumpToChar.jumpToChar(cmbDuration);
GridPane.setHgrow(cmbProgramLevel, Priority.NEVER);
GridPane.setHgrow(cmbProgramField, Priority.NEVER);
GridPane.setHgrow(cmbDuration, Priority.NEVER);
cmbProgramLevel.setMaxWidth(Double.MAX_VALUE);
cmbProgramField.setMaxWidth(Double.MAX_VALUE);
cmbDuration.setMaxWidth(Double.MAX_VALUE);
Button btnPlus = new Button();
btnPlus.setText(" ");
btnPlus.setPrefWidth(32);
btnPlus.getStyleClass().add("plus-button");
Button btnChildClose = new Button();
btnChildClose.setText(" ");
btnChildClose.setPrefWidth(32);
btnChildClose.getStyleClass().add("close-button");
/* ======================== Validation Support ==================== */
ValidationSupport validationAcademicReqSupport = new ValidationSupport();
validationAcademicReqSupport.registerValidator(cmbProgramLevel, Validator.createEmptyValidator("Program Level Required"));
validationAcademicReqSupport.registerValidator(cmbProgramField, Validator.createEmptyValidator("Program Field Required"));
validationAcademicReqSupport.registerValidator(cmbDuration, Validator.createEmptyValidator("Duration Rquired"));
// validationSupport.registerValidator(txtPhoneNo, (Control c, String newValue)
// -> ValidationResult.fromErrorIf(txtPhoneNo, "Invalid Phone Number", newValue.length() <= 10));
ObservValidateAcademicReq.add(validationAcademicReqSupport);
/* ======================== Program Level Change Event ==================== */
cmbProgramLevel.valueProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
if (newValue != null) {
// cmbServiceLocation.getSelectionModel().selectFirst();
Task< ObservableList> taskLoadState = new Task<ObservableList>() {
@Override
protected ObservableList call() throws Exception {
ObservableList<String> listProgramFields = FXCollections.observableArrayList(RetrieveStaticMasterDAO.getProgramFields(newValue));
return listProgramFields;
}
};
taskLoadState.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
@Override
public void handle(WorkerStateEvent event) {
cmbProgramField.setItems(taskLoadState.getValue());
}
});
taskLoadState.run();
}
}
});
/* ======================== Button Actions ==================== */
btnPlus.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
/* ======================== Validate Support Contacts ==================== */
ValidationResult result = validationAcademicReqSupport.getValidationResult();
for (ValidationMessage msg : result.getMessages()) {
popupMessages.showError(msg.getText(), msg.getTarget());
break;
}
if (!validationAcademicReqSupport.isInvalid()) {
academicRequirementsBEAN.setVacancyId(VACANCY_ID);
if (academicRequirementsBEAN.getRowId() != null) {
vacancyAcademicReqDAO.updateAcademicRequirements(academicRequirementsBEAN);
} else if (VACANCY_ID != null) {
/* ======================== Generate Contact_Id ==================== */
academicRequirementsBEAN.setRowId("ad_" + UiiDGenerator.getUIID8());
boolean done = vacancyAcademicReqDAO.insertAcademicRequirements(academicRequirementsBEAN);
}
CoursesBEAN emptyBEAN = new CoursesBEAN();
listAcademicReq.add(emptyBEAN);
addDynaAcademicRequirementRows();
}
// else {
// popupMessages.showError("All Fields Required In Contact Details!", gridAcademicReq);
// }
gridAcademicReq.requestFocus();
}
});
btnChildClose.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION, "Are you sure want to delete !", ButtonType.YES, ButtonType.CANCEL);
Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
stage.getIcons().add(new Image(INALoginForm.class.getResourceAsStream("images/ia_logo.png")));
stage.initOwner(btnSave.getScene().getWindow());
alert.showAndWait();
if (alert.getResult() == ButtonType.YES) {
if (academicRequirementsBEAN.getRowId() != null) {
vacancyAcademicReqDAO.deleteAcademicRequirements(academicRequirementsBEAN.getRowId());
}
listAcademicReq.remove(academicRequirementsBEAN);
if (listAcademicReq.size() > 0) {
addDynaAcademicRequirementRows();
} else {
CoursesBEAN emptyBEAN = new CoursesBEAN();
listAcademicReq.add(emptyBEAN);
addDynaAcademicRequirementRows();
}
ObservValidateAcademicReq.remove(validationAcademicReqSupport);
gridAcademicReq.requestFocus();
}
}
});
/* ======================== Add All Controls To Grid ==================== */
if (listAcademicReq.indexOf(academicRequirementsBEAN) == 0) {
gridAcademicReq.add(new Label("Program Level"), 0, 0);
gridAcademicReq.add(new Label("Program Field"), 1, 0);
gridAcademicReq.add(new Label("Duration"), 2, 0);
}
Bindings.bindBidirectional(cmbProgramLevel.valueProperty(), academicRequirementsBEAN.levelProperty());
Bindings.bindBidirectional(cmbProgramField.valueProperty(), academicRequirementsBEAN.fieldProperty());
Bindings.bindBidirectional(cmbDuration.valueProperty(), academicRequirementsBEAN.durationProperty());
gridAcademicReq.add(cmbProgramLevel, 0, listAcademicReq.indexOf(academicRequirementsBEAN) + 1);
gridAcademicReq.add(cmbProgramField, 1, listAcademicReq.indexOf(academicRequirementsBEAN) + 1);
gridAcademicReq.add(cmbDuration, 2, listAcademicReq.indexOf(academicRequirementsBEAN) + 1);
HBox hBox = new HBox(5);
hBox.getChildren().addAll(btnPlus, btnChildClose);
hBox.setAlignment(Pos.CENTER_LEFT);
gridAcademicReq.add(hBox, 3, listAcademicReq.indexOf(academicRequirementsBEAN) + 1);
}