package it.agilis.mens.azzeroCO2.client.forms; import com.extjs.gxt.ui.client.Style; import com.extjs.gxt.ui.client.event.*; import com.extjs.gxt.ui.client.mvc.Dispatcher; import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.util.Margins; import com.extjs.gxt.ui.client.util.Padding; import com.extjs.gxt.ui.client.widget.BoxComponent; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.Text; import com.extjs.gxt.ui.client.widget.button.ToolButton; import com.extjs.gxt.ui.client.widget.grid.*; import com.extjs.gxt.ui.client.widget.grid.ColumnData; import com.extjs.gxt.ui.client.widget.layout.*; import com.google.gwt.i18n.client.NumberFormat; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.Image; import it.agilis.mens.azzeroCO2.client.AzzeroCO2Resources; import it.agilis.mens.azzeroCO2.client.mvc.events.AzzeroCO2Events; import it.agilis.mens.azzeroCO2.client.mvc.events.EventoEvents; import it.agilis.mens.azzeroCO2.client.mvc.events.PubblicazioniEvents; import it.agilis.mens.azzeroCO2.client.mvc.events.UnAnnoDiAttivitaEvents; import it.agilis.mens.azzeroCO2.shared.Eventi; import it.agilis.mens.azzeroCO2.shared.model.RiepilogoModel; import it.agilis.mens.azzeroCO2.shared.model.pagamento.Esito; import java.util.ArrayList; import java.util.List; /** * 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 FormRiepilogo extends LayoutContainer { private ListStore<RiepilogoModel> store = new ListStore<RiepilogoModel>(); private Text totaleText = new Text("Totale KG/CO2"); private Text totale = new Text("0.00"); private Esito esito = Esito.IN_PAGAMENTO; private ContentPanel cp = new ContentPanel(); @Override protected void onRender(Element parent, int index) { super.onRender(parent, index); BorderLayout layout_C = new BorderLayout(); setLayout(layout_C); cp.setFrame(true); cp.setHeaderVisible(false); cp.setLayout(new RowLayout(Style.Orientation.HORIZONTAL)); ContentPanel cpEst = new ContentPanel(); cpEst.setFrame(false); cpEst.setHeaderVisible(false); cpEst.setLayout(new RowLayout(Style.Orientation.VERTICAL)); cpEst.add(createGrid(), new RowData(1, 0.95)); cp.add(cpEst, new RowData(1, 1)); LayoutContainer c = new LayoutContainer(); c.setHeight(30); HBoxLayout layout = new HBoxLayout(); layout.setPadding(new Padding(1)); layout.setHBoxLayoutAlign(HBoxLayout.HBoxLayoutAlign.MIDDLE); c.setLayout(layout); HBoxLayoutData flex = new HBoxLayoutData(new Margins(0, 0, 0, 5)); flex.setFlex(1); c.add(totaleText, flex); totaleText.setSize(300, 15); totaleText.setStyleAttribute("font-family", "arial"); totaleText.setStyleAttribute("font-size", "14px"); totaleText.setStyleAttribute("color", "#D38131"); totale.setSize(250, 15); totale.setStyleAttribute("text-align", "right"); totale.setStyleAttribute("font-family", "arial"); totale.setStyleAttribute("font-size", "14px"); totale.setStyleAttribute("color", "#D38131"); c.add(totale, new HBoxLayoutData(new Margins(0, 20, 0, 0))); cpEst.add(c, new RowData(1, 0.05)); // TODO MIGLIORARE cp.setHeight(547);// DIM BorderLayoutData centerData = new BorderLayoutData(Style.LayoutRegion.CENTER); add(cp, centerData); } protected void onAfterLayout() { super.onAfterLayout(); cp.getBody().setStyleAttribute("border-bottom", "3px solid #f8b333"); cp.getBody().setStyleAttribute("border-style", "solid"); //cp.getBody().setStyleAttribute("border-top", "3px solid #f8b333"); cp.getBody().setStyleAttribute("border-width", "3px 0"); cp.getBody().setStyleAttribute("margin-bottom", "0px"); } private Grid<RiepilogoModel> createGrid() { final NumberFormat number = NumberFormat.getFormat("0.00"); List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); ColumnConfig column = new ColumnConfig("index", "", 24); column.setRenderer(new GridCellRenderer<RiepilogoModel>() { @Override public Object render(RiepilogoModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<RiepilogoModel> riepilogoModelListStore, Grid<RiepilogoModel> riepilogoModelGrid) { return new Image(AzzeroCO2Resources.INSTANCE.checkIcon()); } }); column.setSortable(true); configs.add(column); column = new ColumnConfig("oggetto", "Oggetto", 270); column.setRenderer(new GridCellRenderer<RiepilogoModel>() { @Override public Object render(RiepilogoModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<RiepilogoModel> riepilogoModelListStore, Grid<RiepilogoModel> riepilogoModelGrid) { config.style += "border-bottom:1px solid gray !important;"; return model.<Number>get(property); } }); configs.add(column); column = new ColumnConfig("dettagli", "Dettagli", 265); column.setRenderer(new GridCellRenderer<RiepilogoModel>() { @Override public Object render(RiepilogoModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<RiepilogoModel> riepilogoModelListStore, Grid<RiepilogoModel> riepilogoModelGrid) { config.style += "border-bottom:1px solid gray !important;"; return model.<Number>get(property); } }); configs.add(column); column = new ColumnConfig("kgCO2", "Kg/CO2", 82); column.setAlignment(Style.HorizontalAlignment.RIGHT); column.setRenderer(new GridCellRenderer<RiepilogoModel>() { @Override public Object render(RiepilogoModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<RiepilogoModel> riepilogoModelListStore, Grid<RiepilogoModel> riepilogoModelGrid) { config.style += "border-bottom:1px solid gray !important;"; return number.format(model.<Number>get(property)); } }); configs.add(column); column = new ColumnConfig("", "", 20); column.setRowHeader(false); column.setId("Cancella"); column.setRenderer(new GridCellRenderer<RiepilogoModel>() { private boolean init; public Object render(final RiepilogoModel model, String property, ColumnData config, final int rowIndex, final int colIndex, final ListStore<RiepilogoModel> store, Grid<RiepilogoModel> grid) { config.style = "border-bottom:1px solid gray !important;"; if (!init) { init = true; grid.addListener(Events.ColumnResize, new Listener<GridEvent<RiepilogoModel>>() { public void handleEvent(GridEvent<RiepilogoModel> be) { for (int i = 0; i < be.getGrid().getStore().getCount(); i++) { if (be.getGrid().getView().getWidget(i, be.getColIndex()) != null && be.getGrid().getView().getWidget(i, be.getColIndex()) instanceof BoxComponent) { ((BoxComponent) be.getGrid().getView().getWidget(i, be.getColIndex())).setWidth(be.getWidth() - 10); } } } }); } ToolButton b = new ToolButton("x-tool-close", new SelectionListener<IconButtonEvent>() { @Override public void componentSelected(IconButtonEvent ce) { if (!Esito.PAGATO.equals(esito)) { Dispatcher.forwardEvent(AzzeroCO2Events.ShowRiepilogoConfermDialog, model); } } }); b.setToolTip("Elimina"); return b; } }); configs.add(column); ColumnModel cm = new ColumnModel(configs); Grid<RiepilogoModel> grid = new Grid<RiepilogoModel>(store, cm); grid.setBorders(true); grid.setHeight(350); grid.addListener(Events.CellClick, new Listener<GridEvent>() { public void handleEvent(GridEvent be) { if (be.getType() == Events.CellClick) { if (Eventi.EVENTO == Eventi.valueOf(((RiepilogoModel) be.getModel()).getEventi())) { Dispatcher.forwardEvent(EventoEvents.ShowStep, be.getModel()); } else if (Eventi.CONOSCI_CO2 == Eventi.valueOf(((RiepilogoModel) be.getModel()).getEventi())) { } else if (Eventi.ANNO_DI_ATTIVITA == Eventi.valueOf(((RiepilogoModel) be.getModel()).getEventi())) { Dispatcher.forwardEvent(UnAnnoDiAttivitaEvents.ShowStep, be.getModel()); } else if (Eventi.UNA_PUBBLICAZIONE == Eventi.valueOf(((RiepilogoModel) be.getModel()).getEventi())) { Dispatcher.forwardEvent(PubblicazioniEvents.ShowStep, be.getModel()); } else if (Eventi.WEB == Eventi.valueOf(((RiepilogoModel) be.getModel()).getEventi())) { } } } }); return grid; } public void setRiepilogoInStore(List<RiepilogoModel> models, Esito esito) { for (RiepilogoModel r : store.getModels()) { store.remove(r); } this.store.add(models); setTotale(); this.esito = esito; } private void setTotale() { double t = 0; for (RiepilogoModel r : store.getModels()) { t += r.getKgCO2(); } final NumberFormat number = NumberFormat.getFormat("0.00"); totale.setText(number.format(t)); } public void clear() { store.removeAll(); } public void removeModel(RiepilogoModel model) { store.remove(model); if (Eventi.EVENTO == Eventi.valueOf(model.getEventi())) { Dispatcher.forwardEvent(EventoEvents.ClearStep, model); } else if (Eventi.CONOSCI_CO2 == Eventi.valueOf(model.getEventi())) { } else if (Eventi.ANNO_DI_ATTIVITA == Eventi.valueOf(model.getEventi())) { Dispatcher.forwardEvent(UnAnnoDiAttivitaEvents.ClearStep, model); } else if (Eventi.UNA_PUBBLICAZIONE == Eventi.valueOf(model.getEventi())) { } else if (Eventi.WEB == Eventi.valueOf(model.getEventi())) { } setTotale(); } }