ObjectController.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. package ui.controller;
  2. import classes.*;
  3. import ui.model.Model;
  4. import java.util.ArrayList;
  5. /**
  6. * Controller for Objects.
  7. *
  8. * @author Gruppe14
  9. */
  10. public class ObjectController {
  11. private Model model;
  12. private MultiPurposeController mpC;
  13. /**
  14. * Constructor.
  15. *
  16. * @param model Model
  17. * @param mp MultiPurposeController
  18. */
  19. public ObjectController(Model model, MultiPurposeController mp) {
  20. this.model = model;
  21. this.mpC = mp;
  22. initHolonElements();
  23. }
  24. /**
  25. * init default Power supply of the Power Plant.
  26. */
  27. public void initHolonElements() {
  28. addNewElementIntoCategoryObject("Energy", "Power Plant", "Power", 1, 10000);
  29. addNewElementIntoCategoryObject("Building", "House", "TV", 2, -250);
  30. addNewElementIntoCategoryObject("Building", "House", "Fridge", 1, -500);
  31. addNewElementIntoCategoryObject("Building", "House", "Radio", 1, -100);
  32. addNewElementIntoCategoryObject("Building", "House", "PC", 3, -250);
  33. addNewElementIntoCategoryObject("Building", "House", "Light", 5, -50);
  34. addNewElementIntoCategoryObject("Building", "House", "Solar Panels", 1, 300);
  35. addNewElementIntoCategoryObject("Power Flow Analysis", "Slack", "SLACK", 1, 0);
  36. }
  37. /**
  38. * Adds Element into a Object.
  39. *
  40. * @param object the Object
  41. * @param element the Element
  42. */
  43. public void addElement(HolonObject object, HolonElement element) {
  44. object.getElements().add(element);
  45. }
  46. /**
  47. * Adds Element into a Object on the Canvas.
  48. *
  49. * @param object the Object
  50. * @param element the Element
  51. */
  52. public void addElementIntoCanvasObject(HolonObject object, HolonElement element) {
  53. element.setSaving(null);
  54. addElement(object, element);
  55. }
  56. /**
  57. * Add a new Element into a Object on the Canvas.
  58. *
  59. * @param objectId the Object ID
  60. * @param element the Name of the Element
  61. * @param amount the Amount
  62. * @param energy the Energy
  63. * @param elementId the Element ID
  64. */
  65. public void addNewElementIntoCanvasObject(int objectId, String element, int amount, float energy, int elementId) {
  66. HolonElement ele = new HolonElement(element, amount, energy, elementId, model);
  67. if (mpC.searchByID(objectId) == null) {
  68. addElementIntoCanvasObject((HolonObject) model.getSelectedCpsObjects().get(0), ele);
  69. } else {
  70. addElementIntoCanvasObject((HolonObject) mpC.searchByID(objectId), ele);
  71. }
  72. }
  73. /**
  74. * Add Element into a Object in Category.
  75. *
  76. * @param category the Category
  77. * @param object the Object
  78. * @param element the Element
  79. */
  80. public void addElementIntoCategoryObject(String category, String object, HolonElement element) {
  81. element.setSaving(new Pair<>(category, object));
  82. addElement((HolonObject) mpC.searchCatObj(mpC.searchCat(category), object), element);
  83. }
  84. /**
  85. * Add a new Element into a Object in Category.
  86. *
  87. * @param category the Category
  88. * @param object the Object
  89. * @param element the Element Name
  90. * @param energy the Energy
  91. * @param amount the amount
  92. */
  93. public void addNewElementIntoCategoryObject(String category, String object, String element, int amount,
  94. float energy) {
  95. HolonElement ele = new HolonElement(element, amount, energy, model);//TODO: I added model
  96. addElementIntoCategoryObject(category, object, ele);
  97. }
  98. /**
  99. * deletes a Element from a given Object.
  100. *
  101. * @param obj the Oject
  102. * @param ele the Element
  103. */
  104. public void deleteElement(HolonObject obj, HolonElement ele) {
  105. obj.getElements().remove(ele);
  106. }
  107. /**
  108. * deletes a selectedObject.
  109. *
  110. * @param obj Cpsobject
  111. */
  112. public void deleteSelectedObject(AbstractCanvasObject obj) {
  113. model.getSelectedCpsObjects().remove(obj);
  114. }
  115. /**
  116. * add an Object to selectedObject.
  117. *
  118. * @param obj AbstractCpsobject
  119. */
  120. public void addSelectedObject(AbstractCanvasObject obj) {
  121. model.getSelectedCpsObjects().add(obj);
  122. }
  123. /**
  124. * deletes a Element from a given Canvas Object.
  125. *
  126. * @param id the ID
  127. * @param eleid the Element ID
  128. */
  129. public void deleteElementInCanvas(int id, int eleid) {
  130. HolonObject object = (HolonObject) mpC.searchByID(id);
  131. if (object == null) {
  132. object = (HolonObject) model.getSelectedCpsObjects().get(0);
  133. }
  134. HolonElement element = mpC.searchEleById(object, eleid);
  135. deleteElement(object, element);
  136. }
  137. /**
  138. * Returns the ID of the selected Object 0 = no Object is selected.
  139. *
  140. * @param id the ID of the selected Object
  141. */
  142. public void setSelectedObjectID(int id) {
  143. model.setSelectedObjectID(id);
  144. }
  145. /**
  146. * Get the number of HolonObjects in the given List
  147. *
  148. * @param list
  149. */
  150. public int getNumberHolonObjects(ArrayList<AbstractCanvasObject> list) {
  151. int val = 0;
  152. for (AbstractCanvasObject obj : list) {
  153. if (obj instanceof HolonObject) {
  154. val++;
  155. } else if (obj instanceof GroupNode) {
  156. val += getNumberHolonObjects(((GroupNode) obj).getNodes());
  157. }
  158. }
  159. return val;
  160. }
  161. /**
  162. * Helper added by Rolf TODO: macht hier vll keinen Sinn...
  163. */
  164. public ArrayList<HolonObject> getAllHolonObjects(ArrayList<AbstractCanvasObject> list){
  165. ArrayList<HolonObject> allObj = new ArrayList<HolonObject>();
  166. for (AbstractCanvasObject obj : list) {
  167. if (obj instanceof HolonObject) {
  168. allObj.add((HolonObject)obj);
  169. } else if (obj instanceof GroupNode) {
  170. allObj.addAll(getAllHolonObjects(((GroupNode) obj).getNodes()));
  171. }
  172. }
  173. return allObj;
  174. }
  175. /**
  176. * add the ID of a HolonBody.
  177. *
  178. * @param i int
  179. */
  180. public void addSelectedHolonBody(int i) {
  181. model.setSelectedHolonBody(i);
  182. }
  183. }