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