package solysombra.client.views;
import java.util.HashMap;
import com.google.gwt.dom.client.Document;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.datepicker.client.DateBox;
public class ViewDatePicker extends Composite {
private final VerticalPanel mainPanel;
public ViewDatePicker(HashMap<String, Integer> params) {
mainPanel = new VerticalPanel();
initWidget(mainPanel);
mainPanel.getElement().addClassName("panelPicker");
Label labelBox = new Label("Elija una fecha:");
Label labelBox2 = new Label("Y una hora:");
final ListBox horaText = new ListBox();
horaText.getElement().addClassName("selectorHora");
labelBox.getElement().addClassName("labelDatePicker");
labelBox2.getElement().addClassName("labelDatePicker");
PredefinedFormat format = DateTimeFormat.PredefinedFormat.DATE_LONG;
DateTimeFormat dateTimeFormat = DateTimeFormat.getFormat(format);
final DateBox dateBox = new DateBox();
dateBox.setFormat(new DateBox.DefaultFormat(dateTimeFormat));
HorizontalPanel horas = new HorizontalPanel();
Label horasLabel = new Label("24 horas");
horasLabel.getElement().addClassName("labelHoras");
horas.add(horaText);
horas.add(horasLabel);
mainPanel.add(labelBox);
mainPanel.add(dateBox);
mainPanel.add(labelBox2);
mainPanel.add(horas);
horaText.clear();
for (int i = 0; i < 24; i++) {
if (i < 10) {
horaText.addItem("0" + i, String.valueOf(i));
} else {
horaText.addItem(String.valueOf(i));
}
}
TextBox aux = dateBox.getTextBox();
aux.addValueChangeHandler(new ValueChangeHandler<String>() {
@Override
public void onValueChange(ValueChangeEvent<String> event) {
if (!(dateBox.getTextBox().getText().isEmpty())) {
String[] fecha = dateBox.getTextBox().getText().split(" ");
Integer dia = new Integer(fecha[2]);
System.out.println(dia);
Document.get().getElementById("dia")
.setPropertyInt("value", dia);
}
}
});
ValueChangeHandler vHandler = new ValueChangeHandler<String>() {
@Override
public void onValueChange(ValueChangeEvent<String> event) {
if (!(dateBox.getTextBox().getText().isEmpty())) {
String[] fecha = dateBox.getTextBox().getText().split(" ");
Integer dia = new Integer(fecha[2]);
System.out.println(dia);
Document.get().getElementById("dia")
.setPropertyInt("value", dia);
Document.get().getElementById("mes")
.setPropertyInt("value", traduceMes(fecha[1]));
}
}
};
dateBox.addValueChangeHandler(vHandler);
horaText.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
Integer aux = new Integer(horaText.getValue(horaText
.getSelectedIndex()));
Document.get().getElementById("hora")
.setPropertyInt("value", aux);
}
});
}
private int traduceMes(String string) {
int res = -1;
switch (string) {
case "January":
res = 1;
break;
case "February":
res = 2;
break;
case "March":
res = 3;
break;
case "April":
res = 4;
break;
case "May":
res = 5;
break;
case "June":
res = 6;
break;
case "July":
res = 7;
break;
case "August":
res = 8;
break;
case "September":
res = 9;
break;
case "October":
res = 10;
break;
case "November":
res = 11;
break;
case "December":
res = 12;
break;
}
if (res == -1) {
throw new IllegalArgumentException("Mes no encontrado!");
}
return res;
}
}