/* * 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 garten.view.FlaecheBeet; import garten.view.FlaechePflanzen; import garten.view.FlaecheWeg; 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; private Beet bepflanzeBeet; MouseEvent koordinbeet; //x,y Koordinaten reichen eigentlich Pflanze1 pfl1; Pflanze2 pfl2; Pflanze3 pfl3; int height; int width; public Gaertner(Fenster fenster, FlaecheBeet flbeet, FlaecheWeg flweg, FlaechePflanzen flpfl) { meinGarten = new Garten(flbeet, flweg, flpfl); this.fenster = fenster; //Zur späteren Steuerung Pop up usw. pflanzebewegt = false; gartenexistiert = false; bepflanzungexistiert = false; } 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); } @Override public void mouseClicked(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e))//Bei Rechtsklick Popup Menü { koordinbeet =e; //abspeichern wegen koordinaten zur weiterverarbeitung fenster.showPoPup(e); } else { fenster.hidePopup(); } } @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(); if (key.equals(fenster.getMnGartenanlegen())) //Garten anlegen { 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; } } } else if (key.equals(fenster.getMnRandomPflanzenanlegen())) //Garten Random Bepflanzen { 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); } } else if (key.equals(fenster.getBtnbepfl1()) || key.equals(fenster.getBtnbepfl2()) ||key.equals(fenster.getBtnbepfl3())) { } } @Override public void mouseDragged(MouseEvent e) { fenster.hidePopup(); if (pflanzebewegt == false) { if (meinGarten.getmovePflanze(e) != null) { pflanzebewegt = true; } } } @Override public void mouseMoved(MouseEvent e) { } }