package ui.controller; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedList; import classes.Category; import classes.CpsEdge; import classes.CpsObject; import classes.HolonElement; import classes.HolonObject; import Interfaces.CategoryListener; import ui.model.Model; import ui.view.GUI; public class Control { private Model MODEL; private ActionListener actionListener; private final CategoryController categoryController; private final ObjectController objectController; private final CanvasController canvasController; private final GlobalController globalController; private final LoadStoreController loadStoreController; public Control(Model model) { this.MODEL = model; this.categoryController = new CategoryController(MODEL); this.objectController = new ObjectController(MODEL); this.canvasController = new CanvasController(MODEL); this.globalController = new GlobalController(MODEL); this.loadStoreController = new LoadStoreController(MODEL, categoryController, canvasController, objectController); } /* Operations for Categories and Objects */ public void addCategory(String catName) { categoryController.addNewCategory(catName); } public void addObject(Category cat, String objType, ArrayList elements, String image) { categoryController.addNewHolonObject(cat, objType, elements, image); } // public void addObjectCategory(Category cat, HolonObject object) { // categoryController.addObject(cat, object); // } public void addTransformer(Category cat, String objName) { categoryController.addNewHolonTransformer(cat, objName, "/Images/transformer-1.png"); } public void addSwitch(Category cat, String objName) { categoryController.addNewHolonSwitch(cat, objName, "/Images/switch-on.png"); } public Category searchCategory(String name) { return categoryController.searchCatNode(name); } public void deleteCategory(String catName) { categoryController.deleteCategory(catName); } public void delObjectCategory(String toDelete, String deleteIn) { categoryController.deleteObjectInCat(toDelete, deleteIn); } /* Operations for Canvas */ public void AddEdgeOnCanvas(CpsEdge edge) { canvasController.addEdgeOnCanvas(edge); } public void removeEdgesOnCanvas(CpsEdge edge) { canvasController.removeEdgesOnCanvas(edge); } public void setSelecteEdge(CpsEdge edge){ MODEL.setSelectedEdge(edge); } public void addObjectCanvas(CpsObject object) { canvasController.addObjectIntoCanvas(object); } public void setSelectedObjectID(int id) { objectController.setSelectedObjectID(id); } public void deleteObjectOnCanvas(CpsObject obj) { canvasController.deleteObjectOnCanvas(obj); } /* Operations for Objects and Elements */ public void addElementCanvasObject(int ID, String eleName, int amount, float energy) { objectController.addNewElementIntoCanvasObject(ID, eleName, amount, energy); } public void addElementCategoryObject(String catName, String objName, String eleName, int amount, float energy) { objectController.addNewElementIntoCategoryObject(catName, objName, eleName, amount, energy); } public void deleteElementCanvas(int id, String element) { objectController.deleteElementInCanvas(id, element); } public void deleteElementCanvas(HolonObject obj, HolonElement ele) { objectController.deleteElement(obj, ele); } public CpsObject searchByID(int ID){ return objectController.searchByID(ID); } public CpsObject searchObjInCat(String objName, String catName){ Category cat = searchCategory(catName); for(CpsObject hl : cat.getObjects()){ if(hl.getCompareName().equals(objName)){ return hl; } } return null; } /* Global Operations */ public int getScale() { return globalController.getScale(); } public int getScaleDiv2() { return globalController.getScaleDiv2(); } public void setScale(int s) { globalController.setScale(s); } public void setCurIteration(int cur_it) { globalController.setCurIteration(cur_it); } /* Operations for Loading and Storing */ public void saveFile(String path) throws IOException { loadStoreController.writeJSONFile(path); } public void loadFile(String path) throws IOException { loadStoreController.readJSON(path); } ////////// etc public void initListener(CategoryListener catLis) { categoryController.addCategoryListener(catLis); } /** * Getter for Model * * @return */ public Model getModel() { return MODEL; } }