package biblioteka_gui;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.logging.*;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JSeparator;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.*;
import org.w3c.dom.*;



/**
 * Glowne okno programu dziedziczace po JFrame
 * <br>Obiekt tej klasy zawiera statyczne zmienne: czytelnicy oraz ksiazki stanowiace baze danych czytelnikow i ksiazek
 * @author w21826
 * @version 1.3
 */

public class JFrGlowne extends JFrame implements ActionListener
{
	/**
	 * Etykieta wyswietlajaca tekst "Program obslugi biblioteki"
	 */
	JLabel Powitanie;
	/**
	 * Etykieta wyswietlajaca tekst "Wybierz opcję z paska Menu"
	 */
	JLabel Powitanie1;
	//String ui;
	/**
	 * Statyczny obiekt klasy String pobierajacy domyslny styl dla systemu operacyjnego
	 */
	static public String ui_styl = UIManager.getCrossPlatformLookAndFeelClassName();
	/**
	 * Statyczny obiekt klasy String wskazujacy na domyslny katalog bazy danych ksiazek
	 */
	static public String sciezka_ksiazki = "c:\\";
	/**
	 * Statyczny obiekt klasy String wskazujacy na domyslny katalog bazy danych czytelnikow
	 */
	static public String sciezka_czytelnicy = "c:\\";
	/**
	 * Statyczny obiekt klasy String wskazujacy na domyslne polozenie pliku ustawien programu
	 */
	static public String ustawienia="settings.xml";
	/**
	 * Statyczny kolekcja zawierajaca obiekty klasy Czytelnik, baza danych czytelnikow dostepna w kazdym miejscu programu
	 * @see Czytelnik
	 */
	static public ArrayList<Czytelnik> czytelnicy = new ArrayList<Czytelnik>();
	/**
	 * Statyczny kolekcja zawierajaca obiekty klasy Ksiazka, baza danych ksiazek dostepna w kazdym miejscu programu
	 * @see Ksiazka
	 */
	static public ArrayList<Ksiazka> ksiazki = new ArrayList<Ksiazka>();
	/**
	 * Statyczny obiekt klasy Logger sluzacy do logowania zachowan programu
	 * @see Logger
	 */
	static public Logger log = Logger.getLogger("");

	/**
	 * Konstruktor klasy, tworzy nowe okno, ustawia jego skladniki, wczytuje domyslne ustawienia z pliku settings.xml
	 *
	 */
	JFrGlowne()
	{
		try 
		{
	        FileHandler fileHandler1 = new FileHandler("log_Biblioteka.xml");
	        log.addHandler(fileHandler1);
	     }
	     catch(IOException ioe) 
	     {
	        log.log(Level.SEVERE, "Unable to create file handler.", ioe);
	     }
		log.info("Uruchomiono program");
		try
		{
			File plik=new File(ustawienia);
			log.info("Proba otwarcia pliku settings.xml");
			DocumentBuilderFactory fabr=DocumentBuilderFactory.newInstance();
			DocumentBuilder parser=fabr.newDocumentBuilder();
			Document dokument=parser.parse(plik);
			Element root=dokument.getDocumentElement();
			NodeList Opcje=root.getElementsByTagName("Ustawienia");
			JFrGlowne.ui_styl=((Element)Opcje.item(0)).getAttribute("ui_styl");
			log.info("Zostanie użyty styl " + JFrGlowne.ui_styl);
			SwingUtilities.updateComponentTreeUI(this);
			JFrGlowne.sciezka_czytelnicy=((Element)Opcje.item(0)).getAttribute("sciezka_czytelnicy");
			log.info("Domyslna ścieżka bazy czytelników " + JFrGlowne.sciezka_czytelnicy);
			JFrGlowne.sciezka_ksiazki=((Element)Opcje.item(0)).getAttribute("sciezka_ksiazki");
			log.info("Domyslna scieżka bazy książek " + JFrGlowne.sciezka_ksiazki);
			JOptionPane.showMessageDialog(this,"Wczytano ustawienia z pliku " + JFrGlowne.ustawienia + "\nDomyślny styl: "+ JFrGlowne.ui_styl + "\nŚcieżka zapisu/odczytu książek: " + JFrGlowne.sciezka_ksiazki + "\nŚcieżka zapisu/odczytu czytelników: " + JFrGlowne.sciezka_czytelnicy,"Komunikat",JOptionPane.INFORMATION_MESSAGE);
			
			
		} catch(Exception ex)
		{
			try
			{
				DocumentBuilderFactory fabr=DocumentBuilderFactory.newInstance();
				DocumentBuilder parser=fabr.newDocumentBuilder();
				Document dokument=parser.newDocument();
				Element root=dokument.createElement("Opcje");
				dokument.appendChild(root);
				Element elem=dokument.createElement("Ustawienia");
				elem.setAttribute("ui_styl",JFrGlowne.ui_styl);
				elem.setAttribute("sciezka_czytelnicy",JFrGlowne.sciezka_czytelnicy);
				elem.setAttribute("sciezka_ksiazki", JFrGlowne.sciezka_ksiazki);
				root.appendChild(elem);
				Transformer przekszt = TransformerFactory.newInstance().newTransformer();
				Source zrodlo=new DOMSource(dokument);
				File plik=new File(JFrGlowne.ustawienia);
				Result wyjscie=new StreamResult(plik);
				przekszt.transform(zrodlo, wyjscie);
				
				//JOptionPane.showMessageDialog(this,"Zapisano domyślne ustawienia do pliku " + JFrGlowne.ustawienia ,"Komunikat",JOptionPane.INFORMATION_MESSAGE);
				
				
			} catch(Exception exc)
			{
				JOptionPane.showMessageDialog(this,"Błąd przy zapisywaniu pliku ustawień " + JFrGlowne.ustawienia,"Błąd",JOptionPane.ERROR_MESSAGE);
				log.warning("Błąd przy zapisywaniu pliku ustawień");
				log.warning("Stos: " + ex.getStackTrace());
			}
			JOptionPane.showMessageDialog(this,"Błąd przy otwieraniu pliku ustawień, utworzono plik ustawien " + JFrGlowne.ustawienia,"Błąd",JOptionPane.ERROR_MESSAGE);
			log.info("Nie powiodlo się wczytywanie pliku ustawień, utworzono plik settings.xml z ustawieniami domyślnymi");
		}
		
		try 
		{
			UIManager.setLookAndFeel(ui_styl);
		} 
		catch (Exception e) 
		{
			
			e.printStackTrace(); 
			log.warning("Nie udalo się stawić stylu" + ui_styl);
			log.warning("Stos: " + e.getStackTrace());
		}
		
		JMenuBar mb = new JMenuBar();
		JMenu jmPlik = new JMenu("Plik");
		mb.add(jmPlik);
		JMenuItem jmiOtBK = new JMenuItem("Otwórz bazę książek");
		jmPlik.add(jmiOtBK);
		jmiOtBK.addActionListener(this);
		JMenuItem jmiZaBK = new JMenuItem("Zapisz bazę książek");
		jmPlik.add(jmiZaBK);
		jmiZaBK.addActionListener(this);
		jmPlik.add(new JSeparator());
		JMenuItem jmiOtBC = new JMenuItem("Otwórz bazę czytelników");
		jmPlik.add(jmiOtBC);
		jmiOtBC.addActionListener(this);
		JMenuItem jmiZaBC = new JMenuItem("Zapisz bazę czytelników");
		jmPlik.add(jmiZaBC);
		jmiZaBC.addActionListener(this);
		jmPlik.add(new JSeparator());
		JMenuItem jmiKoniec = new JMenuItem("Zakończ pracę programu");
		jmPlik.add(jmiKoniec);
		jmiKoniec.addActionListener(this);
		JMenu jmKsiazka = new JMenu("Książka");
		mb.add(jmKsiazka);
		JMenuItem jmiDodKsiazka = new JMenuItem("Dodaj książkę");
		jmKsiazka.add(jmiDodKsiazka);
		jmiDodKsiazka.addActionListener(this);
		JMenuItem jmiSzukKsiazka = new JMenuItem("Szukaj książki");
		jmKsiazka.add(jmiSzukKsiazka);
		jmiSzukKsiazka.addActionListener(this);
		JMenuItem jmiListaKsiazka = new JMenuItem("Lista książek");
		jmKsiazka.add(jmiListaKsiazka);
		jmiListaKsiazka.addActionListener(this);
		JMenu jmCzytelnik = new JMenu("Czytelnik");
		mb.add(jmCzytelnik);
		JMenuItem jmiDodCzytelnik = new JMenuItem("Dodaj czytelnika");
		jmCzytelnik.add(jmiDodCzytelnik);
		jmiDodCzytelnik.addActionListener(this);
		JMenuItem jmiSzukCzytelnik = new JMenuItem("Szukaj czytelnika");
		jmCzytelnik.add(jmiSzukCzytelnik);
		jmiSzukCzytelnik.addActionListener(this);
		jmCzytelnik.add(new JSeparator());
		JMenuItem jmiListaCzytelnik = new JMenuItem("Lista czytelników");
		jmCzytelnik.add(jmiListaCzytelnik);
		jmiListaCzytelnik.addActionListener(this);
		jmCzytelnik.add(new JSeparator());
		JMenuItem jmiWypKs = new JMenuItem("Wypożycz książkę");
		jmCzytelnik.add(jmiWypKs);
		jmiWypKs.addActionListener(this);
		JMenuItem jmiOddKs = new JMenuItem("Oddaj książkę");
		jmCzytelnik.add(jmiOddKs);
		jmiOddKs.addActionListener(this);
		JMenu jmOpcje = new JMenu("Opcje");
		mb.add(jmOpcje);
		JMenuItem jmiWygląd = new JMenuItem("Wygląd");
		jmOpcje.add(jmiWygląd);
		jmiWygląd.addActionListener(this);
		JMenuItem jmiŚcieżki = new JMenuItem("Ścieżki");
		jmOpcje.add(jmiŚcieżki);
		jmiŚcieżki.addActionListener(this);
		JMenuItem jmiZapiszOpcje = new JMenuItem("Zapisz opcje");
		jmOpcje.add(jmiZapiszOpcje);
		jmiZapiszOpcje.addActionListener(this);
		JMenuItem jmiOdswiezOkno = new JMenuItem("Odswież okno");
		jmOpcje.add(jmiOdswiezOkno);
		jmiOdswiezOkno.addActionListener(this);
		JMenu jmStats = new JMenu("Statystyki");
		mb.add(jmStats);
		JMenuItem jmiW = new JMenuItem("Wyświetl statystyki");
		jmStats.add(jmiW);
		jmiW.addActionListener(this);
		JMenu jmPomoc = new JMenu("Pomoc");
		mb.add(jmPomoc);
		JMenuItem jmiTematy = new JMenuItem("Tematy pomocy");
		jmPomoc.add(jmiTematy);
		jmiTematy.addActionListener(this);
		jmPomoc.add(new JSeparator());
		JMenuItem jmiAbout = new JMenuItem("About");
		jmPomoc.add(jmiAbout);
		jmiAbout.addActionListener(this);
		setJMenuBar(mb);

		
		this.setTitle("Program obsługi biblioteki");
		this.setLayout(null);
		
		Powitanie = new JLabel("Witam w programie obsługi biblioteki");
		Powitanie.setSize(300,30);
		Powitanie.setLocation(300, 200);
		Powitanie.setVisible(true);
		this.add(Powitanie);
		Powitanie1 = new JLabel("Wybierz opcję z paska Menu");
		Powitanie1.setSize(300,30);
		Powitanie1.setLocation(300, 230);
		Powitanie1.setVisible(true);
		this.add(Powitanie1);

		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(800,600);
		this.setVisible( true );
	}
	
	public void actionPerformed(ActionEvent e) 
	{
		String komenda=e.getActionCommand();
		//System.err.println(e.getActionCommand());
		if(komenda == "Otwórz bazę książek") 
		{
			log.info("Wybieranie bazy książek do otworzenia");
			final JFileChooser fc = new JFileChooser();
			fc.setDialogTitle("Otwórz bazę książek");
			fc.setCurrentDirectory(new File(sciezka_ksiazki));
			fc.showOpenDialog(this);
//			In response to a button click:
			try
			{
				File plik=fc.getSelectedFile();
				if(plik != null)
				{
				System.err.println(fc.getSelectedFile());
				DocumentBuilderFactory fabr=DocumentBuilderFactory.newInstance();
				DocumentBuilder parser=fabr.newDocumentBuilder();
				Document dokument=parser.parse(plik);
				Element root=dokument.getDocumentElement();
				NodeList Książki=root.getElementsByTagName("Ksiazka");
				for(int i=0;i<Książki.getLength();i++)
				{
					String imie=((Element)Książki.item(i)).getAttribute("Imie_autora");
					String nazwisko=((Element)Książki.item(i)).getAttribute("Nazwisko_autora");
					String rok_wydania=((Element)Książki.item(i)).getAttribute("Rok_wydania");
					String tytul=((Element)Książki.item(i)).getAttribute("Tytul");
					String nr_katalogowy=((Element)Książki.item(i)).getAttribute("nr_katalogowy");
					String wydawnictwo=((Element)Książki.item(i)).getAttribute("Wydawnictwo");
					String wypoz=((Element)Książki.item(i)).getAttribute("Wypozyczona");
					boolean wyp=false;
					if(wypoz.compareTo("true") == 0)
					{
						wyp=true;
					}
					
					//System.out.println(imie+" "+nazwisko+" "+tytul+" " +nr_katalogowy + " " + rok_wydania + " " + wydawnictwo);
					JFrGlowne.ksiazki.add(new Ksiazka(imie, nazwisko, tytul, wydawnictwo, rok_wydania, nr_katalogowy, wyp));
					//String imie=((Element)Książki.item(i)).toString().getAttribute("Imie_autora");
				}
				JOptionPane.showMessageDialog(this,"Wczytano " + Książki.getLength() + " książek z pliku "+ fc.getSelectedFile(),"Komunikat",JOptionPane.INFORMATION_MESSAGE);
				log.info("Wczytano " + Książki.getLength() + " książek z pliku " + fc.getSelectedFile());
				
				}
			} catch(Exception ex)
			{
				JOptionPane.showMessageDialog(this,"Błąd przy otwieraniu pliku " + fc.getSelectedFile(),"Błąd",JOptionPane.ERROR_MESSAGE);
				log.warning("Błąd przy otwieraniu bazy książek z pliku " + fc.getSelectedFile());
				log.warning("Stos " + ex.getStackTrace());
			}
				
		}
		if(komenda == "Zapisz bazę książek") 
		{
			log.info("Wybieranie pliku do zapisania bazy książek");
			final JFileChooser fc = new JFileChooser();
			fc.setDialogTitle("Zapisz bazę książek");
			fc.setCurrentDirectory(new File(sciezka_ksiazki));
			fc.showSaveDialog(this);
//			In response to a button click:
			try
			{
				File plik=fc.getSelectedFile();
				if(plik != null)
				{
				DocumentBuilderFactory fabr=DocumentBuilderFactory.newInstance();
				DocumentBuilder parser=fabr.newDocumentBuilder();
				Document dokument=parser.newDocument();
				Element root=dokument.createElement("Opcje");
				//Element elem=dokument.createElement("Ustawienia");
				dokument.appendChild(root);
				for(int i=0; i<JFrGlowne.ksiazki.size();i++)
				{
				ksiazki.get(i).zapisz(dokument,root);
				}
				Transformer przekszt=TransformerFactory.newInstance().newTransformer();
				Source zrodlo = new DOMSource(dokument);
				//File plik=fc.getSelectedFile();
				Result wyjscie=new StreamResult(plik);
				przekszt.transform(zrodlo, wyjscie);
				JOptionPane.showMessageDialog(this,"Zapisano bazę książek do pliku " + fc.getSelectedFile(),"Komunikat",JOptionPane.INFORMATION_MESSAGE);
				log.info("Zapisano bazę książek do pliku " + fc.getSelectedFile());
				}
			} 
			catch(Exception ex)
			{
				JOptionPane.showMessageDialog(this,"Błąd przy zapisywaniu bazy książek do pliku " + fc.getSelectedFile(),"Błąd",JOptionPane.ERROR_MESSAGE);
				log.warning("Błąd przy zapisywaniu bazy książek do pliku " + fc.getSelectedFile());
				log.warning("Stos " + ex.getStackTrace());
			}
			
		}
		if(komenda == "Otwórz bazę czytelników") 
		{
			log.info("Wybieranie bazy czytelników do otworzenia");
			final JFileChooser fc = new JFileChooser();
			fc.setDialogTitle("Otwórz bazę czytelników");
			fc.setCurrentDirectory(new File(sciezka_czytelnicy));
			fc.showOpenDialog(this);
//			In response to a button click:
			try
			{
				File plik=fc.getSelectedFile();
				if(plik != null)
				{
				System.err.println(fc.getSelectedFile());
				DocumentBuilderFactory fabr=DocumentBuilderFactory.newInstance();
				DocumentBuilder parser=fabr.newDocumentBuilder();
				Document dokument=parser.parse(plik);
				Element root=dokument.getDocumentElement();
				NodeList Czytelnicy=root.getElementsByTagName("Czytelnik");
				for(int i=0;i<Czytelnicy.getLength();i++)
				{
					String imie=((Element)Czytelnicy.item(i)).getAttribute("Imie");
					String nazwisko=((Element)Czytelnicy.item(i)).getAttribute("Nazwisko");
					String ulica=((Element)Czytelnicy.item(i)).getAttribute("Ulica");
					String nr_domu=((Element)Czytelnicy.item(i)).getAttribute("nr_domu");
					String nr_mieszkania=((Element)Czytelnicy.item(i)).getAttribute("nr_mieszkania");
					int nr_karty=Integer.parseInt(((Element)Czytelnicy.item(i)).getAttribute("nr_karty"));
					String kod=((Element)Czytelnicy.item(i)).getAttribute("Kod");
					String miejscowosc=((Element)Czytelnicy.item(i)).getAttribute("Miejscowosc");
					JFrGlowne.czytelnicy.add(new Czytelnik(nr_karty, imie,nazwisko,ulica,nr_domu,nr_mieszkania,kod,miejscowosc));
					for(int j=0;j<10;j++)
					{
						String wyp=""+(((Element)Czytelnicy.item(i)).getAttribute("Ksiazka_"+j));
						if(wyp.compareTo("") != 0)
						{
							JFrGlowne.czytelnicy.get(JFrGlowne.czytelnicy.size()-1).wypożyczone.add(wyp);
							//System.err.println(JFrGlowne.czytelnicy.get(i).wypożyczone.get(j));
						}
					}
					
					//System.err.println(imie+" "+nazwisko+" "+nr_karty+" " +ulica + " " + nr_domu + " " +nr_mieszkania);
					
					//String imie=((Element)Książki.item(i)).toString().getAttribute("Imie_autora");
				}
				JOptionPane.showMessageDialog(this,"Wczytano " + Czytelnicy.getLength() + " czytelników z pliku "+ fc.getSelectedFile(),"Komunikat",JOptionPane.INFORMATION_MESSAGE);
				log.info("Wczytano " + Czytelnicy.getLength() + " czytelników z pliku " + fc.getSelectedFile());
				}
			} 
			catch(Exception ex)
			{
				JOptionPane.showMessageDialog(this,"Błąd przy otwieraniu pliku " + fc.getSelectedFile(),"Błąd",JOptionPane.ERROR_MESSAGE);
				log.warning("Błąd przy otwieraniu bazy czytelników z pliku " + fc.getSelectedFile());
				log.warning("Stos: " + ex.getStackTrace());
			}
				
			
		}
		if(komenda == "Zapisz bazę czytelników") 
		{
			log.info("Wybieranie pliku do zapisania bazy czytelników");
			final JFileChooser fc = new JFileChooser();
			fc.setDialogTitle("Zapisz bazę czytelników");
			fc.setCurrentDirectory(new File(sciezka_czytelnicy));
			//FileFilter filtr=new FileFilter();
//			In response to a button click:
			fc.showSaveDialog(this);
			System.err.println(fc.getSelectedFile());
			try
			{
				File plik=fc.getSelectedFile();
				if(plik != null)
				{
				DocumentBuilderFactory fabr=DocumentBuilderFactory.newInstance();
				DocumentBuilder parser=fabr.newDocumentBuilder();
				Document dokument=parser.newDocument();
				Element root=dokument.createElement("Czytelnicy");
				
				dokument.appendChild(root);
				for(int i=0; i<JFrGlowne.czytelnicy.size();i++)
				{
				czytelnicy.get(i).zapisz(dokument,root);
				}
				Transformer przekszt=TransformerFactory.newInstance().newTransformer();
				Source zrodlo = new DOMSource(dokument);
				//File plik=fc.getSelectedFile();
				Result wyjscie=new StreamResult(plik);
				przekszt.transform(zrodlo, wyjscie);
				JOptionPane.showMessageDialog(this,"Zapisano do pliku " + fc.getSelectedFile(),"Komunikat",JOptionPane.INFORMATION_MESSAGE);
				log.info("Zapisano bazę czytelników do pliku " + fc.getSelectedFile());
				}
			} catch(Exception ex)
			{
				JOptionPane.showMessageDialog(this,"Błąd przy zapisywaniu pliku " + fc.getSelectedFile(),"Błąd",JOptionPane.ERROR_MESSAGE);
				log.warning("Błąd przy zapisywaniu pliku " + fc.getSelectedFile());
				log.warning("Stos: " + ex.getStackTrace());
			}
			
		}
		if(komenda == "Zakończ pracę programu") 
		{
			log.info("Wybrano opcję zakończenia pracy programu");
			System.exit(0);
		}
		if(komenda == "Dodaj książkę") 
		{
			log.info("Wybrano opcję dodawanie książki");
			new JFrDodajKsiazke();
			
		}
		if(komenda == "Szukaj książki") 
		{
			log.info("Wybrano opcję szukania książki");
			new JFrSzukajKsiazki();
			
		}
		if(komenda == "Lista książek") 
		{
			log.info("Wybrano opcję wyświetlania listy książek");
			new JFrListaKsiazek();
			//JOptionPane.showMessageDialog(this,"Nie zaimplementowane","Komunikat",JOptionPane.INFORMATION_MESSAGE);
			
		}
		if(komenda == "Dodaj czytelnika") 
		{
			log.info("Wybrano opcję dodania czytelnika");
			new JFrDodajCzytelnika();
			
		}
		if(komenda == "Szukaj czytelnika") 
		{
			log.info("Wybrano opcję szukania czytelnika");
			new JFrSzukajCzytelnika();
			
		}
		if(komenda == "Lista czytelników") 
		{
			log.info("Wybrano opcję wyświetlania listy czytelników");
			new JFrListaCzytelnikow();
			
			//JOptionPane.showMessageDialog(this,"Nie zaimplementowane","Komunikat",JOptionPane.INFORMATION_MESSAGE);
			
		}
		if(komenda == "Wypożycz książkę") 
		{
			log.info("Wybrano opcję wypożyczania książki");
			new JFrWypozyczKsiazke();
			
		}
		if(komenda == "Oddaj książkę") 
		{
			log.info("Wybrano opcję oddawania książki");
			new JFrOddajKsiazke();
			
		}
		if(komenda == "Wygląd") 
		{
			log.info("Wybrano opcję zmiany wyglądu");
			new JFrWyglad();
	  	}
		if(komenda == "Ścieżki") 
		{
			log.info("Wybrano opcję zmiany ścieżek do baz ksiązek i czytelników");
			new JFrSciezki();
			//JOptionPane.showMessageDialog(this,"Nie zaimplementowane","Komunikat",JOptionPane.INFORMATION_MESSAGE);
			
		}
		if(komenda == "Odswież okno")
		{
			try 
			{
			UIManager.setLookAndFeel(JFrGlowne.ui_styl);
			SwingUtilities.updateComponentTreeUI(this);
			log.info("Odświeżono okno");
			} 
			catch (Exception wyjatek) 
			{
				JOptionPane.showMessageDialog(null,"Nie udało się zmienić wyglądu!","Błąd",JOptionPane.ERROR_MESSAGE);
				log.warning("Nie udało się zmienić wyglądu programu");
				log.warning("Stos: " + wyjatek.getStackTrace());
			}
		}
		if(komenda == "Zapisz opcje") 
		{
			try
			{
				//System.err.println(plik);
				DocumentBuilderFactory fabr=DocumentBuilderFactory.newInstance();
				DocumentBuilder parser=fabr.newDocumentBuilder();
				Document dokument=parser.newDocument();
				Element root=dokument.createElement("Opcje");
				dokument.appendChild(root);
				Element elem=dokument.createElement("Ustawienia");
				elem.setAttribute("ui_styl",JFrGlowne.ui_styl);
				elem.setAttribute("sciezka_czytelnicy",JFrGlowne.sciezka_czytelnicy);
				elem.setAttribute("sciezka_ksiazki", JFrGlowne.sciezka_ksiazki);
				root.appendChild(elem);
				Transformer przekszt = TransformerFactory.newInstance().newTransformer();
				Source zrodlo=new DOMSource(dokument);
				File plik=new File(JFrGlowne.ustawienia);
				Result wyjscie=new StreamResult(plik);
				przekszt.transform(zrodlo, wyjscie);
				JOptionPane.showMessageDialog(this,"Zapisano ustawienia do pliku " + JFrGlowne.ustawienia ,"Komunikat",JOptionPane.INFORMATION_MESSAGE);
				log.info("Zapisano ustawienia programu do pliku " + JFrGlowne.ustawienia);
				
			} catch(Exception ex)
			{
				JOptionPane.showMessageDialog(this,"Błąd przy zapisywaniu pliku ustawień " + JFrGlowne.ustawienia,"Błąd",JOptionPane.ERROR_MESSAGE);
				log.warning("Nie udało się zapisać pliku ustawień " + JFrGlowne.ustawienia);
				log.warning("Stos: " + ex.getStackTrace());
			}
		}
		if(komenda == "Wyświetl statystyki") 
		{
			int wypozyczonych=0;
			for(int i=0;i<JFrGlowne.czytelnicy.size();i++)
			{
				wypozyczonych=wypozyczonych+JFrGlowne.czytelnicy.get(i).wypożyczone.size();
				//System.err.println(wypozyczonych);
			}
				
			JOptionPane.showMessageDialog(this,"Książek w bazie: " + ksiazki.size() + "\n" +  "Czytelników w bazie: " + czytelnicy.size() + "\nWypożyczonych książek: " + wypozyczonych,"Statystyka",JOptionPane.INFORMATION_MESSAGE);
			log.info("Statystyki: książek " + ksiazki.size() + ", czytelników " + czytelnicy.size() + ", wypożyczonych książek " + wypozyczonych);
		}
		if(komenda == "Tematy pomocy") 
		{
			JOptionPane.showMessageDialog(this,"Nie zaimplementowane","Komunikat",JOptionPane.INFORMATION_MESSAGE);
			
		}
		if(komenda == "About") 
		{
			JOptionPane.showMessageDialog(this,"Program obsługi biblioteki\nCreated by Piotr Leżoń\nw21826","About",JOptionPane.YES_OPTION);
			
		}
	}


}
