package biblioteka_gui;

import javax.swing.*;

import java.awt.event.*;

/**
 * Klasa dziedziczaca po klasie JFrame, implementujaca interfejs ActionListener
 * <br>Wyswietla okno sluzace do dodania ksiazek do bazy ksiazek
 * @author w21826
 *
 */
public class JFrDodajKsiazke extends JFrame implements ActionListener
{
	/**
	 * Etykieta wyswietlajaca tekst "Autor"
	 */
	JLabel autor;
	/**
	 * Etykieta wyswietlajaca tekst "Imie:"
	 */
	JLabel etykieta_imie_autora;
	/**
	 * Pole tekstowe sluzace do wpisania imienia autora ksiazki, jego uzupelnienie jest wymagane
	 */
	JTextField imie_autora;
	/**
	 * Etykieta wyswietlajaca tekst "Nazwisko:"
	 */
	JLabel etykieta_nazwisko_autora;
	/**
	 * Pole tekstowe sluzace do wpisania nazwiska autora ksiazki, jego uzupelnienie jest wymagane
	 */
	JTextField nazwisko_autora;
	/**
	 * Etykieta wyswietlajaca tekst "Tytul:"
	 */
	JLabel etykieta_tytul;
	/**
	 * Pole tekstowe sluzace do wpisania tytulu ksiazki, jego uzupelnienie jest wymagane
	 */
	JTextField tytul;
	/**
	 * Etykieta wyswietlajaca tekst "Rok wydania:"
	 */
	JLabel etykieta_rok_wydania;
	/**
	 * Pole tekstowe sluzace do wpisania roku wydania ksiazki, jego uzupelnienie jest wymagane
	 */
	JTextField rok_wydania;
	/**
	 * Etykieta wyswietlajaca tekst "Wydawnictwo:"
	 */
	JLabel etykieta_wydawnictwo;
	/**
	 * Pole tekstowe sluzace do wpisania wydawnictwa, ktore wydalo ksiazke, jego uzupelnienie jest wymagane
	 */
	JTextField wydawnictwo;
	/**
	 * Etykieta wyswietlajaca tekst "Numer katalogowy:"
	 */
	JLabel etykieta_nr_katalogowy;
	/**
	 * Pole tekstowe wyswietlajace unikalny numer ksiazki, brak mozliwosci edycji przez osobe dodajaca czytelnika
	 */
	JTextField nr_katalogowy;
	/**
	 * Przycisk, ktorego wcisniecie powoduje dodanie nowej ksiazki do bazy danych
	 */	
	JButton przycisk_dodaj;
	/**
	 * Przycisk, ktorego wcisniecie powoduje anulowanie operacji dodawania nowej ksiazki do bazy danych, okno zostaje zniszczone
	 */	
	JButton przycisk_anuluj;

	/**
	 * Konstruktor bezparametrowy tworzacy nowe okno o tytule "Dodaj ksiazke"
	 * definiujacy rozmiar, polozenie, widocznosc okna i rozmieszczajacy etykiety, pola tekstowe oraz przyciski
	 *
	 */
	   public JFrDodajKsiazke()
	   {
			this.setLayout(null);
			this.setTitle("Dodaj ksiazkę");
			
			JFrGlowne.log.info("Dodawanie książki");
			autor = new JLabel("Autor");
			autor.setSize(100,30);
			autor.setLocation(20,20);
			this.add(autor);
			etykieta_imie_autora = new JLabel("Imię:");
			etykieta_imie_autora.setSize(100,30);
			etykieta_imie_autora.setLocation(20,50);
			this.add(etykieta_imie_autora);
			imie_autora = new JTextField();
			imie_autora.setSize(100,30);
			imie_autora.setLocation(120,50);
			this.add(imie_autora);
			etykieta_nazwisko_autora = new JLabel("Nazwisko:");
			etykieta_nazwisko_autora.setSize(100,30);
			etykieta_nazwisko_autora.setLocation(220,50);
			this.add(etykieta_nazwisko_autora);
			nazwisko_autora = new JTextField();
			nazwisko_autora.setSize(100,30);
			nazwisko_autora.setLocation(320,50);
			this.add(nazwisko_autora);
			etykieta_tytul = new JLabel("Tytuł:");
			etykieta_tytul.setSize(100,30);
			etykieta_tytul.setLocation(20,80);
			this.add(etykieta_tytul);
			tytul = new JTextField();
			tytul.setSize(100,30);
			tytul.setLocation(120,80);
			this.add(tytul);
			etykieta_rok_wydania = new JLabel("Rok wydania:");
			etykieta_rok_wydania.setSize(100,30);
			etykieta_rok_wydania.setLocation(220,80);
			this.add(etykieta_rok_wydania);
			rok_wydania = new JTextField();
			rok_wydania.setSize(100,30);
			rok_wydania.setLocation(320,80);
			this.add(rok_wydania);
			etykieta_wydawnictwo = new JLabel("Wydawnictwo:");
			etykieta_wydawnictwo.setSize(100,30);
			etykieta_wydawnictwo.setLocation(20,110);
			this.add(etykieta_wydawnictwo);
			wydawnictwo = new JTextField();
			wydawnictwo.setSize(100,30);
			wydawnictwo.setLocation(120,110);
			this.add(wydawnictwo);
			etykieta_nr_katalogowy = new JLabel("Numer katalogowy:");
			etykieta_nr_katalogowy.setSize(100,30);
			etykieta_nr_katalogowy.setLocation(220,110);
			this.add(etykieta_nr_katalogowy);
			nr_katalogowy = new JTextField();
			nr_katalogowy.setText("" + JFrGlowne.ksiazki.size());
			nr_katalogowy.setEditable(false);
			nr_katalogowy.setSize(100,30);
			nr_katalogowy.setLocation(320,110);
			this.add(nr_katalogowy);
			
			przycisk_dodaj = new JButton("Dodaj");
			przycisk_dodaj.setSize(100,50);
			przycisk_dodaj.setLocation(80,150);
			this.add(przycisk_dodaj);
			przycisk_dodaj.addActionListener(this);
			przycisk_anuluj = new JButton("Anuluj");
			przycisk_anuluj.setSize(100,50);
			przycisk_anuluj.setLocation(180,150);
			this.add(przycisk_anuluj);
			przycisk_anuluj.addActionListener(this);
			
			this.setSize(800,600);
			this.setVisible( true );
	   }
	   
	   /**
	    * Metoda redefiniujaca metode actionPerformed z interfejsu ActionListener
	    * @param e definiuje zdarzenie
	    */
	   public void actionPerformed(ActionEvent e)
	   {
		   if(e.getActionCommand() == "Dodaj")
		   {
			   if(imie_autora.getText().compareTo("") != 0 && nazwisko_autora.getText().compareTo("") != 0 && tytul.getText().compareTo("") != 0 && rok_wydania.getText().compareTo("") != 0 && wydawnictwo.getText().compareTo("") != 0 && nr_katalogowy.getText().compareTo("") !=0 )
			   {
				   JFrGlowne.ksiazki.add(new Ksiazka(imie_autora.getText(), nazwisko_autora.getText(), tytul.getText(), wydawnictwo.getText(), rok_wydania.getText(), "" + JFrGlowne.ksiazki.size(), false));
				   JOptionPane.showMessageDialog(this,"Dodano książkę","Komunikat",JOptionPane.INFORMATION_MESSAGE);
				   JFrGlowne.log.info("Dodano książkę " + (JFrGlowne.ksiazki.size()-1) + " " + imie_autora.getText() + " " + nazwisko_autora.getText() + " " + tytul.getText() + " " +rok_wydania.getText() + " " + wydawnictwo.getText());
				   //System.err.println(e.getActionCommand());
				   //System.err.println("Wszystkie dane podane :)");
				   this.dispose();
			   }
			   else
			   {
				   JOptionPane.showMessageDialog(this, "Nie podałeś wymaganych danych!", "Błąd!", JOptionPane.ERROR_MESSAGE);
				   JFrGlowne.log.info("Nie podano wymaganych danych");
			   }
			   
		   }
		   if(e.getActionCommand() == "Anuluj")
		   {
			   //System.err.println(e.getActionCommand());
			   this.dispose();
			   
		   }
	   }
	   
}