/*
 * Created on Aug 9, 2004
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package zemplen.ui;

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.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;

import static hibergui.HiberGUI.*;
import hibergui.hibernate.HibernateForm;
import hibergui.property.DateEdit;
import hibergui.property.RadioEdit;
import hibergui.property.StringEdit;

import zemplen.model.Kategoria;
import zemplen.model.Verseny;

/**
 * @author espakm
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class KategoriaForm extends HibernateForm<Kategoria> {
    
    VersenyCombo eVerseny;
    StringEdit eElnevezes;
    RadioEdit<Character> eNem;
    DateEdit eSzuletesiDatumKezdet, eSzuletesiDatumVeg;
    
    public KategoriaForm(Composite cptParent, int mode) {
        super(cptParent, mode);
        
        setWindowTitle("Kategóriák");
    }
    
    @Override
    protected void save(Kategoria kategoria) {
        super.save(kategoria);
        Verseny v = eVerseny.get();
        Set<Kategoria> kategoriak = v.getKategoriak();
        if (kategoriak == null)
        	v.setKategoriak(kategoriak = new HashSet<Kategoria>());
        kategoriak.add(kategoria);
    }
    
    @Override
    protected void delete(Kategoria kategoria) {
        super.delete(kategoria);
        eVerseny.get().getKategoriak().remove(kategoria);
    }
    
    @Override
    public Composite createFields(Composite cptParent) {
        Composite cpt = new Composite(cptParent, SWT.BORDER);
        
        RowLayout rowLayout;
        RowData rowData;
        
        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 2;
        cpt.setLayout(gridLayout);
        
        new Label(cpt, SWT.NONE).setText("Verseny:");
        eVerseny = new VersenyCombo(this, cpt, NOT_NULL);
        GridData data = new GridData(GridData.FILL_HORIZONTAL);
//        data.horizontalSpan = 2;
        eVerseny.setLayoutData(data);
        
        new Label(cpt, SWT.NONE).setText("Elnevezés:");
        eElnevezes = new StringEdit(this, cpt, NOT_NULL, "elnevezes", "elnevezés");
        eElnevezes.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        
        new Label(cpt, SWT.NONE).setText("Nem:");
        eNem = new RadioEdit<Character>(this, cpt, NONE, "nem", "nem") {
            protected String[] createLabels() {
                return new String[]{"Férfi", "Női", "Vegyes"};
            }
        };
        eNem.setInput(new Character[]{Character.valueOf('F'), Character.valueOf('N'), Character.valueOf('V')});
        
        eNem.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        
        new Label(cpt, SWT.NONE).setText("Születési dátum:");
        Composite cptKorhatar = new Composite(cpt, SWT.NONE);
        rowLayout = new RowLayout();
        rowLayout.fill = false;
        rowLayout.justify = false;
        rowLayout.marginLeft = 0;
        cptKorhatar.setLayout(rowLayout);
        eSzuletesiDatumKezdet = new DateEdit(this, cptKorhatar, NONE, "szuletesiDatumKezdet", "születési dátum kezdete");
        rowData = new RowData();
        rowData.width = 60;
        eSzuletesiDatumKezdet.setLayoutData(rowData);
        new Label(cptKorhatar, SWT.NONE).setText(" - ");
        eSzuletesiDatumVeg = new DateEdit(this, cptKorhatar, NONE, "szuletesiDatumVeg", "születési dátum vége");
        rowData = new RowData();
        rowData.width = 60;
        eSzuletesiDatumVeg.setLayoutData(rowData);
        cptKorhatar.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        
        return cpt;
    }
    
    @Override
    protected void createColumnsForTable() {
        addColumn(SWT.LEFT, "elnevezes", "Elnevezés", 200);
        addColumn(SWT.LEFT, "nem", "Nem", 200);
        addColumn(SWT.LEFT, "szuletesiDatumKezdet", "Kezdete", 200);
        addColumn(SWT.LEFT, "szuletesiDatumVeg", "Vége", 200);
    }
}
