ObjectController.java 5.4 KB

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