package ui.controller; import Interfaces.CategoryListener; import Interfaces.ObjectListener; import classes.CpsEdge; import classes.CpsObject; import ui.model.Model; public class CanvasController { private Model MODEL; public CanvasController(Model model) { this.MODEL = model; } /** * Add an CpsObject to the model and notify the ObjectListener for update. * * @param object * CpsObject to be added. */ public void addObjectIntoCanvas(CpsObject object) { String objName = object.getObjName(); MODEL.getObjectsOnCanvas().add(object); notifyObjListeners(); System.out.println("Added: " + objName); } public void addObjectListener(ObjectListener objLis) { MODEL.getObjectListeners().add(objLis); } /** * notifies all listeners about changes in the Canvas */ public void notifyObjListeners() { for (ObjectListener l : MODEL.getObjectListeners()) { l.onChange(MODEL.getObjectsOnCanvas()); } } /** * Deletes an CpsObject on the Canvas and its connections * * @param CpsObject */ public void deleteObjectOnCanvas(CpsObject obj) { CpsEdge e = null; for (CpsObject cps : MODEL.getObjectsOnCanvas()) { for (CpsEdge p : cps.getConnections()) { if (p.getA() == obj || p.getB() == obj) { e = p; } } cps.getConnectedTo().remove(e); MODEL.getEdgesOnCanvas().remove(e); } MODEL.getObjectsOnCanvas().remove(obj); } /** * @param objectsOnCanvas * the objectsOnCanvas to set */ public void addEdgeOnCanvas(CpsEdge edge) { MODEL.getEdgesOnCanvas().add(edge); } /** * @param edgesOnCanvas * the edge to remove */ public void removeEdgesOnCanvas(CpsEdge edge) { MODEL.getEdgesOnCanvas().remove(edge); } }