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.sitoWeb.SitoWeb;
import it.agilis.mens.azzeroCO2.client.components.sitoWeb.SitoWebNorth;
import it.agilis.mens.azzeroCO2.client.components.sitoWeb.SitoWebSouth;
import it.agilis.mens.azzeroCO2.client.components.sitoWeb.SitoWebWest;
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.SitoWebEvents;
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.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: 7/2/11
* Time: 11:40 PM
* To change this template use File | Settings | File Templates.
*/
public class SitoWebView extends View implements BaseView{
private ContentPanel sitoWebpanel = new ContentPanel();
private SitoWeb sitoWeb = new SitoWeb();
private ContentPanel center = new ContentPanel();
private SitoWebSouth south = new SitoWebSouth();
private SitoWebNorth nord = new SitoWebNorth();
private SitoWebWest west = new SitoWebWest();
public SitoWebView(Controller controller) {
super(controller);
}
@Override
protected void handleEvent(AppEvent event) {
EventType eventType = event.getType();
if (eventType.equals(AzzeroCO2Events.Init)) {
onInit(event);
} else if (eventType.equals(SitoWebEvents.GoToBegin)) {
sitoWeb.goToBegin();
} else if (eventType.equals(SitoWebEvents.Next)) {
sitoWeb.nextTab();
} else if (eventType.equals(SitoWebEvents.Previous)) {
sitoWeb.previusTab();
} else if (event.getType().equals(SitoWebEvents.PreviousText)) {
OrdineModel riepilogo = sitoWeb.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(SitoWebEvents.NextText)) {
OrdineModel riepilogo = sitoWeb.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")
);
}
}
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 onInit(AppEvent event) {
final BorderLayout layout = new BorderLayout();
layout.setEnableState(false);
sitoWebpanel.setHeaderVisible(false);
sitoWebpanel.setLayout(layout);
sitoWebpanel.setStyleAttribute("padding", "1px");
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));
sitoWebpanel.add(nord, 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));
sitoWebpanel.add(west, westData);
BorderLayoutData centerData = new BorderLayoutData(Style.LayoutRegion.CENTER);
{
final BorderLayout layout2 = new BorderLayout();
center.setLayout(layout2);
center.setStyleAttribute("padding", "1px");
BorderLayoutData center2Data = new BorderLayoutData(Style.LayoutRegion.CENTER);
center2Data.setMargins(new Margins(0, 0, 0, 0));
center.add(sitoWeb, center2Data);
BorderLayoutData southData = new BorderLayoutData(Style.LayoutRegion.SOUTH, 30);
southData.setMargins(new Margins(0, 0, 0, 0));
center.add(south, southData);
}
center.setHeaderVisible(false);
sitoWebpanel.add(center, centerData);
sitoWebpanel.setTitle(Eventi.WEB.name());
Dispatcher.forwardEvent(new AppEvent(CentralEvents.SitoWebPanelReady,
sitoWebpanel));
}
public void setProgettiDiCompensazione(List<ProgettoDiCompensazioneModel> progettiDiCompensazioneList) {
sitoWeb.setProgettiDiCompensazione(progettiDiCompensazioneList);
}
public OrdineModel getRiepilogo() {
return sitoWeb.riepilogo();
}
public List<RiepilogoModel> riepilogo(Map<String, CoefficienteModel> coefficienti) {
List<RiepilogoModel> list = CalcoliHelper.geListOfRiepilogoModel(sitoWeb.riepilogo(), coefficienti, Eventi.CONOSCI_CO2);
sitoWeb.setSitoWebRiepilogoInStore(list);
return list;
}
public void setUserInfo(UserInfoModel userInfoModel) {
sitoWeb.setUserInfoModel(userInfoModel);
}
public void setDettaglioModel(OrdineModel result) {
sitoWeb.restore(result);
}
public void showRiepilogo() {
sitoWeb.showRiepilogo();
}
public void showConferma(OrdineVTO result) {
nord.hideButtons();
sitoWeb.showConferma(result);
}
public void setCoupon(CouponModel result) {
sitoWeb.setCouponModel(result);
}
}