package de.roboshock.gui.util;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class CloseButtonFrame extends PositionKeepingJFrame {
	
	private static final long serialVersionUID = 1L;
	private JPanel buttonPanel;
	JPanel p;
	public boolean exitOnClose = false;

	public CloseButtonFrame(String title) {
		this(title, null);
	}

	public CloseButtonFrame(String title, JComponent mainPanel) {
		super(title);

		buttonPanel = new JPanel();
		buttonPanel.setLayout(new FlowLayout());

		JButton close = new JButton("Close");
		close.addActionListener(new AbstractAction () {
			private static final long serialVersionUID = 1L;
			public void actionPerformed(ActionEvent e) {
				frameClosing();
				CloseButtonFrame.this.setVisible(false);
				CloseButtonFrame.this.dispose();
				if (exitOnClose) System.exit(0);
	    	}});
		buttonPanel.add(close);

		p = new JPanel();
		p.setLayout(new BorderLayout());
		p.add(buttonPanel, BorderLayout.SOUTH);
		//mainPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
		if (mainPanel != null) {
			p.add(mainPanel, BorderLayout.CENTER);
		}
		
		getContentPane().add(p);
		setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 
	}
	
	public void frameClosing() {
		// can be overwritten
	}
	
	public void addMainPanel(JPanel mainPanel) {
		p.add(mainPanel, BorderLayout.CENTER);
	}

	public JPanel getButtonPanel() {
		return buttonPanel;
	}

}
