package zemplen.ui;

import static hibergui.HiberGUI.NOT_NULL;
import static hibergui.HiberGUI.NONE;
import hibergui.hibernate.HibernateForm;
import hibergui.property.TimeEdit1;

import java.text.DateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

import zemplen.model.Allomas;
import zemplen.model.Reszido;
import zemplen.model.Verseny;

public class ReszidoForm extends HibernateForm<Reszido> {
	
	Text txtVerseny;
	AllomasCombo eAllomas;
	RajtszamCombo eRajtszam;
	TimeEdit1 eIdo;
	
	public ReszidoForm(Composite parent, int style) {
		super(parent, style);
		
		setWindowTitle("Részidők");
		
		txtVerseny.setEnabled(false);
//		eIdo.setDefault(DateEdit.today);
	}

	public void fixVerseny(Verseny v) {
		eAllomas.fixVerseny(v);
		eRajtszam.fixVerseny(v);
		txtVerseny.setText(v.getElnevezes());
	}
	
	@Override
	protected Composite createFields(Composite cptParent) {
        Composite cpt = new Composite(cptParent, SWT.BORDER);

        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 2;
        cpt.setLayout(gridLayout);
        
        GridData data;
        
        new Label(cpt, SWT.NONE).setText("Verseny:");
        txtVerseny = new Text(cpt, SWT.BORDER);
        data = new GridData(GridData.FILL_HORIZONTAL);
        txtVerseny.setLayoutData(data);

        new Label(cpt, SWT.NONE).setText("Állomás:");
        eAllomas = new AllomasCombo(this, cpt, NOT_NULL);
        eAllomas.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        
        new Label(cpt, SWT.NONE).setText("Versenyző:");
        eRajtszam = new RajtszamCombo(this, cpt, NOT_NULL);
        eRajtszam.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        
        new Label(cpt, SWT.NONE).setText("Idő:");
        eIdo = new TimeEdit1(this, cpt, NONE, "ido", "idő");
        eIdo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        
        return cpt;
	}

    @Override
    protected void save(Reszido reszido) {
        super.save(reszido);
        Allomas allomas= eAllomas.get();
        Set<Reszido> reszidok = allomas.getReszidok();
        if (reszidok  == null)
        	allomas.setReszidok(reszidok = new HashSet<Reszido>());
        reszidok.add(reszido);
    }
    
    @Override
    protected void delete(Reszido reszido) {
        super.delete(reszido);
        eAllomas.get().getReszidok().remove(reszido);
    }
	
    @Override
    protected void createColumnsForTable() {
        addColumn(SWT.LEFT, "versenyzo.rajtszam", "Rajtszám", 80);
        addColumn(SWT.LEFT, "ido", "Idő", 120);
    }

    @Override
	protected String getColumnText(Reszido reszido, int columnIndex) {
        if (columnIndex == 1) {
        	Date time = reszido.getIdo();
        	if (time == null)
        		return "";
        	return DateFormat.getTimeInstance().format(time);
        }
        return super.getColumnText(reszido, columnIndex);
    }
}
