CanvasController.java 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. private MultiPurposeController mpC;
  11. public CanvasController(Model model, MultiPurposeController mp) {
  12. this.MODEL = model;
  13. this.mpC = mp;
  14. }
  15. /**
  16. * Add an CpsObject to the model and notify the ObjectListener for update.
  17. *
  18. * @param object
  19. * CpsObject to be added.
  20. */
  21. public void addObject(CpsObject object) {
  22. MODEL.getCvsObjIdx().put(object.getID(), MODEL.getObjectsOnCanvas().size());
  23. MODEL.getObjectsOnCanvas().add(object);
  24. notifyObjListeners();
  25. }
  26. /**
  27. *
  28. * @param object
  29. */
  30. public void addNewObject(CpsObject object) {
  31. object.setSav("CVS");
  32. object.setConnections(new ArrayList<CpsEdge>());
  33. addObject(object);
  34. }
  35. public void addObjectListener(ObjectListener objLis) {
  36. MODEL.getObjectListeners().add(objLis);
  37. }
  38. /**
  39. * notifies all listeners about changes in the Canvas
  40. */
  41. public void notifyObjListeners() {
  42. for (ObjectListener l : MODEL.getObjectListeners()) {
  43. l.onChange(MODEL.getObjectsOnCanvas());
  44. }
  45. }
  46. /**
  47. * Deletes an CpsObject on the Canvas and its connections
  48. *
  49. * @param CpsObject
  50. */
  51. public void deleteObjectOnCanvas(CpsObject obj) {
  52. CpsEdge e = null;
  53. for (CpsObject cps : MODEL.getObjectsOnCanvas()) {
  54. for (CpsEdge p : cps.getConnections()) {
  55. if (p.getA() == obj || p.getB() == obj) {
  56. e = p;
  57. }
  58. }
  59. cps.getConnectedTo().remove(e);
  60. MODEL.getEdgesOnCanvas().remove(e);
  61. }
  62. mpC.decIdx(obj.getID(), MODEL.getCvsObjIdx());
  63. MODEL.getCvsObjIdx().remove(obj.getID());
  64. MODEL.getObjectsOnCanvas().remove(obj);
  65. }
  66. /**
  67. * @param objectsOnCanvas
  68. * the objectsOnCanvas to set
  69. */
  70. public void addEdgeOnCanvas(CpsEdge edge) {
  71. MODEL.getEdgesOnCanvas().add(edge);
  72. }
  73. /**
  74. * @param edgesOnCanvas
  75. * the edge to remove
  76. */
  77. public void removeEdgesOnCanvas(CpsEdge edge) {
  78. MODEL.getEdgesOnCanvas().remove(edge);
  79. }
  80. }