/* * 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.JFXButton; import com.jfoenix.controls.JFXTextArea; import com.jfoenix.controls.JFXTextField; import java.io.IOException; import java.net.URL; import java.sql.SQLException; import java.util.List; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; import javafx.beans.property.BooleanProperty; import static javafx.beans.property.BooleanProperty.booleanProperty; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.FlowPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; import javafx.scene.paint.Paint; import mytime.be.Group; import mytime.be.Person; import mytime.gui.model.ManagerModel; import mytime.gui.model.Model; /** * FXML Controller class * * @author Bruger */ public class ManagerOneVolunteerInformationController implements Initializable { @FXML private ImageView imageView; @FXML private JFXButton editButton; @FXML private JFXButton saveButton; @FXML private JFXTextField txtFieldName; @FXML private JFXTextField txtFieldEmail; @FXML private JFXTextField txtFieldPhone; @FXML private JFXTextArea txtFAreaield; private ManagerModel mgrModel; private Person currentPerson; private boolean bound; @FXML private GridPane gridpane; @FXML private GridPane gridPaneInfo; @FXML private Pane panePicture; @FXML private Pane paneBg; private BooleanProperty editMode; @FXML private JFXButton btnGoBack; @FXML private FlowPane flowPaneGuilds; //private JFXTextField txtFieldLastName; /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { //editMode = false; gridpane.setStyle("-fx-background-color: rgb(234, 234, 234);"); gridPaneInfo.setStyle("-fx-background-color: rgb(234, 234, 234);"); panePicture.setStyle("-fx-background-color: rgb(102, 102, 255);"); //paneBg.setStyle("-fx-background-color: rgb(102, 102, 255);"); paneBg.setStyle("-fx-background-color: rgb(250, 250, 250);"); // txtFAreaield.setStyle("-text-area-background: rgb(255, 255, 255);"); //txtFAreaield.setDisable(false); // TODO mgrModel = ManagerModel.getInstance(); // Person person = (Person)mgrModel.getClickedVolunteer().get(); mgrModel.getClickedVolunteer().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Object oldValue, Object newValue) { currentPerson = (Person) newValue; if (newValue != null) { updateLabels(); } } }); editMode = new SimpleBooleanProperty(); txtFieldName.editableProperty().bind(editMode); txtFieldEmail.editableProperty().bind(editMode); txtFieldPhone.editableProperty().bind(editMode); txtFAreaield.editableProperty().bind(editMode); editButton.setStyle("-fx-background-color: rgb(197, 197, 197);"); saveButton.setStyle("-fx-background-color: rgb(197, 197, 197);"); btnGoBack.setStyle("-fx-background-color: rgb(197, 197, 197);"); } /** * Update the labels to the information of the newly clicked volunteer */ private void updateLabels() { imageView.setImage(new Image(currentPerson.getProfilePicture().get())); txtFieldName.setText(currentPerson.getFullName()); txtFieldEmail.setText(currentPerson.getEmail().get()); txtFieldPhone.setText(currentPerson.getPhonenumber().get()); txtFAreaield.setText(currentPerson.getDescription().get()); try { List<Group> groupList = Model.getInstance().getAllGroupsForPerson(currentPerson.getId().get()); for (Group group : groupList) { flowPaneGuilds.getChildren().add(loadGroupNode(group)); } } catch (SQLException ex) { Logger.getLogger(ManagerOneVolunteerInformationController.class.getName()).log(Level.SEVERE, null, ex); } // txtFieldName.textProperty().bind(currentPerson.getFullName()); // txtFieldEmail.textProperty().bind(currentPerson.getEmail()); // txtFieldPhone.textProperty().bind(currentPerson.getPhonenumber()); } private Node loadGroupNode(Group group) { try { FXMLLoader loader = new FXMLLoader(getClass().getResource("/mytime/gui/view/OneGuildBar.fxml")); Node node = loader.load(); OneGuildBarController controller = loader.getController(); controller.setGroup(group); return node; } catch (IOException ex) { Logger.getLogger(ManagerOneVolunteerInformationController.class.getName()).log(Level.SEVERE, null, ex); return null; } } /** * Return to the masonrypane * * @param event */ @FXML private void handleGoBack(ActionEvent event) { flowPaneGuilds.getChildren().clear(); editMode.set(false); editButton.setStyle("-fx-background-color: rgb(197, 197, 197);"); ManagerModel.getInstance().getClickedVolunteer().set(null); } /** * Toggle between being able to edit the information of the current * volunteer * * @param event */ @FXML private void handleEditInfo(ActionEvent event) { if (editMode.get()) { editMode.set(false); editButton.setStyle("-fx-background-color: rgb(197, 197, 197);"); } else { editMode.set(true); editButton.setStyle("-fx-background-color: rgb(150, 150, 150);"); } } /** * Saves the info of the textfields to database * * @param event */ @FXML private void handleSaveInfo(ActionEvent event) { currentPerson.setEmail(txtFieldEmail.getText()); currentPerson.setPhonenumber(txtFieldPhone.getText()); currentPerson.setDescription(txtFAreaield.getText()); String fullName = txtFieldName.getText(); String firstName = ""; String lastName = ""; if (fullName.contains(" ")) { firstName = fullName.substring(0, fullName.indexOf(" ")); lastName = fullName.substring(fullName.indexOf(" ") + 1); } else { firstName = fullName; } currentPerson.setFirstName(firstName); currentPerson.setLastName(lastName); List<Node> personNodes = mgrModel.getAllPersonNodes(); for (Node personNode : personNodes) { Person person = (Person) personNode.getUserData(); if (person.getId().get() == currentPerson.getId().get()) { personNode.setUserData(currentPerson); Button button = (Button) personNode; StackPane stackPane = (StackPane) button.getGraphic(); List<Node> stackChilren = stackPane.getChildren(); for (Node node : stackChilren) { if (node.getClass().getName().equals(HBox.class.getName())) { HBox hbox = (HBox) node; List<Node> childredn = hbox.getChildren(); for (Node node1 : childredn) { if (node1.getClass().getName().equals(Label.class.getName())) { Label label = (Label) node1; label.setText(firstName + "\n" + lastName); } } } } } } try { Model.getInstance().updatePerson(currentPerson); } catch (SQLException ex) { Logger.getLogger(ManagerOneVolunteerInformationController.class.getName()).log(Level.SEVERE, null, ex); } } /** * Sets the current person * * @param currentPerson */ public void setCurrentPerson(Person currentPerson) { this.currentPerson = currentPerson; } }