package it.agilis.mens.azzeroCO2.client.mvc.views;
import com.extjs.gxt.ui.client.Style;
import com.extjs.gxt.ui.client.event.EventType;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.extjs.gxt.ui.client.mvc.View;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import it.agilis.mens.azzeroCO2.client.components.evento.EventoDettaglio;
import it.agilis.mens.azzeroCO2.client.components.evento.EventoNorth;
import it.agilis.mens.azzeroCO2.client.components.evento.EventoSouth;
import it.agilis.mens.azzeroCO2.client.components.evento.EventoWest;
import it.agilis.mens.azzeroCO2.client.components.evento.dialogs.EventoConfermDialog;
import it.agilis.mens.azzeroCO2.client.mvc.events.AzzeroCO2Events;
import it.agilis.mens.azzeroCO2.client.mvc.events.CentralEvents;
import it.agilis.mens.azzeroCO2.client.mvc.events.EventoEvents;
import it.agilis.mens.azzeroCO2.client.services.CalcoliHelper;
import it.agilis.mens.azzeroCO2.shared.Eventi;
import it.agilis.mens.azzeroCO2.shared.model.OrdineModel;
import it.agilis.mens.azzeroCO2.shared.model.RiepilogoModel;
import it.agilis.mens.azzeroCO2.shared.model.amministrazione.CoefficienteModel;
import it.agilis.mens.azzeroCO2.shared.model.amministrazione.CouponModel;
import it.agilis.mens.azzeroCO2.shared.model.amministrazione.ProgettoDiCompensazioneModel;
import it.agilis.mens.azzeroCO2.shared.model.evento.TipoDiCartaModel;
import it.agilis.mens.azzeroCO2.shared.model.pagamento.Esito;
import it.agilis.mens.azzeroCO2.shared.model.registrazione.UserInfoModel;
import it.agilis.mens.azzeroCO2.shared.vto.OrdineVTO;
import java.util.List;
import java.util.Map;
/**
* Created by IntelliJ IDEA.
* User: giovannilt
* Date: 3/23/11
* Time: 10:09 PM
* To change this template use File | Settings | File Templates.
*/
public class EventoView extends View implements BaseView{
private ContentPanel evento = new ContentPanel();
private EventoConfermDialog eventoConfermDialog = new EventoConfermDialog();
private EventoDettaglio eventoDettaglio = new EventoDettaglio();
private ContentPanel center = new ContentPanel();
private EventoSouth south = new EventoSouth();
private EventoWest west = new EventoWest();
private EventoNorth north = new EventoNorth();
public EventoView(Controller controller) {
super(controller);
}
@Override
protected void handleEvent(AppEvent event) {
EventType eventType = event.getType();
if (eventType.equals(AzzeroCO2Events.Init)) {
onInit();
} else if (eventType.equals(EventoEvents.RemoveModel)) {
eventoDettaglio.formRiepilogo.removeModel((RiepilogoModel) event.getData());
} else if (eventType.equals(EventoEvents.GoToBegin)) {
eventoDettaglio.goToBegin();
} else if (eventType.equals(EventoEvents.Next)) {
onNext();
} else if (eventType.equals(EventoEvents.NorthPanelShowButtons)) {
north.showButtons();
} else if (eventType.equals(EventoEvents.ClearStep)) {
eventoDettaglio.clearStep((RiepilogoModel) event.getData());
OrdineModel riepilogo = eventoDettaglio.riepilogo();
setRiassunto(riepilogo, false, false, false);
} else if (eventType.equals(EventoEvents.ClearPanel)) {
eventoDettaglio.clearPanel();
west.clean();
south.setTextRigth("Energia", null);
} else if (eventType.equals(EventoEvents.Previous)) {
onPrevius();
} else if (event.getType().equals(EventoEvents.PreviousText)) {
OrdineModel riepilogo = eventoDettaglio.riepilogo();
south.setTextLeft(event.<String>getData(), getRiepilogo());
setRiassunto(riepilogo,
event.<String>getData() != null && event.<String>getData().length() > 0 && event.<String>getData().equalsIgnoreCase("Manifesti pieghevoli e fogli"),
event.<String>getData() != null && event.<String>getData().length() > 0 && event.<String>getData().equalsIgnoreCase("Riepilogo"),
event.<String>getData() != null && event.<String>getData().length() == 0
);
} else if (event.getType().equals(EventoEvents.NextText)) {
OrdineModel riepilogo = eventoDettaglio.riepilogo();
south.setTextRigth(event.<String>getData(), getRiepilogo());
setRiassunto(riepilogo,
event.<String>getData() != null && event.<String>getData().length() > 0 && event.<String>getData().equalsIgnoreCase("Acquisto"),
event.<String>getData() != null && event.<String>getData().length() > 0 && event.<String>getData().equalsIgnoreCase("Vai al pagamento"),
event.<String>getData() != null && event.<String>getData().length() > 0 && event.<String>getData().equalsIgnoreCase("torna alla home")
);
} else if (event.getType().equals(EventoEvents.ShowStep)) {
eventoDettaglio.showStep(event.<RiepilogoModel>getData());
} else if (event.getType().equals(EventoEvents.ShowConfermDialog)) {
eventoConfermDialog.show();
}
}
public void setRiassunto(OrdineModel riepilogo, boolean isRiepilogo, boolean isScegliProgettoCompensazione, boolean isConferma) {
if (isRiepilogo) {
west.isInRiepilogo(riepilogo);
} else if (isScegliProgettoCompensazione) {
west.isScegliProgettoCompensazione(riepilogo);
} else if (isConferma) {
west.isInConferma(riepilogo);
} else {
if (riepilogo.getPagamentoModel() != null &&
riepilogo.getPagamentoModel().getEsito() != null) {
west.setInStore(riepilogo, Esito.valueOf(riepilogo.getPagamentoModel().getEsito()));
} else {
west.setInStore(riepilogo, Esito.IN_PAGAMENTO);
}
}
}
private void onPrevius() {
eventoDettaglio.previusTab();
}
private void onNext() {
eventoDettaglio.nextTab();
}
private void onInit() {
final BorderLayout layout = new BorderLayout();
layout.setEnableState(false);
evento.setHeaderVisible(false);
evento.setLayout(layout);
BorderLayoutData northData = new BorderLayoutData(Style.LayoutRegion.NORTH, 25);
northData.setCollapsible(false);
northData.setFloatable(false);
northData.setHideCollapseTool(false);
northData.setSplit(false);
northData.setMargins(new Margins(0, 0, 0, 0));
evento.add(north, northData);
BorderLayoutData westData = new BorderLayoutData(Style.LayoutRegion.WEST, 250);
westData.setCollapsible(false);
westData.setFloatable(false);
westData.setHideCollapseTool(false);
westData.setSplit(false);
westData.setMargins(new Margins(0, 0, 0, 0));
evento.add(west, westData);
BorderLayoutData centerData = new BorderLayoutData(Style.LayoutRegion.CENTER);
{
final BorderLayout layout2 = new BorderLayout();
center.setLayout(layout2);
BorderLayoutData center2Data = new BorderLayoutData(Style.LayoutRegion.CENTER);
center2Data.setMargins(new Margins(0, 0, 0, 0));
center.add(eventoDettaglio, center2Data);
BorderLayoutData southData = new BorderLayoutData(Style.LayoutRegion.SOUTH, 36);
southData.setMargins(new Margins(0, 0, 0, 0));
//center.setStyleAttribute("background-color", "yellow");
center.add(south, southData);
}
center.setHeaderVisible(false);
evento.add(center, centerData);
evento.setTitle(Eventi.EVENTO.name());
Dispatcher.forwardEvent(new AppEvent(CentralEvents.EventoPanelReady, evento));
}
public void setTipoDiCarta(List<TipoDiCartaModel> tipoDiCartaModels) {
eventoDettaglio.setTipoDiCarta(tipoDiCartaModels);
}
public List<RiepilogoModel> riepilogo(Map<String, CoefficienteModel> coefficienti) {
List<RiepilogoModel> list = CalcoliHelper.geListOfRiepilogoModel(eventoDettaglio.riepilogo(), coefficienti, Eventi.EVENTO);
eventoDettaglio.setEventoRiepilogoInStore(list);
return list;
}
public void setProgettiDiCompensazione(List<ProgettoDiCompensazioneModel> progettiDiCompensazioneList) {
eventoDettaglio.setProgettiDiCompensazione(progettiDiCompensazioneList);
}
public OrdineModel getRiepilogo() {
return eventoDettaglio.riepilogo();
}
public void setDettaglioModel(OrdineModel result) {
eventoDettaglio.restore(result);
}
public void setUserInfo(UserInfoModel userInfoModel) {
eventoDettaglio.setUserInfoModel(userInfoModel);
}
public void showRiepilogo() {
eventoDettaglio.showRiepilogo();
}
public void showConferma(OrdineVTO result) {
north.hideButtons();
eventoDettaglio.showConferma(result);
}
public void setCoupon(CouponModel result) {
eventoDettaglio.setCouponModel(result);
}
}