OperatorManager.java 2.5 KB

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