OperatorManager.java 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package de.tu_darmstadt.informatik.tk.scopviz.ui;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
  5. import de.tu_darmstadt.informatik.tk.scopviz.metrics.BasicMappingOperator;
  6. import de.tu_darmstadt.informatik.tk.scopviz.metrics.TestOperator;
  7. import de.tu_darmstadt.informatik.tk.scopviz.metrics.interfaces.ScopvizGraphOperator;
  8. import javafx.application.Platform;
  9. import javafx.collections.FXCollections;
  10. import javafx.geometry.Insets;
  11. import javafx.scene.control.ButtonBar.ButtonData;
  12. import javafx.scene.control.ButtonType;
  13. import javafx.scene.control.ChoiceBox;
  14. import javafx.scene.control.Dialog;
  15. import javafx.scene.control.Label;
  16. import javafx.scene.layout.GridPane;
  17. public class OperatorManager {
  18. private static HashMap<String, ScopvizGraphOperator> operators = new HashMap<String, ScopvizGraphOperator>();
  19. /**
  20. * Initializes all GraphOperators for employment
  21. *
  22. * ****Central method to add a new metric***** Add line: addOperator(new
  23. * YourMetric()); for using it in the Operatordialog
  24. * **************************************************************
  25. *
  26. */
  27. private static void initializeGraphOperators() {
  28. addOperator(new TestOperator());
  29. addOperator(new BasicMappingOperator());
  30. }
  31. public static void openOperatorsDialog() {
  32. Dialog<ArrayList<String>> addPropDialog = new Dialog<>();
  33. addPropDialog.setTitle("GraphOperators");
  34. ButtonType addButtonType = new ButtonType("invoke on current graph", ButtonData.OK_DONE);
  35. addPropDialog.getDialogPane().getButtonTypes().addAll(addButtonType, ButtonType.CANCEL);
  36. // create grid
  37. GridPane grid = new GridPane();
  38. grid.setHgap(10);
  39. grid.setVgap(10);
  40. grid.setPadding(new Insets(20, 150, 10, 10));
  41. // set DropDown Menu
  42. ChoiceBox<String> operatorChooser = new ChoiceBox<>();
  43. operatorChooser.setItems(FXCollections.observableArrayList(operators.keySet()));
  44. // adding elements to grid
  45. grid.add(new Label("Please select the operator you want to invoke on the current Gaph"), 0, 0);
  46. grid.add(operatorChooser, 0, 1);
  47. addPropDialog.getDialogPane().setContent(grid);
  48. Platform.runLater(() -> operatorChooser.requestFocus());
  49. // get new property values
  50. addPropDialog.setResultConverter(dialogButton -> {
  51. if (dialogButton == addButtonType) {
  52. operators.get(operatorChooser.getSelectionModel().getSelectedItem())
  53. .calculate(Main.getInstance().getGraphManager());
  54. return null;
  55. } else
  56. return null;
  57. });
  58. addPropDialog.showAndWait();
  59. }
  60. public static void addOperator(ScopvizGraphOperator op) {
  61. operators.put(op.getName(), op);
  62. }
  63. public static void initialize(GUIController g) {
  64. initializeGraphOperators();
  65. }
  66. }