ObjectController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  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. HolonElement ele = new HolonElement(element, amount, energy, elementId, model);
  66. if (mpC.searchByID(objectId) == null) {
  67. addElementIntoCanvasObject((HolonObject) model.getSelectedCpsObjects().get(0), ele);
  68. } else {
  69. addElementIntoCanvasObject((HolonObject) mpC.searchByID(objectId), ele);
  70. }
  71. }
  72. /**
  73. * Add Element into a Object in Category.
  74. *
  75. * @param category the Category
  76. * @param object the Object
  77. * @param element the Element
  78. */
  79. public void addElementIntoCategoryObject(String category, String object, HolonElement element) {
  80. element.setSaving(new Pair<>(category, object));
  81. addElement((HolonObject) mpC.searchCatObj(mpC.searchCat(category), object), element);
  82. }
  83. /**
  84. * Add a new Element into a Object in Category.
  85. *
  86. * @param category the Category
  87. * @param object the Object
  88. * @param element the Element Name
  89. * @param energy the Energy
  90. * @param amount the amount
  91. */
  92. public void addNewElementIntoCategoryObject(String category, String object, String element, int amount,
  93. float energy) {
  94. HolonElement ele = new HolonElement(element, amount, energy, model);//TODO: I added model
  95. addElementIntoCategoryObject(category, object, ele);
  96. }
  97. /**
  98. * deletes a Element from a given Object.
  99. *
  100. * @param obj the Oject
  101. * @param ele the Element
  102. */
  103. public void deleteElement(HolonObject obj, HolonElement ele) {
  104. obj.getElements().remove(ele);
  105. }
  106. /**
  107. * deletes a selectedObject.
  108. *
  109. * @param obj Cpsobject
  110. */
  111. public void deleteSelectedObject(AbstractCpsObject obj) {
  112. model.getSelectedCpsObjects().remove(obj);
  113. }
  114. /**
  115. * add an Object to selectedObject.
  116. *
  117. * @param obj AbstractCpsobject
  118. */
  119. public void addSelectedObject(AbstractCpsObject obj) {
  120. model.getSelectedCpsObjects().add(obj);
  121. }
  122. /**
  123. * deletes a Element from a given Canvas Object.
  124. *
  125. * @param id the ID
  126. * @param eleid the Element ID
  127. */
  128. public void deleteElementInCanvas(int id, int eleid) {
  129. HolonObject object = (HolonObject) mpC.searchByID(id);
  130. if (object == null) {
  131. object = (HolonObject) model.getSelectedCpsObjects().get(0);
  132. }
  133. HolonElement element = mpC.searchEleById(object, eleid);
  134. deleteElement(object, element);
  135. }
  136. /**
  137. * Returns the ID of the selected Object 0 = no Object is selected.
  138. *
  139. * @param id the ID of the selected Object
  140. */
  141. public void setSelectedObjectID(int id) {
  142. model.setSelectedObjectID(id);
  143. }
  144. /**
  145. * Get the number of HolonObjects in the given List
  146. *
  147. * @param list
  148. */
  149. public int getNumberHolonObjects(ArrayList<AbstractCpsObject> list) {
  150. int val = 0;
  151. for (AbstractCpsObject obj : list) {
  152. if (obj instanceof HolonObject) {
  153. val++;
  154. } else if (obj instanceof CpsUpperNode) {
  155. val += getNumberHolonObjects(((CpsUpperNode) obj).getNodes());
  156. }
  157. }
  158. return val;
  159. }
  160. /**
  161. * add the ID of a HolonBody.
  162. *
  163. * @param i int
  164. */
  165. public void addSelectedHolonBody(int i) {
  166. model.setSelectedHolonBody(i);
  167. }
  168. }