/*
* 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);
}
}
}
}