/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package mytime.gui.controller; import com.jfoenix.controls.JFXComboBox; import com.jfoenix.controls.JFXTextArea; import com.jfoenix.controls.JFXTextField; import com.jfoenix.validation.NumberValidator; import com.jfoenix.validation.RequiredFieldValidator; import com.sun.javafx.scene.control.skin.TextAreaSkin; import de.jensd.fx.fontawesome.AwesomeIcon; import de.jensd.fx.fontawesome.Icon; import java.net.URL; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; import javafx.beans.value.ChangeListener; import javafx.collections.FXCollections; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.TextField; import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.VBox; import javafx.scene.paint.Paint; import mytime.be.Group; import mytime.be.Guild; import mytime.be.Person; import mytime.bll.TransactionException; import mytime.gui.model.ManagerModel; import mytime.gui.model.Model; import org.controlsfx.control.CheckComboBox; /** * FXML Controller class * * @author Stefan-VpcEB3J1E */ public class ManagerCreateVolunteerController implements Initializable { @FXML private JFXTextField txtFieldEmail; @FXML private JFXTextField txtFieldPhoneNumber; @FXML private JFXTextArea txtAreaNotes; private ManagerModel mgrModel; @FXML private JFXTextField txtFieldFirstName; @FXML private JFXTextField txtFieldLastName; @FXML private GridPane gridPane; @FXML private BorderPane laugBp; private CheckComboBox<Group> checkComboBox; /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { mgrModel = ManagerModel.getInstance(); //Validators for input NumberValidator validator = new NumberValidator(); validator.setIcon(new Icon(AwesomeIcon.WARNING, "lem", ";", "error")); validator.setMessage("Kun tal fra 0-9 er tilladt"); txtFieldPhoneNumber.getValidators().add(validator); txtFieldPhoneNumber.focusedProperty().addListener((o, oldVal, newVal) -> { if (!newVal) { paintInputs(txtFieldPhoneNumber); } }); RequiredFieldValidator rFV1 = new RequiredFieldValidator(); rFV1.setMessage("Kan ikke være tomt"); rFV1.setIcon(new Icon(AwesomeIcon.WARNING, "1em", ";", "error")); txtFieldFirstName.getValidators().add(rFV1); txtFieldFirstName.focusedProperty().addListener((o, oldVal, newVal) -> { if (!newVal) { paintInputs(txtFieldFirstName); } }); RequiredFieldValidator rFV2 = new RequiredFieldValidator(); rFV2.setMessage("Kan ikke være tomt"); rFV2.setIcon(new Icon(AwesomeIcon.WARNING, "1em", ";", "error")); txtFieldLastName.getValidators().add(rFV2); txtFieldLastName.focusedProperty().addListener((o, oldVal, newVal) -> { if (!newVal) { paintInputs(txtFieldLastName); } }); //ObservableList<Group> groupList = mgrModel.getAllGroups(); // Create the CheckComboBox with the data checkComboBox = new CheckComboBox<Group>(mgrModel.getAllGroups()); // checkComboBox.getCheckModel().getCheckedItems().addListener(new ListChangeListener<Group>() // { // public void onChanged(ListChangeListener.Change<? extends Group> c) // { // //ObservableList<Group> list = checkComboBox.getCheckModel().getCheckedItems(); // // } // }); laugBp.setCenter(checkComboBox); } /** * Sets the unfocuscolor of the textfields * * @param node */ private boolean paintInputs(JFXTextField node) { boolean b = node.validate(); if (b) { node.setUnFocusColor(Paint.valueOf("BLACK")); } else { node.setUnFocusColor(Paint.valueOf("RED")); } return b; } /* Clears the textfields and resets the validations. */ private void clearTxtFields() { txtAreaNotes.clear(); txtFieldEmail.clear(); txtFieldFirstName.clear(); txtFieldPhoneNumber.clear(); txtFieldLastName.clear(); mgrModel.getShowRightPanel().set(false); txtFieldFirstName.resetValidation(); txtFieldPhoneNumber.resetValidation(); txtFieldFirstName.setUnFocusColor(Paint.valueOf("BLACK")); txtFieldPhoneNumber.setUnFocusColor(Paint.valueOf("BLACK")); txtFieldLastName.setUnFocusColor(Paint.valueOf("BLACK")); } /** * Clears and closes the sidepanel. * * @param event */ @FXML private void handleClearAndClose(ActionEvent event) { clearTxtFields(); } /** * Creates a new volunteer * * @param event */ @FXML private void handleCreate(ActionEvent event) { //boolean execute; boolean execute = paintInputs(txtFieldFirstName); boolean execute2 = paintInputs(txtFieldLastName); boolean execute3 = paintInputs(txtFieldPhoneNumber); if (execute && execute2 && execute3) { try { String textAreaText = null; if (!txtAreaNotes.getText().isEmpty()) { textAreaText = txtAreaNotes.getText(); } List<Group> grouplist = checkComboBox.getCheckModel().getCheckedItems(); int[] arrayIds = new int[grouplist.size()]; for (int i = 0; i < grouplist.size(); i++) { arrayIds[i] = grouplist.get(i).getId().get(); } Person person = Model.getInstance().createVolunteer(txtFieldFirstName.getText(), txtFieldLastName.getText(), txtFieldEmail.getText(), txtFieldPhoneNumber.getText(), textAreaText, null, arrayIds); mgrModel.getObjectProperty().set(person); clearTxtFields(); mgrModel.getSnackbarMessage().add("Tilføjede: " + person.getFullName()); } catch (SQLException ex) { Logger.getLogger(ManagerCreateVolunteerController.class .getName()).log(Level.SEVERE, null, ex); } catch (TransactionException ex) { Logger.getLogger(ManagerCreateVolunteerController.class .getName()).log(Level.SEVERE, null, ex); } } } }