package it.agilis.mens.azzeroCO2.client.forms.evento;
import com.extjs.gxt.ui.client.Style;
import com.extjs.gxt.ui.client.binding.FormBinding;
import com.extjs.gxt.ui.client.event.*;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.ToolButton;
import com.extjs.gxt.ui.client.widget.form.*;
import com.extjs.gxt.ui.client.widget.layout.*;
import com.google.gwt.user.client.Element;
import it.agilis.mens.azzeroCO2.client.MyInfo;
import it.agilis.mens.azzeroCO2.client.mvc.events.AzzeroCO2Events;
import it.agilis.mens.azzeroCO2.shared.model.OrdineModel;
import java.util.Date;
/**
* Created by IntelliJ IDEA.
* User: giovannilt
* Date: 6/19/11
* Time: 5:19 PM
* To change this template use File | Settings | File Templates.
*/
public class EventoFormDettaglio extends LayoutContainer {
private OrdineModel ordineModel = new OrdineModel();
private FormBinding binding = null;
private FormPanel formPanel;
public EventoFormDettaglio() {
formPanel = createForm();
binding = new FormBinding(formPanel, true);
binding.bind(ordineModel);
}
@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
BorderLayout layout = new BorderLayout();
setLayout(layout);
ContentPanel cp = new ContentPanel();
cp.setFrame(true);
cp.setHeaderVisible(false);
cp.setLayout(new RowLayout(Style.Orientation.HORIZONTAL));
cp.add(formPanel, new RowData(0.99, .991));
BorderLayoutData centerData = new BorderLayoutData(Style.LayoutRegion.CENTER);
add(cp, centerData);
}
private FormPanel createForm() {
FormPanel panel = new FormPanel();
panel.setFrame(true);
panel.setHeading("Dettagli evento");
panel.setButtonAlign(Style.HorizontalAlignment.CENTER);
panel.setLayout(new ColumnLayout());
ToolButton tool1 = new ToolButton("x-tool-help");
panel.getHeader().addTool(tool1);
tool1.addSelectionListener(new SelectionListener<IconButtonEvent>() {
@Override
public void componentSelected(IconButtonEvent ce) {
Dispatcher.forwardEvent(AzzeroCO2Events.ShowInfoDialog, "Indica il nome, il luogo e la data dell'evento.<br><br>Il nome dell'evento è obbligatorio.");
}
});
ToolButton tool = new ToolButton("x-tool-refresh");
panel.getHeader().addTool(tool);
tool.addSelectionListener(new SelectionListener<IconButtonEvent>() {
@Override
public void componentSelected(IconButtonEvent ce) {
clear();
}
});
LayoutContainer left = new LayoutContainer();
left.setStyleAttribute("padding-right", "10px");
FormLayout layout = new FormLayout();
layout.setLabelAlign(FormPanel.LabelAlign.LEFT);
left.setLayout(layout);
TextField<String> nomeEvento = new TextField<String>();
nomeEvento.setFieldLabel("Nome (*)");
nomeEvento.setName("nome");
nomeEvento.setStyleAttribute("padding-bottom", "20px");
left.add(nomeEvento);
final DateField dataInizio = new DateField();
final DateField dataFine = new DateField();
dataInizio.setFieldLabel("Data inizio");
dataInizio.addListener(Events.Change, new Listener<FieldEvent>() {
public void handleEvent(FieldEvent p_event) {
if (dataFine.getValue() != null && p_event.getValue() != null &&
dataFine.getValue().before((Date) p_event.getValue())) {
MyInfo.show("La data di fine non puà precedere la data di inizio dell'evento..");
}
// Window.alert("change: " + p_event.value);
}
});
dataInizio.setPropertyEditor(new DateTimePropertyEditor("dd.MM.yyyy"));
dataInizio.setName("inizio");
dataInizio.setStyleAttribute("padding-bottom", "20px");
left.add(dataInizio);
// dataInizio.set
TextArea note = new TextArea();
note.setPreventScrollbars(true);
note.setFieldLabel("Note");
note.setName("note");
left.add(note);
LabelField ps = new LabelField("(*) campo obbligatorio");
left.add(ps);
LayoutContainer right = new LayoutContainer();
right.setStyleAttribute("padding-left", "10px");
layout = new FormLayout();
layout.setLabelAlign(FormPanel.LabelAlign.LEFT);
right.setLayout(layout);
TextField<String> dove = new TextField<String>();
dove.setFieldLabel("Dove");
dove.setName("dove");
dove.setStyleAttribute("padding-bottom", "20px");
right.add(dove);
dataFine.setFieldLabel("Data fine");
dataFine.setPropertyEditor(new DateTimePropertyEditor("dd.MM.yyyy"));
dataFine.addListener(Events.Change, new Listener<FieldEvent>() {
public void handleEvent(FieldEvent p_event) {
if (dataInizio.getValue() != null && p_event.getValue() != null &&
dataInizio.getValue().after((Date) p_event.getValue())) {
MyInfo.show("La data di fine non puà precedere la data di inizio dell'evento.");
}
}
});
dataFine.setName("fine");
right.add(dataFine);
left.setStyleAttribute("padding-top", "20px");
right.setStyleAttribute("padding-top", "20px");
panel.add(left, new ColumnData(.5));
panel.add(right, new ColumnData(.5));
return panel;
}
public void clear() {
try {
// binding.unbind();
binding.clear();
formPanel.clear();
ordineModel = new OrdineModel();
binding.bind(ordineModel);
} catch (Exception e) {
e.printStackTrace();
}
}
public OrdineModel getOrdineModel() {
return ordineModel;
}
public void setOrdineModel(OrdineModel ordineModel) {
this.ordineModel = ordineModel;
binding.bind(ordineModel);
}
@Override
protected void onLoad() {
super.onLoad();
formPanel.getBody().setStyleAttribute("border-bottom", "3px solid #f8b333");
formPanel.getBody().setStyleAttribute("border-style", "solid");
formPanel.getBody().setStyleAttribute("border-top", "3px solid #f8b333");
formPanel.getBody().setStyleAttribute("border-width", "3px 0");
formPanel.getBody().setStyleAttribute("margin-bottom", "0px");
}
}