package keret;

import jatek0001.Jatek0001;
import jatek0002.Jatek0002;
import jatek0002Demo.Jatek0002Demo;
import jatek0003.Jatek0003;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;

import customize.Custom;

import fajlkezeles.Fajlkezelo;


public class JatekGUI extends JPanel implements ActionListener {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 881274259982962449L;
	
	protected JTextField urlTextField = new JTextField(20);
	
	protected JPanel centerPanelLoadFile=new JPanel();
	protected JPanel centerPanelWelcome=new JPanel();
	protected JPanel centerPanelLoadFileFromURL = new JPanel();
	    
    protected JLabel gameInfo;
    protected JButton closeGame;
    protected JButton playGame;
    protected JButton saveGame;
    protected JButton viewResults;
    protected JButton viewInputs;
    
    JMenu menuGames = new JMenu("Játékok");
    JMenu menuFile = new JMenu("Fájl");
    JMenu menuHelp = new JMenu("Segítség");
    
    //Játékok
		//Játék0001
    	protected static Jatek0001 jk0001= new Jatek0001();
    	protected static Jatek0002 jk0002= new Jatek0002();
    	protected static Jatek0002Demo jk0002Demo= new Jatek0002Demo();
    	protected static Jatek0003 jk0003= new Jatek0003();
    //Játékok-vége
    	
    protected String code="";
    protected Fajlkezelo fProp;
    
	public JatekGUI(URL base,String propName,String phpName){
		super(new BorderLayout());   
		String urlString=base.toString();
		URL prop;
		try {
			prop = new URL(urlString+propName);
			fProp=new Fajlkezelo(prop.openStream());
		} catch (MalformedURLException e) {
			//System.out.println("ajaj");
			e.printStackTrace();
		} catch (IOException e) {
			//System.out.println("ajaj2");
			e.printStackTrace();
		}
		jk0003.getJgd().setCodeBase(base);
		jk0003.getJgd().setPhpName(phpName);
		//System.out.println(phpName);
		//System.out.println(propName);
		//northPanel
		JLabel head = new JLabel("A kétszemélyes játékok interaktív és geometriai reprezentációi",JLabel.CENTER);
		head.setForeground(Color.decode(Custom.getBaseTextColor()));
		
		JMenuBar menuBar = new JMenuBar();
			menuFile = new JMenu("Fájl");
				menuFile.add(make("Játék betöltése fájlból"));
				menuFile.add(make("Játék betöltése URL megadással"));
				
				//menuFile.addSeparator();
				//menuFile.add(make("Eredmények betöltése"));
				
				//menuFile.addSeparator();
				//menuFile.add(make("Kilépés"));
				menuFile.setForeground(Color.decode(Custom.getMenuElementsColor()));
			menuGames = new JMenu("Játékok");
				menuGames.add(make("Játék0001 példa"));
				menuGames.add(make("Játék0002 példa"));
				menuGames.add(make("Játék0002Demo"));
				menuGames.add(make("Játék0003 példa"));
				menuGames.setForeground(Color.decode(Custom.getMenuElementsColor()));
							
			menuHelp = new JMenu("Segítség");
				menuHelp.add(make("Szakdolgozat megnyitása"));
				menuHelp.add(make("Névjegy"));
				menuHelp.setForeground(Color.decode(Custom.getMenuElementsColor()));
				
		menuBar.add(menuFile);
		menuBar.add(menuGames);
		menuBar.add(menuHelp);
		menuBar.setBackground(Color.decode(Custom.getMenuBarColor()));
		menuBar.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
        JPanel northPanel=new JPanel(new GridLayout(0,1));
        northPanel.setBackground(Color.decode(Custom.getNorthPanelColor()));
        northPanel.add(head);
        northPanel.add(menuBar);
        //northPanel.setBorder(BorderFactory.createLineBorder(Color.black));
        
		//westPanel
        playGame = new JButton("Játék indítása");
        playGame.addActionListener(this);
        playGame.setEnabled(false);
        playGame.setAlignmentX(CENTER_ALIGNMENT);
        playGame.setForeground(Color.decode(Custom.getBaseTextColor()));
        
        viewResults = new JButton("Eredmények");
        viewResults.addActionListener(this);
        viewResults.setEnabled(false);
        viewResults.setAlignmentX(CENTER_ALIGNMENT);
        viewResults.setForeground(Color.decode(Custom.getBaseTextColor()));
        
        viewInputs = new JButton("Inputok");
        viewInputs.addActionListener(this);
        viewInputs.setEnabled(false);
        viewInputs.setAlignmentX(CENTER_ALIGNMENT);
        viewInputs.setForeground(Color.decode(Custom.getBaseTextColor()));
        
        saveGame = new JButton("Eredmény mentése: Excel");
        saveGame.addActionListener(this);
        saveGame.setEnabled(false);
        saveGame.setAlignmentX(CENTER_ALIGNMENT);
        saveGame.setForeground(Color.decode(Custom.getBaseTextColor()));
        
        closeGame = new JButton("Játék bezárása");
        closeGame.addActionListener(this);
        closeGame.setEnabled(false);
        closeGame.setAlignmentX(CENTER_ALIGNMENT);
        closeGame.setForeground(Color.decode(Custom.getBaseTextColor()));
        
        JLabel exitWarn = new JLabel("<html><p align=center>Új játék betöltéséhez be kell zárnia az éppen megnyitott játékot!</p></html>");
	    exitWarn.setAlignmentX(CENTER_ALIGNMENT);
	    exitWarn.setForeground(Color.decode(Custom.getBaseTextColor()));
        JPanel westPanel=new JPanel();
        Box box = Box.createVerticalBox();
	    box.setPreferredSize(new Dimension(200,580));
        gameInfo=new JLabel("<html><table border=1 width=180>" +
        		"					<tr>" +
        		"						<td colspan=2 align=center>Információk a játékról</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right width=50>Kód</td><td width=130></td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Név</td><td></td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Szerző</td><td></td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Dátum</td><td></td>" +
        		"					</tr>"+
        		"					</table></html>");
	    gameInfo.setAlignmentX(CENTER_ALIGNMENT);
	    gameInfo.setForeground(Color.decode(Custom.getBaseTextColor()));
        box.add(gameInfo);
        box.add(Box.createVerticalStrut(10));
        box.add(playGame);
        box.add(Box.createVerticalStrut(10));
        box.add(viewInputs);
        box.add(Box.createVerticalStrut(10));
        box.add(viewResults);
        box.add(Box.createVerticalStrut(10));
        box.add(saveGame);
        box.add(Box.createVerticalStrut(10));
        box.add(closeGame);
        box.add(Box.createVerticalStrut(10));
        box.add(exitWarn);
        westPanel.add(box);
        westPanel.setBackground(Color.decode(Custom.getWestPanelColor()));
        //westPanel.setBorder(BorderFactory.createLineBorder(Color.black));
        
        //mainCenterPanel     
        JPanel mainCenterPanel=new JPanel(new FlowLayout());
        mainCenterPanel.setPreferredSize(new Dimension(550,500));
        
        	
		    //Panel - Welcome
        	centerPanelWelcome.setLayout(new FlowLayout());
        	centerPanelWelcome.setPreferredSize(new Dimension(550,500));
		    JLabel welcomeLabel=new JLabel("<html>"+fProp.getWelcomeLabel()+"</html>");
		    welcomeLabel.setForeground(Color.decode(Custom.getBaseTextColor()));
		    centerPanelWelcome.add(welcomeLabel);
		    centerPanelWelcome.setBackground(Color.decode(Custom.getCenterPanelColor()));
		    centerPanelWelcome.setBorder(BorderFactory.createLineBorder(Color.decode(Custom.getBorderColor()),Custom.getBorderThickness()));
		    
		    //Panel - LoadFileFromURL
        	centerPanelLoadFileFromURL.setLayout(new FlowLayout());
	        JLabel urlAddress=new JLabel("Adja meg a teljes URL címet!");
        	
        	JButton loadFileFromURL = new JButton("Játék betöltése URL-ből");
        	loadFileFromURL.addActionListener(this);
        	loadFileFromURL.setEnabled(true);
	        
		    centerPanelLoadFileFromURL.add(urlAddress);
		    centerPanelLoadFileFromURL.add(urlTextField);
		    centerPanelLoadFileFromURL.add(loadFileFromURL);
		    centerPanelLoadFileFromURL.setBackground(Color.decode(Custom.getCenterPanelColor()));
		    centerPanelLoadFileFromURL.setBorder(BorderFactory.createLineBorder(Color.decode(Custom.getBorderColor()),Custom.getBorderThickness()));
		    
		setPanel("centerPanelWelcome");
	    mainCenterPanel.add(centerPanelWelcome);
		mainCenterPanel.add(centerPanelLoadFileFromURL);
	    mainCenterPanel.add(jk0001.getJk0001());
	    mainCenterPanel.add(jk0002.getJk0002());
	    mainCenterPanel.add(jk0002Demo.getJk0002Demo());
	    mainCenterPanel.add(jk0003.getJk0003());
	    mainCenterPanel.setBackground(Color.decode(Custom.getMainCenterPanelColor()));
        //southPanel
        JLabel subtitle=new JLabel("Debreceni Egyetem Informatikai Kar - 2010 - Szakdolgozat",JLabel.RIGHT);
        
        JPanel southPanel=new JPanel(new GridLayout(1,1));
        southPanel.add(subtitle);
        subtitle.setVisible(true);
        subtitle.setForeground(Color.decode(Custom.getBaseTextColor()));
        southPanel.setBackground(Color.decode(Custom.getSouthPanelColor()));
        
        //mainPanel
        JPanel mainPanel = new JPanel(new BorderLayout());
        mainPanel.add(northPanel,BorderLayout.NORTH);
        mainPanel.add(westPanel,BorderLayout.WEST);
        mainPanel.add(southPanel,BorderLayout.SOUTH);
        mainPanel.add(mainCenterPanel,BorderLayout.CENTER);
        
        //mainPanel.setBorder(BorderFactory.createLineBorder(Color.black));
        mainPanel.setPreferredSize(new Dimension(800,600));
        add(mainPanel);

	}
	
	/**
	 * Egy új menüponttal tér vissza, és létrehoz egy actiont a menüponthoz.
	 * @param name String
	 * @return m JMenuItem
	 */
	private JMenuItem make(String name) {
	      JMenuItem m = new JMenuItem(name);
	      m.setBackground(Color.decode(Custom.getMenuBarColor()));
	      m.setForeground(Color.decode(Custom.getMenuElementsColor()));
	      m.addActionListener(this);
	      return m;
	}
	/**
	 * A megadott paraméter segítségével eldönti, hogy melyik panelre kell állítani a
	 * középső területet a képernyőn.
	 * @param s String
	 */
	private void setPanel(String s){
		if(s.equals("centerPanelWelcome")) {
			//true
			centerPanelWelcome.setVisible(true);
			//false
			jk0001.getJk0001().setVisible(false);
			jk0002.getJk0002().setVisible(false);
			jk0002Demo.getJk0002Demo().setVisible(false);
			jk0003.getJk0003().setVisible(false);
			centerPanelLoadFileFromURL.setVisible(false);
		}else if(s.equals("j0001p")) {
			//true
			jk0001.getJk0001().setVisible(true);
			//false
			jk0002.getJk0002().setVisible(false);
			jk0002Demo.getJk0002Demo().setVisible(false);
			jk0003.getJk0003().setVisible(false);
			centerPanelWelcome.setVisible(false);
			centerPanelLoadFileFromURL.setVisible(false);
		}else if(s.equals("j0002p")) {
			//true
			jk0002.getJk0002().setVisible(true);
			//false
			jk0001.getJk0001().setVisible(false);
			jk0002Demo.getJk0002Demo().setVisible(false);
			jk0003.getJk0003().setVisible(false);
			centerPanelWelcome.setVisible(false);
			centerPanelLoadFileFromURL.setVisible(false);
		}else if(s.equals("j0002pDemo")) {
			//true
			jk0002Demo.getJk0002Demo().setVisible(true);
			//false
			jk0001.getJk0001().setVisible(false);
			jk0002.getJk0002().setVisible(false);
			jk0003.getJk0003().setVisible(false);
			centerPanelWelcome.setVisible(false);
			centerPanelLoadFileFromURL.setVisible(false);
		}else if(s.equals("centerPanelLoadFileFromURL")) {
			//true
			centerPanelLoadFileFromURL.setVisible(true);
			//false
			centerPanelWelcome.setVisible(false);
			jk0001.getJk0001().setVisible(false);
			jk0002.getJk0002().setVisible(false);
			jk0003.getJk0003().setVisible(false);
			jk0002Demo.getJk0002Demo().setVisible(false);
		}else if(s.equals("j0003p")) {
			//true
			jk0003.getJk0003().setVisible(true);
			//false
			jk0001.getJk0001().setVisible(false);
			jk0002Demo.getJk0002Demo().setVisible(false);
			jk0002.getJk0002().setVisible(false);
			centerPanelWelcome.setVisible(false);
			centerPanelLoadFileFromURL.setVisible(false);
		}else if(s.equals("")) {
			;
		}
	}

	/**
	 * Betölti a felhasználó által kiválasztott fájlt. Ha nem sikerül, hibaüzenetet ad.
	 */
	@SuppressWarnings("deprecation")
	private void loadFile() {
		Frame filePanel=new Frame();
		FileDialog fd = new FileDialog(filePanel, "Válasszon ki egy fájlt!",FileDialog.LOAD);
		fd.show();
		String selectedItem = fd.getFile();
		if (selectedItem == null) {
			JOptionPane.showMessageDialog(this,"Nem választott ki fájlt!",
			         "Figyelmeztetés",JOptionPane.WARNING_MESSAGE);
		} else {
			Fajlkezelo f = new Fajlkezelo(fd.getDirectory() + File.separator + fd.getFile());
			if(f.isValid()){
				code=f.getCode(f.getGameDoc());
				whichGame(f);
			}else{
				JOptionPane.showMessageDialog(this,"Hibás formátumú fájl!",
				         "Hiba",JOptionPane.ERROR_MESSAGE);
			}
		}
		
	}
	/**
	 * A meg adtott paraméter egy urlString, ahonnan a betöltés megpróbáljuk elvégezni.
	 * Ha sikerül, létrehozzuk a megfelelő játékot. És beálítjuk a code-ot.
	 * @param urlString Strimg
	 */
	private void loadFromURL(String urlString){
		Fajlkezelo f = new Fajlkezelo(urlString);
		if(f.isValid()){
			code=f.getCode(f.getGameDoc());
			whichGame(f);
		}else{
			JOptionPane.showMessageDialog(this,"Hibás formátumú fájl!",
			         "Hiba",JOptionPane.ERROR_MESSAGE);
		}
		
	}
	/**
	 * Lekérdezzük a validált játék kódját, és beállítjuk az alapértékeket. 
	 * @param f HandleFile
	 */
	private void whichGame(Fajlkezelo f){
		closeGame.setEnabled(true);
        playGame.setEnabled(true);
        viewResults.setEnabled(true);
        viewInputs.setEnabled(true);
        saveGame.setEnabled(true);
        menuGames.setEnabled(false);
        menuFile.setEnabled(false);
		if("jatek0001".equals(f.getCode(f.getGameDoc()))){
			jk0001.loadData(f.getGameDoc());
			setPanel("j0001p");
			fillAndShowLabels(jk0001);
		}else if("jatek0002".equals(f.getCode(f.getGameDoc()))){
			jk0002.loadData(f.getGameDoc());
			setPanel("j0002p");
			fillAndShowLabels(jk0002);
		}else if("jatek0003".equals(f.getCode(f.getGameDoc()))){
			jk0003.loadData(f.getGameDoc());
			setPanel("j0003p");
			fillAndShowLabels(jk0003);
		}
	}
	/**
	 * Egy jatek0001-es verziót várunk, 
	 * grafikusan megjelenítjük a megfelelő adatokat.
	 * Többalakú.
	 * @param jk Jatek0001
	 */
	private void fillAndShowLabels(Jatek0001 jk){
		gameInfo.setText("<html><table border=1 width=180>" +
        		"					<tr>" +
        		"						<td colspan=2 align=center>Információk a játékról</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right width=50>Kód</td><td width=130>"+jk.getJgd().getCode()+"</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Név</td><td>"+jk.getJgd().getName()+"</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Szerző</td><td>"+jk.getJgd().getAuthor()+"</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Dátum</td><td>"+jk.getJgd().getDate()+"</td>" +
        		"					</tr>"+
        		"					</table></html>");
		jk.getJk0001().getDescription().setText("<html><table border=1 width=390>" +
        		"					<tr>" +
        		"						<td>"+ jk.getJgd().getDescription()+"</td>" +
        		"					</tr>"+
        		"					</table></html>");
		jk.getJk0001().getGameInputContent().setText(jk.getJgd().getGameInputHtmlContent());
	}
	/**
	 * Egy jatek0002-es verziót várunk, 
	 * grafikusan megjelenítjük a megfelelő adatokat.
	 * Többalakú.
	 * @param jk Jatek0002
	 */
	private void fillAndShowLabels(Jatek0002 jk){
		gameInfo.setText("<html><table border=1 width=180>" +
	        	"					<tr>" +
	        	"						<td colspan=2 align=center>Információk a játékról</td>" +
	        	"					</tr>"+
	        	"					<tr>" +
	        	"						<td align=right width=50>Kód</td><td width=130>"+jk.getJgd().getCode()+"</td>" +
	        	"					</tr>"+
	        	"					<tr>" +
	        	"						<td align=right>Név</td><td>"+jk.getJgd().getName()+"</td>" +
	        	"					</tr>"+
	        	"					<tr>" +
	        	"						<td align=right>Szerző</td><td>"+jk.getJgd().getAuthor()+"</td>" +
	        	"					</tr>"+
	        	"					<tr>" +
	        	"						<td align=right>Dátum</td><td>"+jk.getJgd().getDate()+"</td>" +
	        	"					</tr>"+
	        	"					</table></html>");
		jk.getJk0002().getDescription().setText("<html><table border=1 width=390>" +
	        	"					<tr>" +
	        	"						<td>"+ jk.getJgd().getDescription()+"</td>" +
	        	"					</tr>"+
	        	"					</table></html>");
		jk.getJk0002().getGameInputContent().setText(jk.getJgd().getGameInputHtmlContent());
		
	}
	/**
	 * Egy jatek0001-es verziót várunk, 
	 * grafikusan megjelenítjük a megfelelő adatokat.
	 * Többalakú.
	 * @param jk Jatek0001
	 */
	private void fillAndShowLabels(Jatek0003 jk){
		gameInfo.setText("<html><table border=1 width=180>" +
        		"					<tr>" +
        		"						<td colspan=2 align=center>Információk a játékról</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right width=50>Kód</td><td width=130>"+jk.getJgd().getCode()+"</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Név</td><td>"+jk.getJgd().getName()+"</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Szerző</td><td>"+jk.getJgd().getAuthor()+"</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Dátum</td><td>"+jk.getJgd().getDate()+"</td>" +
        		"					</tr>"+
        		"					</table></html>");
		jk.getJk0003().getDescription().setText("<html><table border=1 width=390>" +
        		"					<tr>" +
        		"						<td>"+ jk.getJgd().getDescription()+"</td>" +
        		"					</tr>"+
        		"					</table></html>");
		jk.getJk0003().getGameInputContent().setText(jk.getJgd().getGameInputHtmlContent());
	}
	/**
	 * Elindítja a megfelelő játékot.
	 */
	private void play(){
		if("jatek0001".equals(code)){
			jk0001.playGame();			
		}else if("jatek0002".equals(code)){
			jk0002.playGame();			
		}else if("jatek0002Demo".equals(code)){
			jk0002Demo.playGame();			
		}else if("jatek0003".equals(code)){
			playGame.setEnabled(false);
			jk0003.playGame();			
		}
	}
	/**
	 * Panel beállítása játékonként - output
	 */
	private void viewResults(){
		if("jatek0001".equals(code)){
			jk0001.getJk0001().setPanel("output");
		}else if("jatek0002".equals(code)){
			jk0002.getJk0002().setPanel("output");
		}else if("jatek0003".equals(code)){
			jk0003.getJk0003().setPanel("output");
		}
	}
	/**
	 * Panel beállítása játékonként - input
	 */
	private void viewInputs(){
		if("jatek0001".equals(code)){
			jk0001.getJk0001().setPanel("input");
		}else if("jatek0002".equals(code)){
			jk0002.getJk0002().setPanel("input");
		}else if("jatek0003".equals(code)){
			jk0003.getJk0003().setPanel("input");
		}
	}
	/**
	 * Bezárja az addig megnyitott játékot, és megnyitja az üdvözlő panelt.
	 */
	private void closeGame(){
		setPanel("centerPanelWelcome");
        closeGame.setEnabled(false);
        playGame.setEnabled(false);
        viewResults.setEnabled(false);
        saveGame.setEnabled(false);
        viewInputs.setEnabled(false);
        menuGames.setEnabled(true);
        menuFile.setEnabled(true);
        gameInfo.setText("<html><table border=1 width=180>" +
    		"					<tr>" +
    		"						<td colspan=2 align=center>Információk a játékról</td>" +
    		"					</tr>"+
    		"					<tr>" +
    		"						<td align=right width=50>Kód</td><td width=130></td>" +
    		"					</tr>"+
    		"					<tr>" +
    		"						<td align=right>Név</td><td></td>" +
    		"					</tr>"+
    		"					<tr>" +
    		"						<td align=right>Szerző</td><td></td>" +
    		"					</tr>"+
    		"					<tr>" +
    		"						<td align=right>Dátum</td><td></td>" +
    		"					</tr>"+
    		"					</table></html>");
		if("jatek0001".equals(code)){
			jk0001.closeGame();
		}else if("jatek0002".equals(code)){
			jk0002.closeGame();
		}else if("jatek0002Demo".equals(code)){
			jk0002Demo.closeGame();
		}else if("jatek0003".equals(code)){
			jk0003.closeGame();
		}
        code="";
	}
	@SuppressWarnings("deprecation")
	private void saveGame(){
		if("jatek0001".equals(code)){
			Frame filePanel=new Frame();
			File save = null;
			FileDialog fd = new FileDialog(filePanel, "Válasszon ki egy fájlt!",FileDialog.SAVE);
			fd.show();
			String selectedItem = fd.getFile();
			if (selectedItem == null) {
				JOptionPane.showMessageDialog(this,"Nem választott ki fájlt!",
				         "Figyelmeztetés",JOptionPane.WARNING_MESSAGE);
			} else {
				save=new File(fd.getDirectory() + File.separator + fd.getFile());
			}
			
			if(save!=null && jk0001.createSaveDataFormat(save)){
				JOptionPane.showMessageDialog(this,"Sikeres mentés.",
				         "Mentés",JOptionPane.INFORMATION_MESSAGE);
			}else {
				JOptionPane.showMessageDialog(this,"A mentés nem hajtható végre.",
				         "Mentés",JOptionPane.ERROR_MESSAGE);
			}
		}else if("jatek0002".equals(code)){
			Frame filePanel=new Frame();
			File save = null;
			FileDialog fd = new FileDialog(filePanel, "Válasszon ki egy fájlt!",FileDialog.SAVE);
			fd.show();
			String selectedItem = fd.getFile();
			if (selectedItem == null) {
				JOptionPane.showMessageDialog(this,"Nem választott ki fájlt!",
				         "figyelmeztetés",JOptionPane.WARNING_MESSAGE);
			} else {
				save=new File(fd.getDirectory() + File.separator + fd.getFile());
			}
			
			if(save!=null && jk0002.createSaveDataFormat(save)){
				JOptionPane.showMessageDialog(this,"Sikeres mentés.",
				         "Mentés",JOptionPane.INFORMATION_MESSAGE);
			}else{
				JOptionPane.showMessageDialog(this,"A mentés nem hajtható végre.",
				         "Mentés",JOptionPane.ERROR_MESSAGE);
			}
		}else if("jatek0003".equals(code)){
			Frame filePanel=new Frame();
			File save = null;
			FileDialog fd = new FileDialog(filePanel, "Válasszon ki egy fájlt!",FileDialog.SAVE);
			fd.show();
			String selectedItem = fd.getFile();
			if (selectedItem == null) {
				JOptionPane.showMessageDialog(this,"Nem választott ki fájlt!",
				         "Figyelmeztetés",JOptionPane.WARNING_MESSAGE);
			} else {
				save=new File(fd.getDirectory() + File.separator + fd.getFile());
			}
			
			if(save!=null && jk0003.createSaveDataFormat(save)){
				JOptionPane.showMessageDialog(this,"Sikeres mentés.",
				         "Mentés",JOptionPane.INFORMATION_MESSAGE);
			}else{
				JOptionPane.showMessageDialog(this,"A mentés nem hajtható végre.",
				         "Mentés",JOptionPane.ERROR_MESSAGE);
			}
		}
	}
	private void playJatek0002Demo(){
		code="jatek0002Demo";
		closeGame.setEnabled(true);
        menuGames.setEnabled(false);
        menuFile.setEnabled(false);
        gameInfo.setText("<html><table border=1 width=180>" +
        		"					<tr>" +
        		"						<td colspan=2 align=center>Információk a játékról</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right width=50>Kód</td><td width=130>jk0002Demo</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Név</td><td>Nash - Demo</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Szerző</td><td>Münnich Ákos</td>" +
        		"					</tr>"+
        		"					<tr>" +
        		"						<td align=right>Dátum</td><td>2010.03.20.</td>" +
        		"					</tr>"+
        		"					</table></html>");
		setPanel("j0002pDemo");
		
	}
	/**
	 * Névjegy üzenete megjelenítése.
	 */
	private void about(){
		JOptionPane.showMessageDialog(this,"Szakdolgozat - Münnich Ákos",
		         "Névjegy",JOptionPane.INFORMATION_MESSAGE);
	}
	
	/**
	 * A megfelelő akciókat innen indítjuk.
	 * @param e ActionEvent
	 */
	@Override
	 public void actionPerformed(ActionEvent e) {
	      String ac = e.getActionCommand();
	      if(ac.equals("Játék betöltése fájlból")) loadFile();
	      else if(ac.equals("Játék0001 példa")) loadFromURL(fProp.getJatek0001Example());
	      else if(ac.equals("Játék0002 példa")) loadFromURL(fProp.getJatek0002Example());
	      else if(ac.equals("Játék0002Demo")) playJatek0002Demo();
	      else if(ac.equals("Játék0003 példa")) loadFromURL(fProp.getJatek0003Example());
	      else if(ac.equals("Játék betöltése URL megadással")) setPanel("centerPanelLoadFileFromURL");
	      else if(ac.equals("Eredmények betöltése")) ;
	      else if(ac.equals("Névjegy")) about();
	      else if(ac.equals("Játék bezárása")) closeGame();
	      else if(ac.equals("Játék indítása"))play();
	      else if(ac.equals("Eredmény mentése: Excel"))saveGame();
	      else if(ac.equals("Eredmények"))viewResults();
	      else if(ac.equals("Inputok"))viewInputs();
	      else if(ac.equals("Játék betöltése URL-ből")) loadFromURL(urlTextField.getText());
	      
	      if(ac.equals("Szakdolgozat megnyitása")) {
		      try {
		          String url=fProp.getSzakdolgozatText();  
				  Runtime.getRuntime().exec( "rundll32 url.dll,FileProtocolHandler " +url);
			  } catch (IOException e1) {
			      JOptionPane.showMessageDialog(this,"A fájl nem nyitható meg.",
					         "HIBA",JOptionPane.ERROR_MESSAGE);
				  e1.printStackTrace();
			  }catch (Exception e1) {
			      JOptionPane.showMessageDialog(this,"A fájl nem nyitható meg.",
					         "HIBA",JOptionPane.ERROR_MESSAGE);
				  e1.printStackTrace();
			  }
	      }
	  }

	
}
