package com.extjs.gxt.test.client;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import com.extjs.gxt.samples.resources.client.TestData;
import com.extjs.gxt.samples.resources.client.model.Stock;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.VerticalPanel;
import com.extjs.gxt.ui.client.widget.form.CheckBox;
import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.DateField;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.Radio;
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
import com.extjs.gxt.ui.client.widget.form.TextArea;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.TimeField;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;

public class SeleniumTest implements EntryPoint {

  public void onModuleLoad() {
    FormPanel simple = new FormPanel();
    
    simple.setHeading("Simple Form");
    simple.setFrame(true);
    simple.setWidth(350);

    TextField<String> firstName = new TextField<String>();
    firstName.setFieldLabel("Name");
    firstName.setAllowBlank(false);
    firstName.setName("name");
    firstName.setMinLength(5);
    simple.add(firstName);

    TextField<String> email = new TextField<String>();
    email.setFieldLabel("Email");
    email.setName("email");
    simple.add(email);

    List<Stock> stocks = TestData.getStocks();
    Collections.sort(stocks, new Comparator<Stock>() {
      public int compare(Stock arg0, Stock arg1) {
        return arg0.getName().compareTo(arg1.getName());
      }
    });

    ListStore<Stock> store = new ListStore<Stock>();
    store.add(stocks);

    ComboBox<Stock> combo = new ComboBox<Stock>();
    combo.setTemplate("<tpl for=\".\"><div class=x-combo-list-item id={name}>{name}</div></tpl>");
    combo.setFieldLabel("Company");
    combo.setDisplayField("name");
    combo.setName("company");
    combo.setStore(store);
    simple.add(combo);

    DateField date = new DateField();
    date.setFieldLabel("Birthday");
    date.setName("birthday");
    simple.add(date);

    TimeField time = new TimeField();
    time.setFieldLabel("Time");
    time.setName("time");
    simple.add(time);

    CheckBox check1 = new CheckBox();
    check1.setBoxLabel("Classical");

    CheckBox check2 = new CheckBox();
    check2.setBoxLabel("Rock");
    check2.setValue(true);
    check2.setName("rock");

    CheckBox check3 = new CheckBox();
    check3.setBoxLabel("Blues");
    check2.setName("blues");

    CheckBoxGroup checkGroup = new CheckBoxGroup();
    checkGroup.setFieldLabel("Music");
  
    checkGroup.add(check1);
    checkGroup.add(check2);
    checkGroup.add(check3);
    simple.add(checkGroup);

    Radio radio = new Radio();
    radio.setName("radio");
    radio.setBoxLabel("Red");
    radio.setValue(true);

    Radio radio2 = new Radio();
    radio2.setName("radio");
    radio2.setBoxLabel("Blue");

    RadioGroup radioGroup = new RadioGroup("color");
    radioGroup.setFieldLabel("Favorite Color");
    radioGroup.add(radio);
    radioGroup.add(radio2);
    simple.add(radioGroup);

    TextArea description = new TextArea();
    description.setPreventScrollbars(true);
    description.setFieldLabel("Description");
    description.setName("description");
    simple.add(description);
    
    VerticalPanel vp = new VerticalPanel();
    vp.setSpacing(10);
    vp.add(simple);
    
    RootPanel.get().add(vp);
  }

}

