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.annoAttivita.AnnoDettaglio;
import it.agilis.mens.azzeroCO2.client.components.annoAttivita.AnnoNorth;
import it.agilis.mens.azzeroCO2.client.components.annoAttivita.AnnoSouth;
import it.agilis.mens.azzeroCO2.client.components.annoAttivita.AnnoWest;
import it.agilis.mens.azzeroCO2.client.components.annoAttivita.dialogs.AnnoConfermDialog;
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.UnAnnoDiAttivitaEvents;
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.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: 7/2/11
* Time: 11:40 PM
* To change this template use File | Settings | File Templates.
*/
public class UnAnnoDiAttivitaView extends View implements BaseView {
private ContentPanel unAnnoDiAttivita = new ContentPanel();
private AnnoConfermDialog annoConfermDialog = new AnnoConfermDialog();
private AnnoDettaglio annoDettaglio = new AnnoDettaglio();
private ContentPanel center = new ContentPanel();
private AnnoSouth south = new AnnoSouth();
private AnnoWest west = new AnnoWest();
private AnnoNorth north = new AnnoNorth();
public UnAnnoDiAttivitaView(Controller controller) {
super(controller);
}
@Override
protected void handleEvent(AppEvent event) {
EventType eventType = event.getType();
if (eventType.equals(AzzeroCO2Events.Init)) {
onInit();
} else if (eventType.equals(UnAnnoDiAttivitaEvents.RemoveModel)) {
annoDettaglio.formRiepilogo.removeModel((RiepilogoModel) event.getData());
} else if (eventType.equals(UnAnnoDiAttivitaEvents.GoToBegin)) {
annoDettaglio.goToBegin();
} else if (eventType.equals(UnAnnoDiAttivitaEvents.Next)) {
onNext();
} else if (eventType.equals(UnAnnoDiAttivitaEvents.NorthPanelShowButtons)) {
north.showButtons();
} else if (eventType.equals(UnAnnoDiAttivitaEvents.ClearStep)) {
annoDettaglio.clearStep((RiepilogoModel) event.getData());
OrdineModel riepilogo = annoDettaglio.riepilogo();
setRiassunto(riepilogo, false, false, false);
} else if (eventType.equals(UnAnnoDiAttivitaEvents.ClearPanel)) {
annoDettaglio.clearPanel();
west.clean();
south.setTextRigth("Energia", null);
} else if (eventType.equals(UnAnnoDiAttivitaEvents.Previous)) {
onPrevius();
} else if (event.getType().equals(UnAnnoDiAttivitaEvents.PreviousText)) {
OrdineModel riepilogo = annoDettaglio.riepilogo();
south.setTextLeft(event.<String>getData(), getRiepilogo());
setRiassunto(riepilogo,
event.<String>getData() != null && event.<String>getData().length() > 0 && event.<String>getData().equalsIgnoreCase("Sito"),
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(UnAnnoDiAttivitaEvents.NextText)) {
OrdineModel riepilogo = annoDettaglio.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(UnAnnoDiAttivitaEvents.ShowStep)) {
annoDettaglio.showStep(event.<RiepilogoModel>getData());
} else if (event.getType().equals(UnAnnoDiAttivitaEvents.ShowConfermDialog)) {
annoConfermDialog.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() {
annoDettaglio.previusTab();
}
private void onNext() {
annoDettaglio.nextTab();
}
private void onInit() {
final BorderLayout layout = new BorderLayout();
layout.setEnableState(false);
unAnnoDiAttivita.setHeaderVisible(false);
unAnnoDiAttivita.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));
unAnnoDiAttivita.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));
unAnnoDiAttivita.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(annoDettaglio, 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);
unAnnoDiAttivita.add(center, centerData);
unAnnoDiAttivita.setTitle(Eventi.ANNO_DI_ATTIVITA.name());
Dispatcher.forwardEvent(new AppEvent(CentralEvents.UnAnnoDiAttivitaPanelReady, unAnnoDiAttivita));
}
public void setTipoDiCarta(List<TipoDiCartaModel> tipoDiCartaModels) {
annoDettaglio.setTipoDiCarta(tipoDiCartaModels);
}
public List<RiepilogoModel> riepilogo(Map<String, CoefficienteModel> coefficienti) {
List<RiepilogoModel> list = CalcoliHelper.geListOfRiepilogoModel(annoDettaglio.riepilogo(), coefficienti, Eventi.ANNO_DI_ATTIVITA);
annoDettaglio.setUnaAnnoDiAttivitaRiepilogoInStore(list);
return list;
}
public void setProgettiDiCompensazione(List<ProgettoDiCompensazioneModel> progettiDiCompensazioneList) {
annoDettaglio.setProgettiDiCompensazione(progettiDiCompensazioneList);
}
public OrdineModel getRiepilogo() {
return annoDettaglio.riepilogo();
}
public void setDettaglioModel(OrdineModel result) {
annoDettaglio.restore(result);
}
public void setUserInfo(UserInfoModel userInfoModel) {
annoDettaglio.setUserInfoModel(userInfoModel);
}
public void showRiepilogo() {
annoDettaglio.showRiepilogo();
}
public void showConferma(OrdineVTO result) {
north.hideButtons();
annoDettaglio.showConferma(result);
}
}