You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Gaertner.java 8.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package garten.model;
  7. import garten.view.Fenster;
  8. import garten.view.GUI;
  9. import java.awt.MouseInfo;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.awt.event.MouseEvent;
  13. import java.awt.event.MouseListener;
  14. import java.awt.event.MouseMotionListener;
  15. import javax.security.auth.callback.ConfirmationCallback;
  16. import javax.swing.JOptionPane;
  17. import javax.swing.SwingUtilities;
  18. /**
  19. *
  20. * @author Jan
  21. */
  22. public class Gaertner implements MouseMotionListener, MouseListener,ActionListener
  23. {
  24. private Garten meinGarten;
  25. private Fenster fenster;
  26. private boolean pflanzebewegt;
  27. private boolean gartenexistiert;
  28. private boolean bepflanzungexistiert;
  29. MouseEvent koordinbeet; //x,y Koordinaten reichen eigentlich
  30. private int[] aktuellesBeet;
  31. Pflanze1 pfl1;
  32. Pflanze2 pfl2;
  33. Pflanze3 pfl3;
  34. int height;
  35. int width;
  36. GUI gui;
  37. public Gaertner(Fenster fenster)
  38. {
  39. this.fenster = fenster;
  40. meinGarten = new Garten(fenster.getFlbeet(), fenster.getFlweg(), fenster.getFlpfl());
  41. //this.gui = gui;
  42. //meinGarten = new Garten(gui.getFlaecheBeet2(), gui.getFlaecheWeg1(), gui.getFlaechePflanzen1());
  43. pflanzebewegt = false;
  44. gartenexistiert = false;
  45. bepflanzungexistiert = false;
  46. aktuellesBeet = new int[2];
  47. }
  48. public void registerEvents()
  49. {
  50. fenster.addMouseListener(this);
  51. fenster.addMouseMotionListener(this);
  52. //fenster.getFlbeet().addMouseListener(this);
  53. //fenster.getFlpfl().addMouseListener(this);
  54. //fenster.getFlweg().addMouseListener(this);
  55. fenster.getMnGartenanlegen().addActionListener(this);
  56. fenster.getMnRandomPflanzenanlegen().addActionListener(this);
  57. fenster.getMnbepflanzen1().addActionListener(this);
  58. fenster.getMnbepflanzen2().addActionListener(this);
  59. fenster.getMnbepflanzen3().addActionListener(this);
  60. fenster.getBtnbepfl1().addActionListener(this);
  61. fenster.getBtnbepfl2().addActionListener(this);
  62. fenster.getBtnbepfl3().addActionListener(this);
  63. fenster.getRadiobtn1pfl1().addActionListener(this);
  64. fenster.getRadiobtn1pfl2().addActionListener(this);
  65. fenster.getRadiobtn1pfl3().addActionListener(this);
  66. fenster.getRadiobtn2pfl1().addActionListener(this);
  67. fenster.getRadiobtn2pfl2().addActionListener(this);
  68. fenster.getRadiobtn2pfl3().addActionListener(this);
  69. fenster.getRadiobtn3pfl1().addActionListener(this);
  70. fenster.getRadiobtn3pfl2().addActionListener(this);
  71. fenster.getRadiobtn3pfl3().addActionListener(this);
  72. fenster.getRadiobtn4pfl3().addActionListener(this);
  73. fenster.getRadiobtn1pfl1().setVisible(true);
  74. /*
  75. gui.addMouseListener(this);
  76. gui.addMouseMotionListener(this);
  77. gui.getMnGartenanlegen().addActionListener(this);
  78. gui.getMnRandomPflanzenanlegen().addActionListener(this);
  79. gui.getBtnbepfl1().addActionListener(this);
  80. gui.getBtnbepfl2().addActionListener(this);
  81. gui.getBtnbepfl3().addActionListener(this);
  82. gui.getRadiobtn1pfl1().addActionListener(this);
  83. gui.getRadiobtn1pfl2().addActionListener(this);
  84. gui.getRadiobtn1pfl3().addActionListener(this);
  85. gui.getRadiobtn2pfl1().addActionListener(this);
  86. gui.getRadiobtn2pfl2().addActionListener(this);
  87. gui.getRadiobtn2pfl3().addActionListener(this);
  88. gui.getRadiobtn3pfl1().addActionListener(this);
  89. gui.getRadiobtn3pfl2().addActionListener(this);
  90. gui.getRadiobtn3pfl3().addActionListener(this);
  91. gui.getRadiobtn4pfl3().addActionListener(this);
  92. */
  93. }
  94. @Override
  95. public void mouseClicked(MouseEvent e)
  96. {
  97. System.out.println("MouseEvent");
  98. if (SwingUtilities.isRightMouseButton(e))//Bei Rechtsklick Popup Menü
  99. {
  100. //Zwischenspeichern der Koordinaten der Maus um Beet zu finden
  101. aktuellesBeet[0] = MouseInfo.getPointerInfo().getLocation().x;
  102. System.out.println("Beet x: " + aktuellesBeet[0]);
  103. aktuellesBeet[1] = MouseInfo.getPointerInfo().getLocation().y;
  104. System.out.println("Beet y: " + aktuellesBeet[1]);
  105. fenster.showPoPup(e);
  106. }
  107. else
  108. {
  109. fenster.hidePopup();
  110. }
  111. }
  112. @Override
  113. public void mousePressed(MouseEvent e)
  114. {
  115. }
  116. @Override
  117. public void mouseReleased(MouseEvent e)
  118. {
  119. if (pflanzebewegt == true)
  120. {
  121. meinGarten.setmovePflanze(e);
  122. pflanzebewegt = false;
  123. }
  124. }
  125. @Override
  126. public void mouseEntered(MouseEvent e)
  127. {
  128. }
  129. @Override
  130. public void mouseExited(MouseEvent e)
  131. {
  132. }
  133. @Override
  134. public void actionPerformed(ActionEvent e)
  135. {
  136. Object key = e.getSource();
  137. //Garten anlegen
  138. if (key.equals(fenster.getMnGartenanlegen()))
  139. {
  140. if (gartenexistiert == false)
  141. {
  142. meinGarten.erstelleGarten();
  143. gartenexistiert = true;
  144. }
  145. else //Falls schon angelegt nachfragen ob neu anlegen
  146. {
  147. if (JOptionPane.showConfirmDialog(fenster, "Garten neu anlegen?", "Info", JOptionPane.YES_NO_OPTION) == ConfirmationCallback.YES)
  148. {
  149. meinGarten.löscheGarten();
  150. meinGarten.erstelleGarten();
  151. gartenexistiert = true;
  152. bepflanzungexistiert = false;
  153. }
  154. }
  155. }
  156. //Garten Random Bepflanzen
  157. else if (key.equals(fenster.getMnRandomPflanzenanlegen()))
  158. {
  159. if (gartenexistiert == true && bepflanzungexistiert == false) //falls garten existiert bepflanzen
  160. {
  161. if (meinGarten.randomBepflanzung() == true)
  162. {
  163. bepflanzungexistiert = true;
  164. }
  165. else
  166. {
  167. JOptionPane.showConfirmDialog(null,
  168. "Beet war leider für eine Pflanzengruppe zu klein", "Info", JOptionPane.DEFAULT_OPTION);
  169. }
  170. }
  171. else if (gartenexistiert == true && bepflanzungexistiert == true)//falls schon ein teil bepflanzt
  172. {
  173. if (JOptionPane.showConfirmDialog(fenster, "Beete neu bepflanzen?", "Info?", JOptionPane.YES_NO_OPTION) == ConfirmationCallback.YES)
  174. {
  175. meinGarten.löscheBepflanzung();
  176. meinGarten.randomBepflanzung();
  177. bepflanzungexistiert = true;
  178. }
  179. }
  180. else
  181. {
  182. JOptionPane.showConfirmDialog(fenster, "Erst muss ein Garten angelegt werden", "Info", JOptionPane.DEFAULT_OPTION);
  183. }
  184. }
  185. //Ein einzelnes Beet bepflanzen
  186. else if ((key.equals(fenster.getBtnbepfl1()) || key.equals(fenster.getBtnbepfl2()) || key.equals(fenster.getBtnbepfl3())) && gartenexistiert)
  187. {
  188. int alter = 0;
  189. int pflanzentyp = 0;
  190. int laenge = 0;
  191. //Pflanzentyp festlegen + Länge festlegen
  192. if (key.equals(fenster.getBtnbepfl1()))
  193. {
  194. pflanzentyp = 1;
  195. laenge = Integer.valueOf(JOptionPane.showInputDialog("Start Länge von 30 - 50"));
  196. }
  197. else if (key.equals(fenster.getBtnbepfl2()))
  198. {
  199. pflanzentyp = 2;
  200. laenge = Integer.valueOf(JOptionPane.showInputDialog("Start Länge von 10 - 20"));
  201. }
  202. else if (key.equals(fenster.getBtnbepfl3()))
  203. {
  204. pflanzentyp = 3;
  205. laenge = Integer.valueOf(JOptionPane.showInputDialog("Start Länge von 10 - 20"));
  206. }
  207. //alter bekommen
  208. if (fenster.getRadiobtn1pfl1().isSelected() || fenster.getRadiobtn1pfl2().isSelected() || fenster.getRadiobtn1pfl3().isSelected())
  209. {
  210. alter = 1;
  211. }
  212. else if (fenster.getRadiobtn2pfl1().isSelected() || fenster.getRadiobtn2pfl2().isSelected() || fenster.getRadiobtn2pfl3().isSelected())
  213. {
  214. alter = 2;
  215. }
  216. else if (fenster.getRadiobtn3pfl1().isSelected() || fenster.getRadiobtn3pfl2().isSelected() || fenster.getRadiobtn3pfl3().isSelected())
  217. {
  218. alter = 3;
  219. }
  220. else if (fenster.getRadiobtn4pfl3().isSelected())
  221. {
  222. alter = 4;
  223. }
  224. System.out.println("Pflanzentyp : " + pflanzentyp + " Alter: " + alter + " Länge: " + laenge);
  225. PflanzengruppenKonfigurator konfig = new PflanzengruppenKonfigurator();
  226. konfig.alter(alter);
  227. konfig.pflanzenTyp(pflanzentyp);
  228. konfig.startlaenge(laenge);
  229. konfig.erstellen();
  230. System.out.println("Das gefundene Beet : " + meinGarten.getBeet(aktuellesBeet));
  231. System.out.println("Alle beete" + meinGarten.getBeete());
  232. System.out.println("Pflanze konfiguriert");
  233. bepflanzungexistiert = true;
  234. }
  235. }
  236. @Override
  237. public void mouseDragged(MouseEvent e)
  238. {
  239. fenster.hidePopup();
  240. if (pflanzebewegt == false)
  241. {
  242. if (meinGarten.getmovePflanze(e) != null)
  243. {
  244. pflanzebewegt = true;
  245. }
  246. }
  247. }
  248. @Override
  249. public void mouseMoved(MouseEvent e)
  250. {
  251. }
  252. }