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.pubblicazione.Pubblicazione;
import it.agilis.mens.azzeroCO2.client.components.pubblicazione.PubblicazioneNorth;
import it.agilis.mens.azzeroCO2.client.components.pubblicazione.PubblicazioneSouth;
import it.agilis.mens.azzeroCO2.client.components.pubblicazione.PubblicazioneWest;
import it.agilis.mens.azzeroCO2.client.components.pubblicazione.dialogs.PubblicazioneConfermDialog;
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.PubblicazioniEvents;
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: serenadimaida
* Date: 07/12/11
* Time: 22:30
* To change this template use File | Settings | File Templates.
*/
public class PubblicazioniView extends View implements BaseView{
private ContentPanel pubblicazione = new ContentPanel();
private PubblicazioneConfermDialog pubblicazioneConfermDialog = new PubblicazioneConfermDialog();
private Pubblicazione pubblicazioneDettaglio = new Pubblicazione();
private ContentPanel center = new ContentPanel();
private PubblicazioneSouth south = new PubblicazioneSouth();
private PubblicazioneWest west = new PubblicazioneWest();
private PubblicazioneNorth north = new PubblicazioneNorth();
public PubblicazioniView(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(PubblicazioniEvents.GoToBegin)) {
pubblicazioneDettaglio.goToBegin();
} else if (eventType.equals(PubblicazioniEvents.Next)) {
onNext(event);
} else if (eventType.equals(PubblicazioniEvents.ClearStep)) {
// pubblicazioneDettaglio.clearStep((RiepilogoModel) event.getData());
OrdineModel riepilogo = pubblicazioneDettaglio.riepilogo();
setRiassunto(riepilogo, false, false, false);
} else if (eventType.equals(PubblicazioniEvents.ClearPanel)) {
pubblicazioneDettaglio.clearPanel();
west.clean();
} else if (eventType.equals(PubblicazioniEvents.Previous)) {
onPrevius(event);
} else if (event.getType().equals(PubblicazioniEvents.PreviousText)) {
OrdineModel riepilogo = pubblicazioneDettaglio.riepilogo();
south.setTextLeft(event.<String>getData(), getRiepilogo());
setRiassunto(riepilogo,
event.<String>getData() != null && event.<String>getData().length() > 0 && event.<String>getData().equalsIgnoreCase("Biglietti da visita e cartelline"),
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(PubblicazioniEvents.NextText)) {
OrdineModel riepilogo = pubblicazioneDettaglio.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(PubblicazioniEvents.ShowStep)) {
pubblicazioneDettaglio.showStep(event.<RiepilogoModel>getData());
} else if (event.getType().equals(PubblicazioniEvents.ShowConfermDialog)) {
pubblicazioneConfermDialog.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(AppEvent event) {
pubblicazioneDettaglio.previusTab();
}
private void onNext(AppEvent event) {
pubblicazioneDettaglio.nextTab();
}
private void onInit(AppEvent event) {
final BorderLayout layout = new BorderLayout();
layout.setEnableState(false);
pubblicazione.setHeaderVisible(false);
pubblicazione.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));
pubblicazione.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));
pubblicazione.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(pubblicazioneDettaglio, center2Data);
BorderLayoutData southData = new BorderLayoutData(Style.LayoutRegion.SOUTH, 33);
southData.setMargins(new Margins(0, 0, 0, 0));
center.setStyleAttribute("background-color", "#313646");
center.add(south, southData);
}
center.setHeaderVisible(false);
pubblicazione.add(center, centerData);
pubblicazione.setTitle(Eventi.UNA_PUBBLICAZIONE.name());
Dispatcher.forwardEvent(new AppEvent(CentralEvents.UnaPubblicazioneReady, pubblicazione));
}
public void setTipoDiCarta(List<TipoDiCartaModel> tipoDiCartaModels) {
pubblicazioneDettaglio.setTipoDiCarta(tipoDiCartaModels);
}
public List<RiepilogoModel> riepilogo(Map<String, CoefficienteModel> coefficienti) {
List<RiepilogoModel> list = CalcoliHelper.geListOfRiepilogoModel(pubblicazioneDettaglio.riepilogo(), coefficienti, Eventi.UNA_PUBBLICAZIONE);
pubblicazioneDettaglio.setPubblicazioneRiepilogoInStore(list);
return list;
}
public void setProgettiDiCompensazione(List<ProgettoDiCompensazioneModel> progettiDiCompensazioneList) {
pubblicazioneDettaglio.setProgettiDiCompensazione(progettiDiCompensazioneList);
}
public OrdineModel getRiepilogo() {
return pubblicazioneDettaglio.riepilogo();
}
public void setDettaglioModel(OrdineModel result) {
pubblicazioneDettaglio.restore(result);
}
public void setUserInfo(UserInfoModel userInfoModel) {
pubblicazioneDettaglio.setUserInfoModel(userInfoModel);
}
public void showRiepilogo() {
pubblicazioneDettaglio.showRiepilogo();
}
public void showConferma(OrdineVTO result) {
pubblicazioneDettaglio.showConferma();
}
public void setCoupon(CouponModel result) {
pubblicazioneDettaglio.setCouponModel(result);
}
}