Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.65 KB | None | 0 0
  1. package sample;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.sql.SQLException;
  6. import java.util.ArrayList;
  7. import java.util.HashMap;
  8. import java.util.List;
  9. import java.util.Optional;
  10.  
  11. import javax.imageio.ImageIO;
  12.  
  13. import javafx.beans.value.ChangeListener;
  14. import javafx.beans.value.ObservableValue;
  15. import javafx.collections.ObservableList;
  16. import javafx.embed.swing.SwingFXUtils;
  17. import javafx.fxml.FXML;
  18. import javafx.print.PrinterJob;
  19. import javafx.scene.Node;
  20. import javafx.scene.Scene;
  21. import javafx.scene.SnapshotParameters;
  22. import javafx.scene.control.Button;
  23. import javafx.scene.control.ChoiceBox;
  24. import javafx.scene.control.Label;
  25. import javafx.scene.image.WritableImage;
  26. import javafx.scene.layout.*;
  27.  
  28. public class Controller {
  29. private DataBase dataBase;
  30. private Button addButton;
  31. private Button PDFButton;
  32. private ButtonCreationObserver buttonCreationObserver;
  33. private ButtonRemovalObserver buttonRemovalObserver;
  34.  
  35. public ArrayList<RowConstraints> rowsconstraints = new ArrayList<>();
  36. public ArrayList<VBox> vboxes = new ArrayList<>();
  37.  
  38. @FXML
  39. private RowConstraints row0, row1, row2, row3, row4, row5, row6, row7, row8, row9, row10, row11, row12, row13, row14;
  40. @FXML
  41. private VBox vbox0, vbox1, vbox2, vbox3, vbox4, vbox5, vbox6, vbox7, vbox8, vbox9, vbox10, vbox11, vbox12, vbox13, vbox14;
  42.  
  43. public ChoiceBox choicebox;
  44.  
  45. //called when .fxml file is loaded
  46. public void initialize(){
  47.  
  48. for(int i = 0; i < 7; i++) {
  49. for (int j = 0; j < 15; j++) {
  50. Pane pane = new Pane();
  51. Label label = new Label();
  52. //label.setText(i + " " + j);
  53. //pane.getChildren().add(label);
  54. gridPaneDay.add(pane, i, j);
  55. }
  56. }
  57.  
  58. loadNodesToLists();
  59.  
  60. buttonCreationObserver = ButtonCreationObserver.getInstance();
  61. buttonRemovalObserver = ButtonRemovalObserver.getInstance();
  62. addToObserver();
  63. dataBase = new DerbyDataBase();
  64. try {
  65. dataBase.createConnectionToDerby();
  66. //tutaj pobieramy dane z bazy, wypeniamy mapę przycisków, oraz je wyswietlamy na planszy
  67. loadEventsFromDatabase();
  68. } catch (SQLException e) {
  69. e.printStackTrace();
  70. }
  71.  
  72. choicebox.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
  73. @Override
  74. public void changed(ObservableValue<? extends Number> observableValue, Number number, Number number2) {
  75. Scene scene = choicebox.getScene();
  76. String css = String.valueOf(getClass().getResource("../styles/" + choicebox.getItems().get((Integer) number2)));
  77. root.getStylesheets().clear();
  78. root.getStylesheets().add(css);
  79. }
  80. });
  81. }
  82. @FXML
  83. private GridPane gridPaneDay;
  84. private HashMap<Integer, Button> mapOfButtons = new HashMap<>();
  85. private HashMap<Integer, Integer> mapOfLocations = new HashMap<>(); //TO NOWE!!!!!!!!!!!!!!!
  86.  
  87. @FXML
  88. private AnchorPane root;
  89.  
  90.  
  91. private void addToObserver() {
  92. this.buttonCreationObserver.addControllerToObserver(this);
  93. this.buttonRemovalObserver.addControllerToObserver(this);
  94. }
  95.  
  96. public void removeButtonFromGrid(int idEvent) { //TO NOWE!!!!!!!!!!!!!!!
  97. System.out.println(idEvent);
  98. int location = mapOfLocations.get(idEvent);
  99. System.out.println(idEvent + " " + location);
  100. Button buttonToRemove = mapOfButtons.get(idEvent);
  101.  
  102. Pane parent = (Pane) gridPaneDay.getChildren().get(location);
  103.  
  104. parent.getChildren().remove(buttonToRemove);
  105. }
  106.  
  107. public void removeButtonFromDataBase(int idEvent) {
  108. mapOfButtons.remove(idEvent);
  109. try {
  110. this.dataBase.deleteEvent(idEvent);
  111. } catch(SQLException e) {
  112. e.printStackTrace();
  113. }
  114. }
  115.  
  116. public void clickAddButton() {
  117. WindowToCreateEvent windowToCreateEvent = null;
  118. try {
  119. windowToCreateEvent = new WindowToCreateEvent(this.dataBase.getAllUsers());
  120. windowToCreateEvent.createUserInput();
  121. Optional<Event> result = windowToCreateEvent.getInputResult();
  122.  
  123. result.ifPresent(res -> {
  124. if (!res.getMessage().isEmpty()) {
  125. int key = 0;
  126. try {
  127. key = dataBase.addEvent(result.get());
  128. System.out.println(key);
  129. Event event = new Event(key, result.get().getId_user(), result.get().getDay(),
  130. result.get().getHour(),result.get().getMin(), result.get().getMessage());
  131. EventField eventField = new EventField(event);
  132. Button eventButton = eventField.createButtonEvent();
  133. Pane node_result = null;
  134. ObservableList<Node> childrens = gridPaneDay.getChildren();
  135. System.out.println(eventField.getDayId() + " " + eventField.getHour());
  136. int counter = 0;
  137.  
  138. node_result = (Pane) gridPaneDay.getChildren().get(eventField.getDayId() * 15 + eventField.getHour() + 1);
  139. System.out.println(node_result);
  140.  
  141. ObservableList<Node> childrensOfResult = node_result.getChildren();
  142. for(Node childs : childrensOfResult) {
  143. counter++;
  144. }
  145.  
  146. if(counter == 0) {
  147. eventButton.setLayoutY(0);
  148. } else {
  149. eventButton.setLayoutY(counter * 25);
  150. }
  151.  
  152. eventButton.setMaxHeight(20);
  153. if (rowsconstraints.get(eventField.getHour()).getMinHeight() < (1+counter)*25) {
  154. rowsconstraints.get(eventField.getHour()).setMinHeight((1+counter)*25);
  155. vboxes.get(eventField.getHour()).setMinHeight((1+counter)*25);
  156. }
  157. node_result.getChildren().add(eventButton);
  158. mapOfButtons.put(key, eventButton);
  159. int location = eventField.getDayId() * 15 + eventField.getHour()+1; //TO NOWE!!!!!!!!!!!!!!!
  160. System.out.println(key + " " + location); //TO NOWE!!!!!!!!!!!!!!!
  161. mapOfLocations.put(key, location); //TO NOWE!!!!!!!!!!!!!!!
  162. } catch(SQLException e) {
  163. e.printStackTrace();
  164. }
  165. }
  166. });
  167. } catch (SQLException e) {
  168. e.printStackTrace();
  169. }
  170. }
  171.  
  172. public void loadNodesToLists() {
  173. rowsconstraints.add(row0); vboxes.add(vbox0);
  174. rowsconstraints.add(row1); vboxes.add(vbox1);
  175. rowsconstraints.add(row2); vboxes.add(vbox2);
  176. rowsconstraints.add(row3); vboxes.add(vbox3);
  177. rowsconstraints.add(row4); vboxes.add(vbox4);
  178. rowsconstraints.add(row5); vboxes.add(vbox5);
  179. rowsconstraints.add(row6); vboxes.add(vbox6);
  180. rowsconstraints.add(row7); vboxes.add(vbox7);
  181. rowsconstraints.add(row8); vboxes.add(vbox8);
  182. rowsconstraints.add(row9); vboxes.add(vbox9);
  183. rowsconstraints.add(row10); vboxes.add(vbox10);
  184. rowsconstraints.add(row11); vboxes.add(vbox11);
  185. rowsconstraints.add(row12); vboxes.add(vbox12);
  186. rowsconstraints.add(row13); vboxes.add(vbox13);
  187. rowsconstraints.add(row14); vboxes.add(vbox14);
  188. }
  189.  
  190. public void clickEventButton(int idEvent) {
  191. try {
  192. WindowToEditEvent windowToEditEvent = new WindowToEditEvent(dataBase.getEvent(idEvent), this.dataBase.getAllUsers());
  193. windowToEditEvent.createUserInput();
  194. Optional<Event> result = windowToEditEvent.getInputResult();
  195. result.ifPresent(res -> {
  196. if (!res.getMessage().isEmpty()) {
  197. try {
  198. this.removeButtonFromGrid(idEvent);
  199. Event event = new Event(idEvent, result.get().getId_user(), result.get().getDay(),
  200. result.get().getHour(),result.get().getMin(), result.get().getMessage());
  201. dataBase.updateEvent(idEvent, event);
  202. EventField eventField = new EventField(event);
  203. Button eventButton = eventField.createButtonEvent();
  204. gridPaneDay.add(eventButton, eventField.getDayId(), eventField.getHour());
  205. mapOfButtons.put(idEvent, eventButton);
  206. } catch(SQLException e) {
  207. e.printStackTrace();
  208. }
  209. }
  210. });
  211. } catch (SQLException exe) {
  212. exe.printStackTrace();
  213. }
  214. }
  215.  
  216. public void loadEventsFromDatabase() throws SQLException {
  217. List<Event> events = dataBase.getAllEvents();
  218.  
  219. for(Event event: events) {
  220. EventField eventField = new EventField(event);
  221. Button eventButton = eventField.createButtonEvent();
  222. Pane node_result = null;
  223. ObservableList<Node> childrens = gridPaneDay.getChildren();
  224. System.out.println(eventField.getDayId() + " " + eventField.getHour());
  225. int counter = 0;
  226.  
  227. node_result = (Pane) gridPaneDay.getChildren().get(eventField.getDayId() * 15 + eventField.getHour() + 1);
  228. System.out.println(node_result);
  229.  
  230. ObservableList<Node> childrensOfResult = node_result.getChildren();
  231. for(Node childs : childrensOfResult) {
  232. counter++;
  233. }
  234.  
  235. if(counter == 0) {
  236. eventButton.setLayoutY(0);
  237. } else {
  238. eventButton.setLayoutY(counter * 25);
  239. }
  240.  
  241. eventButton.setMaxHeight(20);
  242. if (rowsconstraints.get(eventField.getHour()).getMinHeight() < (1+counter)*25) {
  243. rowsconstraints.get(eventField.getHour()).setMinHeight((1+counter)*25);
  244. vboxes.get(eventField.getHour()).setMinHeight((1+counter)*25);
  245. }
  246.  
  247. node_result.getChildren().add(eventButton);
  248. mapOfButtons.put(eventField.getEventId(), eventButton);
  249. }
  250. }
  251.  
  252. public void clickPDFButton() {
  253.  
  254. // Tutaj zapisuje do png
  255. WritableImage image = root.snapshot(new SnapshotParameters(), null);
  256. File file = new File(".\\Charts.pdf");
  257. try {
  258. ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", file);
  259. } catch (IOException e) {
  260. }
  261.  
  262. // Tutaj drukuje
  263. PrinterJob job = PrinterJob.createPrinterJob();
  264. if (job != null) {
  265. job.showPrintDialog(gridPaneDay.getScene().getWindow());
  266. job.printPage(root);
  267. job.endJob();
  268. }
  269.  
  270. }
  271.  
  272. public void clickAddPersonButton() {
  273. WindowToAddUser windowToAddUser = new WindowToAddUser();
  274. windowToAddUser.createUserInput();
  275. Optional<User> result = windowToAddUser.getInputResult();
  276. //sdfsdfsdfsdfsdf
  277. result.ifPresent(res -> {
  278. if (!res.getName().isEmpty()) {
  279. try {
  280. dataBase.addUser(result.get());
  281. System.out.println(dataBase.getAllUsers());
  282. } catch(SQLException e) {
  283. e.printStackTrace();
  284. }
  285. }
  286. });
  287. }
  288.  
  289.  
  290.  
  291. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement