Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.59 KB | None | 0 0
  1. package de.hhn.it.pp.javafx.controllers;
  2.  
  3. import java.io.IOException;
  4. import java.net.URL;
  5. import java.time.LocalDate;
  6. import java.time.ZoneId;
  7. import java.util.Date;
  8. import java.util.EventObject;
  9. import java.util.List;
  10. import java.util.ResourceBundle;
  11.  
  12. import javafx.collections.FXCollections;
  13. import javafx.collections.ObservableList;
  14. import javafx.event.ActionEvent;
  15. import de.hhn.it.pp.components.lgs.LinearSystem;
  16. import de.hhn.it.pp.components.reminder.IdGenerator;
  17. import de.hhn.it.pp.components.reminder.Priority;
  18. import de.hhn.it.pp.components.reminder.ReminderImpl;
  19. import de.hhn.it.pp.components.reminder.Task;
  20. import de.hhn.it.pp.javafx.Main;
  21. import javafx.fxml.FXML;
  22. import javafx.fxml.FXMLLoader;
  23. import javafx.fxml.Initializable;
  24. import javafx.scene.Parent;
  25. import javafx.scene.Scene;
  26. import javafx.scene.control.Alert;
  27. import javafx.scene.control.Alert.AlertType;
  28. import javafx.scene.control.Button;
  29. import javafx.scene.control.ComboBox;
  30. import javafx.scene.control.DatePicker;
  31. import javafx.scene.control.Label;
  32. import javafx.scene.control.ListView;
  33. import javafx.scene.control.TextField;
  34. import javafx.scene.layout.BorderPane;
  35. import javafx.stage.Stage;
  36. //import models.TaskModel;
  37. import javafx.scene.Node;
  38.  
  39. import org.slf4j.Logger;
  40. import org.slf4j.LoggerFactory;
  41.  
  42. public class ReminderMainController implements Initializable {
  43.  
  44.     public ObservableList<Task> listTaskData = FXCollections.observableArrayList();
  45.  
  46.     @FXML
  47.     private Button btnDelete;
  48.  
  49.     @FXML
  50.     private Button btnEdit;
  51.  
  52.     @FXML
  53.     public ListView<Task> viewTaskList;
  54.  
  55.     @FXML
  56.     private Label lbReminder;
  57.  
  58.     @FXML
  59.     private Button btnNewTask;
  60.  
  61.     @FXML
  62.     private Label lbDescription;
  63.  
  64.     @FXML
  65.     private Label lbDeadline;
  66.  
  67.     @FXML
  68.     private DatePicker pickerDeadline;
  69.  
  70.     @FXML
  71.     private TextField fldDescription;
  72.  
  73.     @FXML
  74.     private ComboBox<Priority> ddPriority;
  75.  
  76.     @FXML
  77.     private Label lbPriority;
  78.  
  79.     @FXML
  80.     private Label lbTitle;
  81.  
  82.     @FXML
  83.     private Button btnCancel;
  84.  
  85.     @FXML
  86.     private DatePicker pickerReminderDate;
  87.  
  88.     @FXML
  89.     private Button btnSave;
  90.  
  91.     @FXML
  92.     private Label lbReminderDate;
  93.  
  94.     @FXML
  95.     private TextField fldTitle;
  96.  
  97.     @FXML
  98.     private BorderPane BorderPaneCreationWindow;
  99.  
  100.     public Main main;
  101.  
  102.     private ReminderImpl reminder = new ReminderImpl();
  103.  
  104.     public Stage prevStage;
  105.  
  106.     private boolean isMainView;
  107.  
  108.     private static final Logger logger = LoggerFactory.getLogger(ReminderMainController.class);
  109.  
  110.     public void setPrevStage(Stage stage) {
  111.         this.prevStage = stage;
  112.     }
  113.  
  114.     @FXML
  115.     // btnNewTask.setOnAction(new EventHandler<ActionEvent>() {
  116.     // scene.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>()
  117.     // {
  118.     // @Overrite
  119.     public void btnNewTaskClicked(ActionEvent event) throws IOException {
  120.        
  121.         try {
  122.             isMainView=false;
  123.            
  124.             Node node = (Node) event.getSource();
  125.             Stage stage = (Stage) node.getScene().getWindow();
  126.  
  127.             Parent root = FXMLLoader.load(getClass().getResource("/fxml/ReminderTaskCreationWindow.fxml"));
  128.  
  129.             // create a new scene with root and set the stage
  130.             Scene scene = new Scene(root);
  131.             stage.setScene(scene);
  132.             // ddPriority = new ComboBox<>();
  133.             // ddPriority.getItems().addAll(Priority.values());
  134.             stage.show();
  135.         } catch (IOException | RuntimeException e) {
  136.             logger.error("Es ist ein Fehler beim Laden des zweiten Screens aufgetreten: ", e);
  137.         }
  138.  
  139.     }
  140.  
  141.     @FXML
  142.     public void btnEditClicked(ActionEvent event) {
  143.        
  144.         try {
  145.             isMainView=false;
  146.            
  147.             Node node = (Node) event.getSource();
  148.             Stage stage = (Stage) node.getScene().getWindow();
  149.  
  150.             Parent root = FXMLLoader.load(getClass().getResource("/fxml/ReminderTaskCreationWindow.fxml"));
  151.  
  152.             // create a new scene with root and set the stage
  153.             Scene scene = new Scene(root);
  154.             stage.setScene(scene);
  155.             stage.show();
  156.         } catch (IOException | RuntimeException e) {
  157.             logger.error("Es ist ein Fehler beim Laden des zweiten Screens aufgetreten: ", e);
  158.         }
  159.     }
  160.  
  161.     @FXML
  162.     void btnSaveClicked(ActionEvent event) {
  163.  
  164.         LocalDate localDate = pickerDeadline.getValue();
  165.         Date deadline = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
  166.         Date reminderDate = null;
  167.         if (pickerReminderDate.getValue() != null) {
  168.             localDate = pickerReminderDate.getValue();
  169.             reminderDate = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
  170.         }
  171.  
  172.         if (validateReminderDate(reminderDate, deadline)) {
  173.             reminder.createTask(fldTitle.getText(), fldDescription.getText(), deadline, ddPriority.getValue(),
  174.                     reminderDate);
  175.  
  176.             for (Task task : reminder.getAllTasks()) {
  177.                 listTaskData.add(task);
  178.             }
  179.  
  180.             Date today = new Date();
  181.  
  182.             if (reminderDate != null) {
  183.  
  184.                 if (reminderDate.compareTo(today) <= 0) {
  185.                     logger.info("Reminder date is today / overdue");
  186.                     Alert alert = new Alert(AlertType.INFORMATION);
  187.                     alert.setTitle("Reminder");
  188.                     alert.setHeaderText(null);
  189.                     alert.setContentText("Don't forget " + fldTitle.getText() + " on " + deadline + "!");
  190.                     alert.showAndWait();
  191.                 }
  192.             }
  193.             try {
  194.                 isMainView=true;               
  195.  
  196.                 Node node = (Node) event.getSource();
  197.                 Stage stage = (Stage) node.getScene().getWindow();
  198.  
  199.                 Parent root = FXMLLoader.load(getClass().getResource("/fxml/ReminderMainWindow.fxml"));
  200.  
  201.                 // create a new scene with root and set the stage
  202.                 Scene scene = new Scene(root);
  203.                 stage.setScene(scene);
  204.                 stage.show();
  205.  
  206.             } catch (IOException | RuntimeException e) {
  207.                 logger.error("Es ist ein Fehler beim Laden des ersten Screens aufgetreten: ", e);
  208.             }
  209.  
  210.         }
  211.  
  212.     }
  213.  
  214.     public boolean validateReminderDate(Date reminderDate, Date deadline) {
  215.         if (reminderDate != null) {
  216.  
  217.             if (reminderDate.after(deadline)) {
  218.                 Alert alert = new Alert(AlertType.ERROR);
  219.                 alert.setTitle("Cannot Save");
  220.                 alert.setHeaderText(null);
  221.                 alert.setContentText("Reminder Date can't be set after Deadline!");
  222.                 alert.showAndWait();
  223.                 return false;
  224.             } else {
  225.                 return true;
  226.             }
  227.         }
  228.         return true;
  229.     }
  230.  
  231.     @FXML
  232.     public void btnDeleteClicked() {
  233.         try {
  234.             isMainView=true;
  235.            
  236.             Integer taskId = viewTaskList.getSelectionModel().getSelectedItem().getId();
  237.             logger.debug("Selected taskId: " + taskId);
  238.  
  239.             viewTaskList.getItems().remove(viewTaskList.getSelectionModel().getSelectedItem());
  240.             viewTaskList.refresh();
  241.         } catch (NullPointerException e) {
  242.             logger.error("Exception @removeItem: " + e);
  243.         }
  244.     }
  245.  
  246.     @FXML
  247.     void btnCancelClicked(ActionEvent event) {
  248.         try {
  249.             isMainView=true;
  250.            
  251.             Node node = (Node) event.getSource();
  252.             Stage stage = (Stage) node.getScene().getWindow();
  253.  
  254.             Parent root = FXMLLoader.load(getClass().getResource("/fxml/ReminderMainWindow.fxml"));
  255.  
  256.             // create a new scene with root and set the stage
  257.             Scene scene = new Scene(root);
  258.             stage.setScene(scene);
  259.             stage.show();
  260.         } catch (IOException | RuntimeException e) {
  261.             logger.error("Es ist ein Fehler beim Laden des ersten Screens aufgetreten: ", e);
  262.         }
  263.     }
  264.  
  265.     public void setMain(Main main) {
  266.         this.main = main;
  267.     }
  268.  
  269.     @Override
  270.     public void initialize(URL arg0, ResourceBundle arg1) {
  271. //      if(viewTaskList != null) {
  272. //          viewTaskList.setItems(this.listTaskData);
  273. //      // if (viewTaskList == null) {
  274. //      // createDummyData("Arzttermin");
  275. //      // }
  276. //      }
  277.     }
  278.  
  279.     // public void createDummyData(String title) {
  280.     //// reminder.createTask(title, null, new Date(), null, null);
  281.     //// for (Task task : reminder.getAllTasks()) {
  282.     //// listTaskData.add(task);
  283.     //// }
  284.     ////
  285.     //// // either uncomment next if cond. OR write proper method call (check main
  286.     //// // screen...)
  287.     //// if (viewTaskList != null) {
  288.     //// viewTaskList.setItems(listTaskData);
  289.     //// }
  290.     // }
  291.  
  292. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement