package ui.controller; import java.util.ArrayList; import classes.Category; import classes.CpsObject; import classes.HolonElement; import classes.HolonObject; import ui.model.Model; public class ObjectController { private Model MODEL; public ObjectController(Model model) { this.MODEL = model; initHolonElements(); } /** * init default Power supply of the Power Plant */ public void initHolonElements() { addNewElementIntoCategoryObject("Energy", "Power Plant", "Power", 1, 100); addNewElementIntoCategoryObject("Energy", "Power Plant", "Zero", 10, 100); addNewElementIntoCategoryObject("Energy", "Power Plant", "Rehab", 10, 100); addNewElementIntoCategoryObject("Energy", "Power Plant", "The Doctor", 40, 100); addNewElementIntoCategoryObject("Energy", "Power Plant", "Original", 1, 100); } /** * Adds Element into a Object */ public void addElement(HolonObject object, HolonElement element) { object.getElements().add(element); } /** * Adds Element into a Object on the Canvas * * @param object * @param element * @param type */ public void addElementIntoCanvasObject(String object, HolonElement element) { addElement(searchHolonObject(object, MODEL.getObjectsOnCanvas()), element); } /** * Add a new Element into a Object on the Canvas * * @param object * @param eleName * @param amount * @param energy * @param type */ public void addNewElementIntoCanvasObject(String object, String eleName, int amount, float energy) { addElementIntoCanvasObject(object, new HolonElement(eleName, energy, amount)); } /** * Add Element into a Object in Category * * @param object * @param element * @param type */ public void addElementIntoCategoryObject(String category, String object, HolonElement element) { Category cat = null; for (Category cats : MODEL.getCategories()) { if (cats.getName().equals(category)) { cat = cats; break; } } addElement(searchHolonObject(object, cat.getObjects()), element); } /** * Add a new Element into a Object in Category * * @param category * @param object * @param eleName * @param amount * @param energy * @param type */ public void addNewElementIntoCategoryObject(String category, String object, String eleName, int amount, float energy) { addElementIntoCategoryObject(category, object, new HolonElement(eleName, energy, amount)); } /** * deletes a Element from a given Object * * @param obj * @param ele */ public void deleteElement(HolonObject obj, HolonElement ele) { obj.getElements().remove(ele); } /** * deletes a Element from a given Canvas Object * * @param ID * @param ele * @param amount */ public void deleteElementInCanvas(int ID, String ele) { HolonObject object = (HolonObject) searchByID(ID); HolonElement element = searchHolonElement(object, ele); // element.setAmount(element.getAmount() - amount); // // if (element.getAmount() <= 0) deleteElement(object, element); } /** * deletes a Element from a given Category Object * * @param cat * @param obj * @param ele * @param amount */ public void deleteElementInCategory(String cat, String obj, String ele, int amount) { Category category = searchCategory(cat, MODEL.getCategories()); HolonObject object = searchHolonObject(obj, category.getObjects()); HolonElement element = searchHolonElement(object, ele); deleteElement(object, element); } public Category searchCategory(String category, ArrayList list) { for (Category cats : list) { if (cats.getName().equals(category)) return cats; } return null; } /** * Search for Object * * @param object * @param list * @return */ public HolonObject searchHolonObject(String object, ArrayList list) { for (CpsObject objects : list) { if (objects.getObjName().equals(object)) return (HolonObject) objects; } return null; } /** * Search for Object by ID * * @param ID * @param list * @return */ public CpsObject searchByID(int ID) { for (CpsObject objects : MODEL.getObjectsOnCanvas()) { if (objects.getID() == ID) return objects; } return null; } /** * Search for Element * * @param object * @param element * @return */ public HolonElement searchHolonElement(HolonObject object, String element) { HolonElement temp = null; if (object.getElements() != null) { for (HolonElement elements : object.getElements()) { if (elements.getEleName().equals(element)) temp = elements; } } return temp; } /** * Returns the ID of the selected Object 0 = no Object is selected * * @return ID */ public void setSelectedObjectID(int id) { MODEL.setSelectedObjectID(id); } }