GUIController.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616
  1. package de.tu_darmstadt.informatik.tk.scopviz.ui;
  2. import java.net.URL;
  3. import java.util.ArrayList;
  4. import java.util.ResourceBundle;
  5. import javax.swing.event.MouseInputListener;
  6. import org.jxmapviewer.JXMapViewer;
  7. import org.jxmapviewer.input.CenterMapListener;
  8. import org.jxmapviewer.input.PanMouseInputListener;
  9. import org.jxmapviewer.input.ZoomMouseWheelListenerCursor;
  10. import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
  11. import de.tu_darmstadt.informatik.tk.scopviz.ui.handlers.KeyboardShortcuts;
  12. import de.tu_darmstadt.informatik.tk.scopviz.ui.handlers.ResizeListener;
  13. import de.tu_darmstadt.informatik.tk.scopviz.ui.mapView.MapViewFunctions;
  14. import de.tu_darmstadt.informatik.tk.scopviz.ui.mapView.WorldView;
  15. import javafx.application.Platform;
  16. import javafx.beans.value.ChangeListener;
  17. import javafx.beans.value.ObservableValue;
  18. import javafx.embed.swing.SwingNode;
  19. import javafx.fxml.FXML;
  20. import javafx.fxml.Initializable;
  21. import javafx.scene.control.Button;
  22. import javafx.scene.control.CheckBox;
  23. import javafx.scene.control.ComboBox;
  24. import javafx.scene.control.Label;
  25. import javafx.scene.control.MenuItem;
  26. import javafx.scene.control.ScrollPane;
  27. import javafx.scene.control.TableColumn;
  28. import javafx.scene.control.TableRow;
  29. import javafx.scene.control.TableView;
  30. import javafx.scene.control.Tooltip;
  31. import javafx.scene.control.cell.CheckBoxTableCell;
  32. import javafx.scene.control.cell.PropertyValueFactory;
  33. import javafx.scene.control.cell.TextFieldTableCell;
  34. import javafx.scene.layout.AnchorPane;
  35. import javafx.scene.layout.Pane;
  36. import javafx.scene.layout.StackPane;
  37. import javafx.scene.layout.VBox;
  38. import javafx.scene.text.TextFlow;
  39. import javafx.util.Pair;
  40. /**
  41. * Controller class for the various GUI elements, gets instanced and initialized
  42. * by the FXML loading process. Can access GUI elements specified in the FXML
  43. * file through matching variable name here and id attribute in the FXML,
  44. *
  45. * @author Dominik Renkel, Jan Enders
  46. * @version 1.1
  47. *
  48. */
  49. public class GUIController implements Initializable {
  50. // The SwingNode and its containing Pane that house the graph viewer
  51. @FXML
  52. public SwingNode swingNode;
  53. @FXML
  54. public SwingNode swingNodeWorldView;
  55. @FXML
  56. public Pane pane;
  57. @FXML
  58. public StackPane stackPane;
  59. // The buttons present in the UI
  60. @FXML
  61. public Button zoomIn;
  62. @FXML
  63. public Button zoomOut;
  64. @FXML
  65. public Button centerMap;
  66. @FXML
  67. public Button defaultMapView;
  68. @FXML
  69. public Button roadMapView;
  70. @FXML
  71. public Button satelliteMapView;
  72. @FXML
  73. public Button hybridMapView;
  74. @FXML
  75. public Button previousWaypoint;
  76. @FXML
  77. public Button nextWaypoint;
  78. @FXML
  79. public Button underlayButton;
  80. @FXML
  81. public Button operatorButton;
  82. @FXML
  83. public Button mappingButton;
  84. @FXML
  85. public Button symbolRepButton;
  86. // The Toolbar Items
  87. @FXML
  88. public MenuItem newItem;
  89. @FXML
  90. public MenuItem open;
  91. @FXML
  92. public MenuItem add;
  93. @FXML
  94. public MenuItem save;
  95. @FXML
  96. public MenuItem saveAs;
  97. @FXML
  98. public MenuItem preferences;
  99. @FXML
  100. public MenuItem quit;
  101. @FXML
  102. public MenuItem delete;
  103. @FXML
  104. public MenuItem undelete;
  105. @FXML
  106. public MenuItem operators;
  107. @FXML
  108. public MenuItem resetMapping;
  109. @FXML
  110. public MenuItem updateMetricMI;
  111. @FXML
  112. public MenuItem about;
  113. // The contents of the corresponding ScrollPanes
  114. @FXML
  115. public TableView<Pair<Object, String>> toolbox;
  116. @FXML
  117. public TableView<KeyValuePair> properties;
  118. @FXML
  119. public TableView<MetricRowData> metricbox;
  120. // The columns of the toolbox
  121. @FXML
  122. public TableColumn<Pair<Object, String>, String> toolboxStringColumn;
  123. @FXML
  124. public TableColumn<Pair<Object, String>, Object> toolboxObjectColumn;
  125. // The columns of the Properties pane
  126. // TODO: Fix Generic type arguments for propertiesObjectColumn
  127. @FXML
  128. public TableColumn<KeyValuePair, String> propertiesStringColumn;
  129. @FXML
  130. public TableColumn propertiesObjectColumn;
  131. @FXML
  132. public TableColumn<KeyValuePair, String> propertiesTypeColumn;
  133. // The columns of the metricbox
  134. @FXML
  135. public TableColumn<MetricRowData, String> metricBoxMetricColumn;
  136. @FXML
  137. public TableColumn<MetricRowData, String> metricBoxValueColumn;
  138. @FXML
  139. public TableColumn metricBoxUpdateColumn;
  140. @FXML
  141. public Button updateMetricButton;
  142. @FXML
  143. public Button resetMappingButton;
  144. // The items of the top left box in the symbol visualization layer
  145. @FXML
  146. public VBox symbolToolVBox;
  147. @FXML
  148. public CheckBox edgesVisibleCheckbox;
  149. @FXML
  150. public CheckBox nodeLabelCheckbox;
  151. @FXML
  152. public CheckBox edgeWeightCheckbox;
  153. @FXML
  154. public VBox leftSide;
  155. @FXML
  156. public VBox rightSide;
  157. @FXML
  158. public ComboBox<String> opGraphSelectionBox;
  159. // The elements needed for the console window
  160. @FXML
  161. public ScrollPane consoleScrollPane;
  162. @FXML
  163. public TextFlow consoleWindow;
  164. // The anchorpane of the top left box (toolbox, symbol visualization layer
  165. // box)
  166. @FXML
  167. public AnchorPane topLeftAPane;
  168. // The anchorpane of the metric update button
  169. @FXML
  170. public AnchorPane updateButtonAPane;
  171. // The anchorpane of the reset mapping button
  172. @FXML
  173. public AnchorPane resetMappingButtonAPane;
  174. /**
  175. * Initializes all the references to the UI elements specified in the FXML
  176. * file. Gets called during FXML loading. Asserts the correct injection of
  177. * all referenced UI elements and initializes them.
  178. */
  179. @Override
  180. public void initialize(URL arg0, ResourceBundle arg1) {
  181. // Assert the correct injection of all references from FXML
  182. assertFXMLInjections();
  183. initializeToolbox();
  184. initializeProperties();
  185. initializeMetricbox();
  186. // Remove Header for the toolbox
  187. removeHeaderTableView(toolbox);
  188. // Initialize the Managers for the various for UI elements
  189. ToolboxManager.initializeItems();
  190. PropertiesManager.initializeItems(properties);
  191. ConsoleManager.initialize(this);
  192. OperatorManager.initialize(this);
  193. GraphDisplayManager.init(this);
  194. // Bind all the handlers to their corresponding UI elements
  195. initializeZoomButtons();
  196. initializeSymbolLayerButtons();
  197. initializeLayerButton();
  198. initializeOpGraphComboBox();
  199. initializeMenuBar();
  200. initializeSymbolRepToolbox();
  201. initializeDisplayPane();
  202. initializeWorldView();
  203. // Setup the Keyboard Shortcuts
  204. KeyboardShortcuts.initialize(Main.getInstance().getPrimaryStage(), this);
  205. }
  206. private void initializeWorldView() {
  207. JXMapViewer mapViewer = new JXMapViewer();
  208. WorldView.initAttributes(mapViewer, this);
  209. // center map if double clicked / middle clicked
  210. mapViewer.addMouseListener(new CenterMapListener(mapViewer));
  211. // zoom with mousewheel
  212. mapViewer.addMouseWheelListener(new ZoomMouseWheelListenerCursor(mapViewer));
  213. // "Drag map around" Listener
  214. MouseInputListener mia = new PanMouseInputListener(mapViewer);
  215. mapViewer.addMouseListener(mia);
  216. mapViewer.addMouseMotionListener(mia);
  217. swingNodeWorldView.setContent(mapViewer);
  218. // add resize Listener to the stackPane
  219. stackPane.heightProperty().addListener(new ResizeListener(swingNode, stackPane));
  220. stackPane.widthProperty().addListener(new ResizeListener(swingNode, stackPane));
  221. swingNodeWorldView.setVisible(false);
  222. // bind a context menu to the swing node
  223. swingNodeWorldView.setOnContextMenuRequested((event) -> MapViewFunctions.contextMenuRequest(event));
  224. }
  225. /**
  226. * Initializes the Menu Bar with all its contents.
  227. */
  228. private void initializeMenuBar() {
  229. newItem.setOnAction((event) -> MenuBarManager.newAction(event));
  230. open.setOnAction((event) -> MenuBarManager.openAction(event));
  231. add.setOnAction((event) -> MenuBarManager.addAction(event));
  232. add.setDisable(true);
  233. save.setOnAction((event) -> MenuBarManager.saveAction(event));
  234. saveAs.setOnAction((event) -> MenuBarManager.saveAsAction(event));
  235. preferences.setOnAction((event) -> MenuBarManager.preferencesAction(event));
  236. quit.setOnAction((event) -> MenuBarManager.quitAction(event));
  237. delete.setOnAction((event) -> MenuBarManager.deleteAction(event));
  238. undelete.setOnAction((event) -> MenuBarManager.undeleteAction(event));
  239. operators.setOnAction((event) -> OperatorManager.openOperatorsDialog());
  240. resetMapping.setOnAction((event) -> GraphDisplayManager.initMappingLayer(true));
  241. updateMetricMI.setOnAction((event) -> MetricboxManager.updateMetrics());
  242. updateMetricMI.setDisable(true);
  243. about.setOnAction((event) -> MenuBarManager.aboutAction(event));
  244. resetMapping.setDisable(true);
  245. }
  246. /**
  247. * Sets the handlers for the zoomin and zoomout buttons.
  248. */
  249. private void initializeZoomButtons() {
  250. zoomIn.setOnAction((event) -> ButtonManager.zoomInAction(event));
  251. zoomOut.setOnAction((event) -> ButtonManager.zoomOutAction(event));
  252. }
  253. /**
  254. * Sets the handlers for the Button that are shown in the symbol layer
  255. */
  256. private void initializeSymbolLayerButtons() {
  257. centerMap.setOnAction((event) -> ButtonManager.centerMapAction(event));
  258. defaultMapView.setOnAction((event) -> MapViewFunctions.changeMapView("Default"));
  259. roadMapView.setOnAction((event) -> MapViewFunctions.changeMapView("Road"));
  260. satelliteMapView.setOnAction((event) -> MapViewFunctions.changeMapView("Satellite"));
  261. hybridMapView.setOnAction((event) -> MapViewFunctions.changeMapView("Hybrid"));
  262. previousWaypoint.setOnAction((event) -> MapViewFunctions.switchToPreviousWaypoint());
  263. nextWaypoint.setOnAction((event) -> MapViewFunctions.switchToNextWaypoint());
  264. centerMap.setVisible(false);
  265. defaultMapView.setVisible(false);
  266. roadMapView.setVisible(false);
  267. satelliteMapView.setVisible(false);
  268. hybridMapView.setVisible(false);
  269. previousWaypoint.setVisible(false);
  270. nextWaypoint.setVisible(false);
  271. }
  272. /**
  273. * Initializes the special Toolbox for the Symbol Representation Layer.
  274. */
  275. private void initializeSymbolRepToolbox() {
  276. // Hide SymbolRep Toolbox View
  277. topLeftAPane.getChildren().remove(symbolToolVBox);
  278. edgesVisibleCheckbox.selectedProperty()
  279. .addListener((ov, oldVal, newVal) -> ButtonManager.edgeVisibilitySwitcher(ov, oldVal, newVal));
  280. nodeLabelCheckbox.selectedProperty()
  281. .addListener((ov, oldVal, newVal) -> ButtonManager.labelVisibilitySwitcher(ov, oldVal, newVal));
  282. edgeWeightCheckbox.selectedProperty()
  283. .addListener((ov, oldVal, newVal) -> ButtonManager.edgeWeightVisibilitySwitcher(ov, oldVal, newVal));
  284. }
  285. /**
  286. * Set the Handlers for the Layer switch Buttons.
  287. */
  288. private void initializeLayerButton() {
  289. underlayButton.setOnAction((event) -> ButtonManager.underlayAction(event));
  290. operatorButton.setOnAction((event) -> ButtonManager.operatorAction(event));
  291. mappingButton.setOnAction((event) -> ButtonManager.mappingAction(event));
  292. symbolRepButton.setOnAction((event) -> ButtonManager.symbolRepAction(event));
  293. Tooltip tip = new Tooltip();
  294. tip.setText("Underlay");
  295. underlayButton.setTooltip(tip);
  296. tip = new Tooltip();
  297. tip.setText("Operator");
  298. operatorButton.setTooltip(tip);
  299. tip = new Tooltip();
  300. tip.setText("Mapping");
  301. mappingButton.setTooltip(tip);
  302. tip = new Tooltip();
  303. tip.setText("Geographical Visualization");
  304. symbolRepButton.setTooltip(tip);
  305. ArrayList<Button> layerButtons = new ArrayList<Button>();
  306. layerButtons.add(underlayButton);
  307. layerButtons.add(operatorButton);
  308. layerButtons.add(mappingButton);
  309. layerButtons.add(symbolRepButton);
  310. ButtonManager.initialize(layerButtons, this, underlayButton);
  311. }
  312. /**
  313. * Sets the minimum size and adds the handlers to the graph display.
  314. */
  315. private void initializeDisplayPane() {
  316. ResizeListener rLis = new ResizeListener(swingNode, pane);
  317. pane.heightProperty().addListener(rLis);
  318. pane.widthProperty().addListener(rLis);
  319. pane.setOnScroll(GraphDisplayManager.scrollHandler);
  320. swingNode.setContent(Main.getInstance().getGraphManager().getView());
  321. pane.setMinSize(200, 200);
  322. }
  323. /**
  324. * Initialize the Toolbox.
  325. */
  326. @SuppressWarnings("unchecked")
  327. private void initializeToolbox() {
  328. ToolboxManager.initialize(this);
  329. toolboxStringColumn.setCellValueFactory(new ToolboxManager.PairKeyFactory());
  330. toolboxObjectColumn.setCellValueFactory(new ToolboxManager.PairValueFactory());
  331. toolboxObjectColumn.setCellFactory((column) -> {
  332. return new ToolboxManager.PairValueCell();
  333. });
  334. toolbox.getColumns().setAll(toolboxObjectColumn, toolboxStringColumn);
  335. // TODO make this work!!!!!!!!!!!!
  336. toolbox.getSelectionModel().selectedItemProperty()
  337. .addListener((ov, oldVal, newVal) -> ToolboxManager.selectedItemChanged(ov, oldVal, newVal));
  338. // Click event for TableView row
  339. toolbox.setRowFactory(tv -> {
  340. TableRow<Pair<Object, String>> row = new TableRow<>();
  341. row.setOnMouseClicked((event) -> ToolboxManager.rowClickedHandler(event));
  342. row.setOnDragDetected((event) -> {
  343. });
  344. return row;
  345. });
  346. // nothing is selected at the start
  347. toolbox.getSelectionModel().clearSelection();
  348. }
  349. /**
  350. * Initialize the Properties Window.
  351. */
  352. @SuppressWarnings("unchecked")
  353. private void initializeProperties() {
  354. propertiesObjectColumn.setResizable(true);
  355. propertiesStringColumn.setResizable(true);
  356. propertiesStringColumn.setCellValueFactory(new PropertyValueFactory<KeyValuePair, String>("key"));
  357. propertiesObjectColumn.setCellValueFactory(new PropertyValueFactory<KeyValuePair, Object>("value"));
  358. propertiesObjectColumn.setCellFactory(TextFieldTableCell.forTableColumn());
  359. propertiesObjectColumn.setOnEditCommit(PropertiesManager.setOnEditCommitHandler);
  360. propertiesTypeColumn.setCellValueFactory(new PropertyValueFactory<KeyValuePair, String>("classTypeAsString"));
  361. properties.getColumns().setAll(propertiesStringColumn, propertiesObjectColumn, propertiesTypeColumn);
  362. properties.setRowFactory(PropertiesManager.rightClickCallback);
  363. properties.setPlaceholder(new Label("No graph element selected"));
  364. properties.getSelectionModel().clearSelection();
  365. }
  366. /**
  367. * Initialize the metric box
  368. */
  369. @SuppressWarnings("unchecked")
  370. private void initializeMetricbox() {
  371. // TODO Möglicherweise auslagern
  372. metricbox.setRowFactory(tv -> {
  373. TableRow<MetricRowData> row = new TableRow<>();
  374. row.setOnMouseClicked(event -> {
  375. if (event.getClickCount() == 2 && (!row.isEmpty())) {
  376. MetricRowData rowData = row.getItem();
  377. if (rowData.getMetric().isSetupRequired()) {
  378. rowData.getMetric().setup();
  379. }
  380. }
  381. });
  382. return row;
  383. });
  384. metricBoxMetricColumn.setResizable(true);
  385. metricBoxValueColumn.setResizable(true);
  386. metricBoxMetricColumn.setCellValueFactory(new PropertyValueFactory<MetricRowData, String>("metricName"));
  387. metricBoxValueColumn.setCellValueFactory(new PropertyValueFactory<MetricRowData, String>("value"));
  388. metricBoxUpdateColumn.setCellValueFactory(new PropertyValueFactory<>("checked"));
  389. metricBoxUpdateColumn.setCellFactory(CheckBoxTableCell.forTableColumn(metricBoxUpdateColumn));
  390. metricbox.getColumns().setAll(metricBoxMetricColumn, metricBoxValueColumn, metricBoxUpdateColumn);
  391. MetricboxManager.initialize(this);
  392. // Update button initialization
  393. updateMetricButton.setOnAction((event) -> MetricboxManager.updateMetrics());
  394. rightSide.getChildren().remove(updateButtonAPane);
  395. // reset mapping button initialization
  396. resetMappingButton.setOnAction((event) -> GraphDisplayManager.initMappingLayer(true));
  397. leftSide.getChildren().remove(resetMappingButtonAPane);
  398. }
  399. /**
  400. * Initialize the operator graph combo box
  401. */
  402. private void initializeOpGraphComboBox() {
  403. opGraphSelectionBox.setVisible(false);
  404. ButtonManager.setupOpGraphComboBox();
  405. // initialization of the values of the box
  406. Platform.runLater(() -> opGraphSelectionBox.setValue(opGraphSelectionBox.getItems().get(0)));
  407. opGraphSelectionBox.setOnAction((v) -> ButtonManager.opGraphSelectedAction(v));
  408. /*
  409. * opGraphSelectionBox.setOnAction((v) -> { if
  410. * (opGraphSelectionBox.getValue().equals("Add...")) { // add Dialog
  411. * erscheint, Operator Graph wird importiert und fügt // neuen Punkt in
  412. * ComboBox hinzu // per //
  413. * opGraphSelectionBox.getItems().add(opGraphSelectionBox.getItems().
  414. * size() // - 1, ""); Debug.out("add Operator"); Platform.runLater(()
  415. * -> opGraphSelectionBox.setValue(firstOpGraph)); } else {
  416. *
  417. * // wechselt auf Operatorgraph mit diesem Namen
  418. *
  419. * } });
  420. */
  421. }
  422. /**
  423. * Removes the TableView Header for a given TableView
  424. *
  425. * @param tableView
  426. */
  427. private void removeHeaderTableView(TableView<?> tableView) {
  428. tableView.widthProperty().addListener(new ChangeListener<Number>() {
  429. @Override
  430. public void changed(ObservableValue<? extends Number> ov, Number t, Number t1) {
  431. // Get the table header
  432. Pane header = (Pane) tableView.lookup("TableHeaderRow");
  433. if (header != null && header.isVisible()) {
  434. header.setMaxHeight(0);
  435. header.setMinHeight(0);
  436. header.setPrefHeight(0);
  437. header.setVisible(false);
  438. header.setManaged(false);
  439. }
  440. }
  441. });
  442. }
  443. /**
  444. * Asserts the correct Injection of all Elements from the FXML File.
  445. */
  446. private void assertFXMLInjections() {
  447. assert swingNode != null : "fx:id=\"swingNode\" was not injected: check your FXML file 'MainWindow.fxml'.";
  448. assert pane != null : "fx:id=\"pane\" was not injected: check your FXML file 'MainWindow.fxml'.";
  449. assert zoomIn != null : "fx:id=\"zoomIn\" was not injected: check your FXML file 'MainWindow.fxml'.";
  450. assert zoomOut != null : "fx:id=\"zoomOut\" was not injected: check your FXML file 'MainWindow.fxml'.";
  451. assert centerMap != null : "fx:id=\"centerMap\" was not injected: check your FXML file 'MainWindow.fxml'.";
  452. assert defaultMapView != null : "fx:id=\"defaultMapView\" was not injected: check your FXML file 'MainWindow.fxml'.";
  453. assert roadMapView != null : "fx:id=\"roadMapView\" was not injected: check your FXML file 'MainWindow.fxml'.";
  454. assert satelliteMapView != null : "fx:id=\"satelliteMapView\" was not injected: check your FXML file 'MainWindow.fxml'.";
  455. assert hybridMapView != null : "fx:id=\"hybridMapView\" was not injected: check your FXML file 'MainWindow.fxml'.";
  456. assert previousWaypoint != null : "fx:id=\"previousWaypoint\" was not injected: check your FXML file 'MainWindow.fxml'.";
  457. assert nextWaypoint != null : "fx:id=\"nextWaypoint\" was not injected: check your FXML file 'MainWindow.fxml'.";
  458. assert underlayButton != null : "fx:id=\"underlayButton\" was not injected: check your FXML file 'MainWindow.fxml'.";
  459. assert operatorButton != null : "fx:id=\"operatorButton\" was not injected: check your FXML file 'MainWindow.fxml'.";
  460. assert mappingButton != null : "fx:id=\"mappingButton\" was not injected: check your FXML file 'MainWindow.fxml'.";
  461. assert symbolRepButton != null : "fx:id=\"symbolRepButton\" was not injected: check your FXML file 'MainWindow.fxml'.";
  462. assert newItem != null : "fx:id=\"newItem\" was not injected: check your FXML file 'MainWindow.fxml'.";
  463. assert open != null : "fx:id=\"open\" was not injected: check your FXML file 'MainWindow.fxml'.";
  464. assert add != null : "fx:id=\"add\" was not injected: check your FXML file 'MainWindow.fxml'.";
  465. assert save != null : "fx:id=\"save\" was not injected: check your FXML file 'MainWindow.fxml'.";
  466. assert saveAs != null : "fx:id=\"saveAs\" was not injected: check your FXML file 'MainWindow.fxml'.";
  467. assert preferences != null : "fx:id=\"preferences\" was not injected: check your FXML file 'MainWindow.fxml'.";
  468. assert quit != null : "fx:id=\"quit\" was not injected: check your FXML file 'MainWindow.fxml'.";
  469. assert delete != null : "fx:id=\"delete\" was not injected: check your FXML file 'MainWindow.fxml'.";
  470. assert undelete != null : "fx:id=\"undelete\" was not injected: check your FXML file 'MainWindow.fxml'.";
  471. assert operators != null : "fx:id=\"operators\" was not injected: check your FXML file 'MainWindow.fxml'.";
  472. assert resetMapping != null : "fx:id=\"resetMapping\" was not injected: check your FXML file 'MainWindow.fxml'.";
  473. assert updateMetricMI != null : "fx:id=\"updateMetricMI\" was not injected: check your FXML file 'MainWindow.fxml'.";
  474. assert about != null : "fx:id=\"about\" was not injected: check your FXML file 'MainWindow.fxml'.";
  475. assert toolbox != null : "fx:id=\"toolbox\" was not injected: check your FXML file 'MainWindow.fxml'.";
  476. assert properties != null : "fx:id=\"properties\" was not injected: check your FXML file 'MainWindow.fxml'.";
  477. assert metricbox != null : "fx:id=\"metricbox\" was not injected: check your FXML file 'MainWindow.fxml'.";
  478. assert toolboxStringColumn != null : "fx:id=\"toolboxString\" was not injected: check your FXML file 'MainWindow.fxml'.";
  479. assert toolboxObjectColumn != null : "fx:id=\"toolboxObject\" was not injected: check your FXML file 'MainWindow.fxml'.";
  480. assert propertiesStringColumn != null : "fx:id=\"propertiesString\" was not injected: check your FXML file 'MainWindow.fxml'.";
  481. assert propertiesObjectColumn != null : "fx:id=\"propertiesObject\" was not injected: check your FXML file 'MainWindow.fxml'.";
  482. assert propertiesTypeColumn != null : "fx:id=\"propertiesType\" was not injected: check your FXML file 'MainWindow.fxml'.";
  483. assert leftSide != null : "fx:id=\"leftSide\" was not injected: check your FXML file 'MainWindow.fxml'.";
  484. assert rightSide != null : "fx:id=\"rightSide\" was not injected: check your FXML file 'MainWindow.fxml'.";
  485. assert opGraphSelectionBox != null : "fx:id=\"opGraphSelectionBox\" was not injected: check your FXML file 'MainWindow.fxml'.";
  486. assert consoleScrollPane != null : "fx:id=\"consoleScrollPane\" was not injected: check your FXML file 'MainWindow.fxml'.";
  487. assert consoleWindow != null : "fx:id=\"consoleWindow\" was not injected: check your FXML file 'MainWindow.fxml'.";
  488. assert metricBoxMetricColumn != null : "fx:id=\"metricBoxMetricColumn\" was not injected: check your FXML file 'MainWindow.fxml'.";
  489. assert metricBoxValueColumn != null : "fx:id=\"metricBoxValueColumn\" was not injected: check your FXML file 'MainWindow.fxml'.";
  490. assert metricBoxUpdateColumn != null : "fx:id=\"metricBoxUpdateColumn\" was not injected: check your FXML file 'MainWindow.fxml'.";
  491. assert updateMetricButton != null : "fx:id=\"updateMetricButton\" was not injected: check your FXML file 'MainWindow.fxml'.";
  492. assert resetMappingButton != null : "fx:id=\"resetMappingButton\" was not injected: check your FXML file 'MainWindow.fxml'.";
  493. assert topLeftAPane != null : "fx:id=\"topLeftAPane\" was not injected: check your FXML file 'MainWindow.fxml'.";
  494. assert updateButtonAPane != null : "fx:id=\"updateButton\" was not injected: check your FXML file 'MainWindow.fxml'.";
  495. assert resetMappingButtonAPane != null : "fx:id=\"resetMappingButtonAPane\" was not injected: check your FXML file 'MainWindow.fxml'.";
  496. assert symbolToolVBox != null : "fx:id=\"symbolToolVBox\" was not injected: check your FXML file 'MainWindow.fxml'.";
  497. assert edgesVisibleCheckbox != null : "fx:id=\"edgesVisibleCheckbox\" was not injected: check your FXML file 'MainWindow.fxml'.";
  498. assert nodeLabelCheckbox != null : "fx:id=\"nodeLabelCheckbox\" was not injected: check your FXML file 'MainWindow.fxml'.";
  499. assert edgeWeightCheckbox != null : "fx:id=\"egdeWeightCheckbox\" was not injected: check your FXML file 'MainWindow.fxml'.";
  500. assert stackPane != null : "fx:id=\"stackPane\" was not injected: check your FXML file 'MainWindow.fxml'.";
  501. assert swingNodeWorldView != null : "fx:id=\"swingNodeWorldView\" was not injected: check your FXML file 'MainWindow.fxml'.";
  502. }
  503. }