package classes; import java.awt.Color; import java.util.ArrayList; import java.util.HashMap; import ui.model.idCounter; /** * The abstract class "CpsObject" represents any possible object in the system * (except Edges). The representation of any object contains following * variables: see description of variables * * @author Gruppe14 * */ public abstract class CpsObject { /* Type of the Object */ String objName; /* Name given by the user */ String name; /* ID of the Obj. */ int ID; /* Path of the image for the Obj. */ String image; /* Array of neighbors */ ArrayList connections; /* Position with a X and Y value */ Position position; /* * Energy input and output of each object in the grid Where the Object is * Stored */ String sav; /* BorderColor the user sets */ Color BorderColor = Color.WHITE; /* a Tag that can be used */ ArrayList tags; /** * Constructor for a CpsObejct with an unique ID */ public CpsObject(String objName) { setObjName(objName); setName(objName); setImage("/Images/Dummy_House.png"); } /** * Constructor for a new CpsObject with an unique ID (This constructor * correspond to the interaction between the Categories and Canvas)--> * actually the "new" Object is a copy. * * @param obj * Object to be copied */ public CpsObject(CpsObject obj) { setObjName(obj.getObjName()); setName(obj.getObjName()); setConnections(new ArrayList()); setPosition(new Position()); setID(idCounter.nextId()); setImage(obj.getImage()); } /** * Getter for the type of the Object * * @return String */ public String getObjName() { return objName; } /** * Set the type of Object * * @param objName * String */ public void setObjName(String objName) { this.objName = objName; } /** * Getter for the user-defined name (no unique) * * @return String */ public String getName() { return name; } /** * Set the name * * @param name * String */ public void setName(String name) { this.name = name; } /** * Getter of the unique ID * * @return int */ public int getID() { return ID; } /** * Set the ID to a new one * * @param iD * the iD to set */ public void setID(int ID) { this.ID = ID; } /** * Get the path of the image for the selected Object * * @return String */ public String getImage() { return image; } /** * Set the path of the image * * @param image * the Image to set */ public void setImage(String image) { this.image = image; } /** * List of all existing connections * * @return the connections ArrayList */ public ArrayList getConnections() { return connections; } /** * Set a new ArrayList of connections (Update) * * @param arrayList * the connections to set */ public void setConnections(ArrayList arrayList) { this.connections = arrayList; } /** * List of all existing connections * * @return the connections ArrayList */ public ArrayList getConnectedTo() { return connections; } /** * Add a new connection to the selected Object * * @param toConnect * Edge */ public void AddConnection(CpsEdge toConnect) { connections.add(toConnect); } /** * Set the position of the Object in the canvas * * @param pos * Coordinates */ public void setPosition(Position pos) { this.position = pos; } /** * Set the position of the Object in the canvas * * @param x * X-Coord * @param y * Y-Coord */ public void setPosition(int x, int y) { setPosition(new Position(x, y)); } /** * Get the actual position of the Object * * @return */ public Position getPosition() { return position; } /** * @return the stored */ public String getSav() { return sav; } /** * @param stored * the stored to set */ public void setSav(String sav) { this.sav = sav; } /** * Get the color of the border * * @return the BorderColor */ public Color getBorderColor() { return BorderColor; } /** * Set the Border Color of this CpsObject * * @param the * BorderColor */ public void setBorderColor(Color c) { this.BorderColor = c; } /** * Set the Color of the edges * * @param Color * the Color to set */ public void setConnections(Color color) { this.BorderColor = color; } /** * For internal purpose (energy flow) * * @param tag */ public void addTag(int tag) { this.tags.add(tag); } /** * Get the actual tags * * @return ArrayList */ public ArrayList getTag() { return tags; } /** * Rest the tags to Null */ public void resetTags() { this.tags = new ArrayList(); } public void setTags(ArrayList tags) { this.tags = tags; } }