/**
 * Filename: StundenplanEintrag.java<br>
 *
 * @author Isabell Clemens, Benjamin Balluff, Christian Kohler, Oliver Klais, Jannis Utz<br>
 */

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.border.LineBorder;

/**
 * Description: Diese Klasse wird dazu verwendet Stundenplaneinträge zu kreieren,
 * die dann in das StundenplanPanel übernommen und angezeigt werden<br>
 *
 */
public class StundenplanEintrag extends JButton implements MouseListener, ActionListener {

	/**
	 * Dieses Feld enthält ein Objekt des Types Lehrveranstaltung<br>
	 */
	private Lehrveranstaltung lehrveranstaltung;
	/**
	 * Dieses Feld dient als Zeiger auf das Objekt GUI<br>
	 */
	private GUI aGUI;

	/**
	 * Description: Konstruktor eines Stundenplaneintrages<br>
	 *
	 * @param l Lehveranstaltung, mit dessen Daten der Inhalt des Stundenplaneintrages gefüllt wird<br>
	 * @param g Zeiger auf das Objekt GUI<br>
	 */
	public StundenplanEintrag(Lehrveranstaltung l, GUI g ){
		lehrveranstaltung = l;
		aGUI = g;
		// Eigenschaften des StundenplanEintrag werden festgelegt
		String inhalt =
			"<html>"
				+ lehrveranstaltung.getFach()
				+ "<br>"
				+ lehrveranstaltung.getRaum()
				+ "</html>";
		setText(inhalt);
		setBorder(new LineBorder(Color.white));
		setOpaque(true);
		setFont(new Font("Arial", Font.BOLD, 12));
		addMouseListener(this);
		// falls Lehrveranstaltung ein Praktikum ist...
		if (lehrveranstaltung instanceof Praktikum) {
			setBackground(new Color(128, 128, 255)); // Farbe: hellblau
			setForeground(Color.white);
		}
		// falls Lehrveranstaltung eine Vorlesung ist...
		if (lehrveranstaltung instanceof Vorlesung) {
			setBackground(new Color(128, 255, 128));// Farbe: hellgrün
			setForeground(Color.black);
		}
	}
	/* Description: MouseEvent: Taste geklickt<br>
	 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)<br>
	 */
	public void mouseClicked(MouseEvent e) {

	}
	/* Description: MouseEvent: Taste gedrücked<br>
	 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)<br>
	 */
	public void mousePressed(MouseEvent e) {
		JPopupMenu popupmenue = new JPopupMenu();
				JMenuItem menueItem;
				popupmenue.add(menueItem = new JMenuItem("löschen"));
				menueItem.addActionListener(this);
				popupmenue.add(menueItem = new JMenuItem("bearbeiten"));
				menueItem.addActionListener(this);
				popupmenue.show(this, e.getX(), e.getY());
	}
	/* Description: MouseEvent: Taste losgelassen<br>
	 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)<br>
	 */
	public void mouseReleased(MouseEvent e) {

	}
	/* Description: MouseEvent: Mauszeiger im definierten Bereich<br>
	 * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)<br>
	 */
	public void mouseEntered(MouseEvent e) {

	}
	/* Description: MouseEvent: Mauszeiger außerhalb des definierten Bereiches<br>
	 * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)<br>
	 */
	public void mouseExited(MouseEvent e) {

	}
	/* Description: "actionPerformed" Methode, die auf Events reagiert<br>
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)<br>
	 *
	 * @param e Die Aktion, die der Benutzer ausgeführt hat<br>
	 */
	public void actionPerformed(ActionEvent e) {
		String befehl = e.getActionCommand();
		// falls "löschen" geklickt wurde, wird der geklickte Stundenplaneintrag gelöscht
		if (befehl.equals("löschen")){
			StundenplanArray stdplan = aGUI.getStundenplanArray();
			stdplan.stdLoeschen(lehrveranstaltung.getTag(),lehrveranstaltung.getBeginn(),lehrveranstaltung.getEnde());
			aGUI.refreshPanel();
		}
		// falls "bearbeiten" geklickt wurde, wird ebenfalls der Stundenplaneintrag gelöscht,
		// die Daten desselbigen aber in das Eingabepanel übernommen
		if (befehl.equals("bearbeiten")) {
			StundenplanArray stdplan = aGUI.getStundenplanArray();
			stdplan.stdLoeschen(lehrveranstaltung.getTag(),lehrveranstaltung.getBeginn(),lehrveranstaltung.getEnde());
			aGUI.editAuswahl(lehrveranstaltung);
			aGUI.refreshPanel();
		}
	}

}
