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.2KB

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