/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package garten.model; import garten.view.Fenster; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.security.auth.callback.ConfirmationCallback; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; /** * * @author Jan */ public class Gaertner implements MouseMotionListener, MouseListener,ActionListener { private Garten meinGarten; private Fenster fenster; private boolean pflanzebewegt; private boolean gartenexistiert; private boolean bepflanzungexistiert; MouseEvent koordinbeet; //x,y Koordinaten reichen eigentlich private int[] aktuellesBeet; public Gaertner(Fenster fenster) { this.fenster = fenster; meinGarten = new Garten(fenster.getFlbeet(), fenster.getFlweg(), fenster.getFlpfl()); pflanzebewegt = false; gartenexistiert = false; bepflanzungexistiert = false; aktuellesBeet = new int[2]; } public void registerEvents() { fenster.addMouseListener(this); fenster.addMouseMotionListener(this); fenster.getMnGartenanlegen().addActionListener(this); fenster.getMnRandomPflanzenanlegen().addActionListener(this); fenster.getMnbepflanzen1().addActionListener(this); fenster.getMnbepflanzen2().addActionListener(this); fenster.getMnbepflanzen3().addActionListener(this); fenster.getBtnbepfl1().addActionListener(this); fenster.getBtnbepfl2().addActionListener(this); fenster.getBtnbepfl3().addActionListener(this); fenster.getRadiobtn1pfl1().addActionListener(this); fenster.getRadiobtn1pfl2().addActionListener(this); fenster.getRadiobtn1pfl3().addActionListener(this); fenster.getRadiobtn2pfl1().addActionListener(this); fenster.getRadiobtn2pfl2().addActionListener(this); fenster.getRadiobtn2pfl3().addActionListener(this); fenster.getRadiobtn3pfl1().addActionListener(this); fenster.getRadiobtn3pfl2().addActionListener(this); fenster.getRadiobtn3pfl3().addActionListener(this); fenster.getRadiobtn4pfl3().addActionListener(this); fenster.getRadiobtn1pfl1().setVisible(true); } @Override public void mouseClicked(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e))//Bei Rechtsklick Popup Menü { //Zwischenspeichern der Koordinaten der Maus um Beet zu finden koordinbeet = e; } } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { if (pflanzebewegt == true) { meinGarten.setmovePflanze(e); pflanzebewegt = false; } } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } @Override public void actionPerformed(ActionEvent e) { Object key = e.getSource(); //Garten anlegen if (key.equals(fenster.getMnGartenanlegen())) { if (gartenexistiert == false) { meinGarten.erstelleGarten(); gartenexistiert = true; } else //Falls schon angelegt nachfragen ob neu anlegen { if (JOptionPane.showConfirmDialog(fenster, "Garten neu anlegen?", "Info", JOptionPane.YES_NO_OPTION) == ConfirmationCallback.YES) { meinGarten.löscheGarten(); meinGarten.erstelleGarten(); gartenexistiert = true; bepflanzungexistiert = false; } } } //Garten Random Bepflanzen else if (key.equals(fenster.getMnRandomPflanzenanlegen())) { if (gartenexistiert == true && bepflanzungexistiert == false) //falls garten existiert bepflanzen { if (meinGarten.randomBepflanzung() == true) { bepflanzungexistiert = true; } else { JOptionPane.showConfirmDialog(null, "Beet war leider für eine Pflanzengruppe zu klein", "Info", JOptionPane.DEFAULT_OPTION); } } else if (gartenexistiert == true && bepflanzungexistiert == true)//falls schon ein teil bepflanzt { if (JOptionPane.showConfirmDialog(fenster, "Beete neu bepflanzen?", "Info?", JOptionPane.YES_NO_OPTION) == ConfirmationCallback.YES) { meinGarten.löscheBepflanzung(); meinGarten.randomBepflanzung(); bepflanzungexistiert = true; } } else { JOptionPane.showConfirmDialog(fenster, "Erst muss ein Garten angelegt werden", "Info", JOptionPane.DEFAULT_OPTION); } } //Ein einzelnes Beet bepflanzen else if ((key.equals(fenster.getBtnbepfl1()) || key.equals(fenster.getBtnbepfl2()) || key.equals(fenster.getBtnbepfl3())) && gartenexistiert) { int alter = 0; int pflanzentyp = 0; int laenge = 0; //Pflanzentyp festlegen + Länge festlegen if (key.equals(fenster.getBtnbepfl1())) { pflanzentyp = 1; laenge = Integer.valueOf(JOptionPane.showInputDialog("Start Länge von 30 - 50")); } else if (key.equals(fenster.getBtnbepfl2())) { pflanzentyp = 2; laenge = Integer.valueOf(JOptionPane.showInputDialog("Start Länge von 10 - 20")); } else if (key.equals(fenster.getBtnbepfl3())) { pflanzentyp = 3; laenge = Integer.valueOf(JOptionPane.showInputDialog("Start Länge von 10 - 20")); } //alter bekommen if (fenster.getRadiobtn1pfl1().isSelected() || fenster.getRadiobtn1pfl2().isSelected() || fenster.getRadiobtn1pfl3().isSelected()) { alter = 1; } else if (fenster.getRadiobtn2pfl1().isSelected() || fenster.getRadiobtn2pfl2().isSelected() || fenster.getRadiobtn2pfl3().isSelected()) { alter = 2; } else if (fenster.getRadiobtn3pfl1().isSelected() || fenster.getRadiobtn3pfl2().isSelected() || fenster.getRadiobtn3pfl3().isSelected()) { alter = 3; } else if (fenster.getRadiobtn4pfl3().isSelected()) { alter = 4; } System.out.println("Pflanzentyp : " + pflanzentyp + " Alter: " + alter + " Länge: " + laenge); PflanzengruppenKonfigurator konfig = new PflanzengruppenKonfigurator(); konfig.alter(alter); konfig.pflanzenTyp(pflanzentyp); konfig.startlaenge(laenge); konfig.beet(meinGarten.getBeet(koordinbeet)); konfig.erstellen(); //ArrayList tempfl = meinGarten.getBeet(koordinbeet).removePlfanzenGruppenBeet(); //meinGarten.removePflanzen(tempfl); for(Pflanze pf : meinGarten.getBeet(koordinbeet).getPflanzenausgruppe()) { meinGarten.hinzufuegenPflanze(pf); } meinGarten.zeichnePflanzen(); System.out.println("Pflanze konfiguriert"); bepflanzungexistiert = true; } } @Override public void mouseDragged(MouseEvent e) { fenster.hidePopup(); if (pflanzebewegt == false) { if (meinGarten.getmovePflanze(e) != null) { pflanzebewegt = true; } } } @Override public void mouseMoved(MouseEvent e) { } }