import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;


/**
 * @author DB_Team
 *
 * The GUI, you don't have to change this
 */

public class DBGameGUI extends JPanel {

    private	ActionListener listen;
	private JTextArea systemQueryArea, systemAnswerArea;
	private JTextField queryField, answerField;
	private JButton queryButton, answerButton;
	private GridBagConstraints constraints;
	   
	public DBGameGUI(ActionListener l){
	    super(new GridBagLayout());
	    listen = l;
        constraints = new GridBagConstraints();
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.fill = GridBagConstraints.HORIZONTAL;
		buildMain();
	}
	
	private void buildMain(){
		buildSystemQuestion();
		buildCenter();
		buildSystemAnswer();
	}
	
	public JMenu getMenu(){
		JMenu gameMenu=new JMenu("Game");
		JMenuItem temp;
		gameMenu.add(temp=new JMenuItem("New Game"));
		temp.addActionListener(listen);
		gameMenu.add(temp=new JMenuItem("Insert Questions"));
		temp.addActionListener(listen);
		gameMenu.addSeparator();
		gameMenu.add(temp=new JMenuItem("Highscore"));
		temp.addActionListener(listen);
		gameMenu.addSeparator();
		gameMenu.add(temp=new JMenuItem("Exit Game"));
		temp.addActionListener(listen);
		return gameMenu;
		
	}
	
	private void buildSystemQuestion(){
		systemQueryArea=new JTextArea("Systemfrage");
		systemQueryArea.setPreferredSize(new Dimension(800,150));
		JPanel temp=new JPanel();
		temp.setPreferredSize(new Dimension(800,150));
		temp.add(systemQueryArea);
		systemQueryArea.setEditable(false);
		constraints.gridheight = 4;
		add(temp, constraints);
	}
	
	private void buildCenter(){
		JPanel centerPane=new JPanel();
		centerPane.setLayout(new GridLayout(2,1));
		centerPane.add(buildUserAnswer());
		centerPane.add(buildUserQuery());
		constraints.gridheight = 1;
		add(centerPane, constraints);
	}
	
	private JPanel buildUserAnswer(){
		answerField=new JTextField("Antwort an das System",60);
		// answerField.setPreferredSize(new Dimension(600,30));
		answerButton=new JButton("Choose");
		answerButton.setToolTipText("First chose a type from the menu");
		answerButton.addActionListener(listen);
		JPanel answerPanel=new JPanel();
		answerPanel.add(answerField);
		answerPanel.add(answerButton);
		return answerPanel;
	}

	private JPanel buildUserQuery(){
		queryField=new JTextField("Anfrage an die Datenbank",60);
		//queryField.setPreferredSize(new Dimension(600,30));
		queryButton=new JButton("Game Type");
		queryButton.setToolTipText("First chose a type from the menu");
		queryButton.addActionListener(listen);
		JPanel queryPanel=new JPanel();
		queryPanel.add(queryField);
		queryPanel.add(queryButton);
		return queryPanel;
	}

	private void buildSystemAnswer(){
		systemAnswerArea=new JTextArea("Systemantwort");
		JScrollPane temp=new JScrollPane(systemAnswerArea);
		temp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
		temp.setPreferredSize(new Dimension(600,250));
		systemAnswerArea.setEditable(false);
		constraints.gridheight = 8;
		add(temp, constraints);
	}
	
	public void setInputModus(){
		answerButton.setText("Clear");
		answerButton.setToolTipText("Clears both text fields");
		queryButton.setText("Insert");
		queryButton.setToolTipText("Insert new question into DB");
		answerField.setText("Insert new question here");
		queryField.setText("Insert new query here");
	}
	
	public void setGameModus(){
		answerButton.setText("Answer");
		answerButton.setToolTipText("Sends answer to system");
		queryButton.setText("Query");
		queryButton.setToolTipText("Submit query to DB");
	}
	
	/**
	 * @return Returns the answerFields Text.
	 */
	public String getAnswerFieldText() {
		return answerField.getText();
	}
	/**
	 * @param answerField The answerFields Text to set.
	 */
	public void setAnswerFieldText(String answerField) {
		if (this.answerField!=null)
		this.answerField.setText(answerField);
	}
	/**
	 * @return Returns the queryFields Text.
	 */
	public String getQueryFieldText() {
		return queryField.getText();
	}
	/**
	 * @param queryField The queryFields Text to set.
	 */
	public void setQueryFieldText(String queryField) {
		this.queryField.setText(queryField);
	}
	/**
	 * @return Returns the systemAnswerAreas Text.
	 */
	public String getSystemAnswerAreaText() {
		return systemAnswerArea.getText();
	}
	/**
	 * @param systemAnswerArea The systemAnswerAreas new Text to set.
	 */
	public void setSystemAnswerAreaText(String systemAnswerArea) {
		this.systemAnswerArea.setText(systemAnswerArea);
	}
	/**
	 * @return Returns the systemQueryAreas Text.
	 */
	public String getSystemQueryAreaText() {
		return systemQueryArea.getText();
	}
	/**
	 * @param systemQueryArea The systemQueryAreas Text to set.
	 */
	public void setSystemQueryAreaText(String systemQueryArea) {
		this.systemQueryArea.setText(systemQueryArea);
	}

    /* (non-Javadoc)
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        
    }
    
	
	/*
	 * create the GUI 
	 */
    public void createAndShowGUI() {
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("Geography Quiz");
        frame.setDefaultCloseOperation(
                          JFrame.EXIT_ON_CLOSE);
        frame.setJMenuBar(new JMenuBar());
        frame.getJMenuBar().add(getMenu());
        setOpaque(true);
        frame.setContentPane(this);
        frame.pack();
        frame.setVisible(true);
    }
    
}

