CanvasController.java 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package ui.controller;
  2. import java.util.ArrayList;
  3. import Interfaces.CategoryListener;
  4. import Interfaces.ObjectListener;
  5. import classes.CpsEdge;
  6. import classes.CpsObject;
  7. import ui.model.Model;
  8. public class CanvasController {
  9. private Model MODEL;
  10. public CanvasController(Model model) {
  11. this.MODEL = model;
  12. }
  13. /**
  14. * Add an CpsObject to the model and notify the ObjectListener for update.
  15. *
  16. * @param object
  17. * CpsObject to be added.
  18. */
  19. public void addObjectIntoCanvas(CpsObject object) {
  20. String objName = object.getObjName();
  21. object.setSav("Canvas");
  22. object.setConnections(new ArrayList<>());
  23. MODEL.getObjectsOnCanvas().add(object);
  24. notifyObjListeners();
  25. System.out.println("Added: " + objName);
  26. }
  27. public void addObjectListener(ObjectListener objLis) {
  28. MODEL.getObjectListeners().add(objLis);
  29. }
  30. /**
  31. * notifies all listeners about changes in the Canvas
  32. */
  33. public void notifyObjListeners() {
  34. for (ObjectListener l : MODEL.getObjectListeners()) {
  35. l.onChange(MODEL.getObjectsOnCanvas());
  36. }
  37. }
  38. /**
  39. * Deletes an CpsObject on the Canvas and its connections
  40. *
  41. * @param CpsObject
  42. */
  43. public void deleteObjectOnCanvas(CpsObject obj) {
  44. CpsEdge e = null;
  45. for (CpsObject cps : MODEL.getObjectsOnCanvas()) {
  46. for (CpsEdge p : cps.getConnections()) {
  47. if (p.getA() == obj || p.getB() == obj) {
  48. e = p;
  49. }
  50. }
  51. cps.getConnectedTo().remove(e);
  52. MODEL.getEdgesOnCanvas().remove(e);
  53. }
  54. MODEL.getObjectsOnCanvas().remove(obj);
  55. }
  56. /**
  57. * @param objectsOnCanvas
  58. * the objectsOnCanvas to set
  59. */
  60. public void addEdgeOnCanvas(CpsEdge edge) {
  61. MODEL.getEdgesOnCanvas().add(edge);
  62. }
  63. /**
  64. * @param edgesOnCanvas
  65. * the edge to remove
  66. */
  67. public void removeEdgesOnCanvas(CpsEdge edge) {
  68. MODEL.getEdgesOnCanvas().remove(edge);
  69. }
  70. }