/* * 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 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.application.Platform; 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.Button; import javafx.scene.control.ContextMenu; import javafx.scene.control.Menu; import javafx.scene.control.MenuItem; import javafx.scene.control.RadioMenuItem; import javafx.scene.control.Toggle; import javafx.scene.control.ToggleGroup; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import mytime.be.Person; import mytime.bll.SortingStrategyFirstName; import mytime.bll.SortingStrategyLastName; import mytime.bll.Sortings; import mytime.gui.model.ManagerModel; /** * FXML Controller class * * @author Stefan-VpcEB3J1E */ public class ManagerOneVolunteerController implements Initializable { @FXML private Button btnVolunteer; private Person volunteer; private ManagerModel mgrModel; private final ContextMenu test; private Menu menuSort; public ManagerOneVolunteerController() { test = new ContextMenu(); } /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { mgrModel = ManagerModel.getInstance(); setupContextMenu(); //slam btnVolunteer.setOnContextMenuRequested(k -> { Menu m = (Menu) btnVolunteer.getContextMenu().getItems().get(2); if (mgrModel.getCurrentToggleIdx() <= m.getItems().size() - 1) { RadioMenuItem r = (RadioMenuItem) m.getItems().get(mgrModel.getCurrentToggleIdx()); r.setSelected(true); } }); //mgrModel.getClickedVolunteer().bind(observable); } /** * Sets a objectProperty in the managermodel to the clicked volunteer, * this notifies all observers of the objectproperty * @param event */ @FXML private void handleBtnVolunteerClick(ActionEvent event) { //Change masonrypane to volunteer information mgrModel.getClickedVolunteer().set(volunteer); } void setVolunteer(Person volunteer ) { this.volunteer = volunteer; } /** * Creates the context menu. */ private void setupContextMenu() { menuSort = new Menu("Sorter efter:"); Image image2 = new Image("mytime/gui/view/css/Table.png"); // simple displays ImageView the image as is ImageView iv2 = new ImageView(image2); iv2.setPreserveRatio(true); iv2.setSmooth(true); iv2.setCache(true); iv2.setFitHeight(8); iv2.setFitWidth(8); menuSort.setGraphic(iv2); ToggleGroup groupSorts = new ToggleGroup(); RadioMenuItem sortByFirstName = new RadioMenuItem("Fornavn"); sortByFirstName.setOnAction(e -> { mgrModel.applySortingStrategy(new Sortings(new SortingStrategyFirstName()), null); mgrModel.setCurrentToggle(0); mgrModel.reloadVolunteerNodes(); }); RadioMenuItem sortByLastName = new RadioMenuItem("Efternavn"); sortByLastName.setOnAction(e -> { mgrModel.applySortingStrategy(new Sortings(new SortingStrategyLastName()), null); mgrModel.setCurrentToggle(1); mgrModel.reloadVolunteerNodes(); }); sortByFirstName.setToggleGroup(groupSorts); sortByLastName.setToggleGroup(groupSorts); menuSort.getItems().add(sortByFirstName); menuSort.getItems().add(sortByLastName); MenuItem delete = new MenuItem("Slet denne frivillig"); Image image = new Image("mytime/gui/view/css/Delete.png"); // simple displays ImageView the image as is ImageView iv1 = new ImageView(image); iv1.setPreserveRatio(true); iv1.setSmooth(true); iv1.setCache(true); iv1.setFitHeight(8); iv1.setFitWidth(8); delete.setGraphic(iv1); delete.setOnAction(r -> { mgrModel.getAllPersonNodes().stream().parallel().forEach(k -> { Person p = (Person) k.getUserData(); if (p.getId().get() == volunteer.getId().get()) { Platform.runLater(() -> { try { mgrModel.deleteVolunteer(volunteer); } catch (SQLException ex) { Logger.getLogger(ManagerOneVolunteerController.class.getName()).log(Level.SEVERE, null, ex); } mgrModel.getAllPersonNodes().remove(k); mgrModel.getReloadNodes().set(true); mgrModel.showSnackbar("Slettede " + volunteer.getFullName() + " med success!"); }); } }); }); MenuItem edit = new MenuItem("Ret i denne frivillig"); edit.setVisible(false); // edit.setOnAction(o // -> // { // //TODO // }); test.getItems().addAll(delete, edit, menuSort); btnVolunteer.setContextMenu(test); } }