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 7.1KB

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