package de.fitsample.timerecording.ui;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

import de.fitsample.timerecording.Time;
import de.fitsample.timerecording.TimeFrame;
import de.fitsample.timerecording.TimeRecord;
import de.fitsample.timerecording.TimeRecording;

/**
 * The UI for the TimeRecording.
 * 
 * @author Ralf
 */
public class TimeRecordingUI extends JFrame {

    protected JButton addButton;

    protected JTextField dayTextField;

    protected JTextField fromTextField;

    protected JTextField toTextField;

    protected JTable timeRecordTable;

    protected TimeRecording timeRecording;

    /**
     * Creates the TimeRecordingFrame
     */
    public TimeRecordingUI() {
        super("Time Recording");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        init();
    }

    /**
     * Initializes the UI.
     */
    private void init() {
        FormLayout layout = new FormLayout(
                "3dlu, pref, 1dlu, left:pref, 5dlu, pref, 1dlu, left:pref, 5dlu, pref, 1dlu, left:pref, 10dlu, pref, 3dlu", // columns
                "3dlu, p, 9dlu, p:grow, 3dlu"); // rows

        timeRecording = new TimeRecording();
        timeRecordTable = new TimeRecordingTable(timeRecording);
        dayTextField = new JTextField();
        dayTextField.setColumns(2);
        fromTextField = new JTextField();
        fromTextField.setColumns(5);
        toTextField = new JTextField();
        toTextField.setColumns(5);
        addButton = new JButton("add");
        addButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                int day = Integer.parseInt(dayTextField.getText());
                Time from = Time.valueOf(fromTextField.getText());
                Time to = Time.valueOf(toTextField.getText());
                timeRecording.addRecord(new TimeRecord(day, new TimeFrame(from,
                        to)));
            }
        });

        PanelBuilder builder = new PanelBuilder(layout);
        builder.setDefaultDialogBorder();
        CellConstraints cc = new CellConstraints();
        builder.add(new JLabel("day"), cc.xy(2, 2));
        builder.add(dayTextField, cc.xy(4, 2));
        builder.add(new JLabel("from"), cc.xy(6, 2));
        builder.add(fromTextField, cc.xy(8, 2));
        builder.add(new JLabel("to"), cc.xy(10, 2));
        builder.add(toTextField, cc.xy(12, 2));
        builder.add(addButton, cc.xy(14, 2));

        builder.add(new JScrollPane(timeRecordTable), cc.xyw(2, 4, 14));
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(builder.getPanel(), BorderLayout.CENTER);
    }

    public static void main(String[] args) {
        TimeRecordingUI frame = new TimeRecordingUI();
        frame.pack();
        frame.setVisible(true);
    }
}
