ObjectController.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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. }
  36. /**
  37. * Adds Element into a Object.
  38. *
  39. * @param object the Object
  40. * @param element the Element
  41. */
  42. public void addElement(HolonObject object, HolonElement element) {
  43. object.getElements().add(element);
  44. }
  45. /**
  46. * Adds Element into a Object on the Canvas.
  47. *
  48. * @param object the Object
  49. * @param element the Element
  50. */
  51. public void addElementIntoCanvasObject(HolonObject object, HolonElement element) {
  52. element.setSaving(null);
  53. addElement(object, element);
  54. }
  55. /**
  56. * Add a new Element into a Object on the Canvas.
  57. *
  58. * @param objectId the Object ID
  59. * @param element the Name of the Element
  60. * @param amount the Amount
  61. * @param energy the Energy
  62. * @param elementId the Element ID
  63. */
  64. public void addNewElementIntoCanvasObject(int objectId, String element, int amount, float energy, int elementId) {
  65. HolonObject hObject;
  66. if (mpC.searchByID(objectId) == null) {
  67. hObject = (HolonObject) model.getSelectedCpsObjects().get(0);
  68. } else {
  69. hObject = ((HolonObject) mpC.searchByID(objectId));
  70. }
  71. HolonElement ele = new HolonElement(hObject, element, amount, energy, elementId);
  72. addElementIntoCanvasObject(hObject, ele);
  73. }
  74. /**
  75. * Add Element into a Object in Category.
  76. *
  77. * @param category the Category
  78. * @param object the Object
  79. * @param element the Element
  80. */
  81. public void addElementIntoCategoryObject(String category, String object, HolonElement element) {
  82. element.setSaving(new Pair<>(category, object));
  83. addElement((HolonObject) mpC.searchCatObj(mpC.searchCat(category), object), element);
  84. }
  85. /**
  86. * Add a new Element into a Object in Category.
  87. *
  88. * @param category the Category
  89. * @param object the Object
  90. * @param element the Element Name
  91. * @param energy the Energy
  92. * @param amount the amount
  93. */
  94. public void addNewElementIntoCategoryObject(String category, String object, String element, int amount,
  95. float energy) {
  96. HolonElement ele = new HolonElement((HolonObject) mpC.searchCatObj(mpC.searchCat(category), object),element, amount, energy);
  97. addElementIntoCategoryObject(category, object, ele);
  98. }
  99. /**
  100. * deletes a Element from a given Object.
  101. *
  102. * @param obj the Oject
  103. * @param ele the Element
  104. */
  105. public void deleteElement(HolonObject obj, HolonElement ele) {
  106. obj.getElements().remove(ele);
  107. }
  108. /**
  109. * deletes a selectedObject.
  110. *
  111. * @param obj Cpsobject
  112. */
  113. public void deleteSelectedObject(AbstractCanvasObject obj) {
  114. model.getSelectedCpsObjects().remove(obj);
  115. }
  116. /**
  117. * add an Object to selectedObject.
  118. *
  119. * @param obj AbstractCpsobject
  120. */
  121. public void addSelectedObject(AbstractCanvasObject obj) {
  122. model.getSelectedCpsObjects().add(obj);
  123. }
  124. /**
  125. * deletes a Element from a given Canvas Object.
  126. *
  127. * @param id the ID
  128. * @param eleid the Element ID
  129. */
  130. public void deleteElementInCanvas(int id, int eleid) {
  131. HolonObject object = (HolonObject) mpC.searchByID(id);
  132. if (object == null) {
  133. object = (HolonObject) model.getSelectedCpsObjects().get(0);
  134. }
  135. HolonElement element = mpC.searchEleById(object, eleid);
  136. deleteElement(object, element);
  137. }
  138. /**
  139. * Returns the ID of the selected Object 0 = no Object is selected.
  140. *
  141. * @param id the ID of the selected Object
  142. */
  143. public void setSelectedObjectID(int id) {
  144. model.setSelectedObjectID(id);
  145. }
  146. /**
  147. * Get the number of HolonObjects in the given List
  148. *
  149. * @param list
  150. */
  151. public int getNumberHolonObjects(ArrayList<AbstractCanvasObject> list) {
  152. int val = 0;
  153. for (AbstractCanvasObject obj : list) {
  154. if (obj instanceof HolonObject) {
  155. val++;
  156. } else if (obj instanceof GroupNode) {
  157. val += getNumberHolonObjects(((GroupNode) obj).getNodes());
  158. }
  159. }
  160. return val;
  161. }
  162. /**
  163. * Helper added by Rolf TODO: macht hier vll keinen Sinn...
  164. */
  165. public ArrayList<HolonObject> getAllHolonObjects(ArrayList<AbstractCanvasObject> list){
  166. ArrayList<HolonObject> allObj = new ArrayList<HolonObject>();
  167. for (AbstractCanvasObject obj : list) {
  168. if (obj instanceof HolonObject) {
  169. allObj.add((HolonObject)obj);
  170. } else if (obj instanceof GroupNode) {
  171. allObj.addAll(getAllHolonObjects(((GroupNode) obj).getNodes()));
  172. }
  173. }
  174. return allObj;
  175. }
  176. }