Package honeycrm.client.mvp.views

Source Code of honeycrm.client.mvp.views.ServiceTableView$List1UiBinder

package honeycrm.client.mvp.views;

import honeycrm.client.LocalizedMessages;
import honeycrm.client.dto.Dto;
import honeycrm.client.dto.ModuleDto;
import honeycrm.client.field.AbstractField;
import honeycrm.client.misc.Callback;
import honeycrm.client.misc.NumberParser;
import honeycrm.client.misc.QuicksearchValue;
import honeycrm.client.misc.View;
import honeycrm.client.mvp.presenters.ServiceTablePresenter;
import honeycrm.client.mvp.presenters.ServiceTablePresenter.Display;

import java.io.Serializable;

import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JsArrayString;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiFactory;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.ListDataProvider;

public class ServiceTableView extends Composite implements Display {
  private static List1UiBinder uiBinder = GWT.create(List1UiBinder.class);
  private static final LocalizedMessages constants = GWT.create(LocalizedMessages.class);

  interface List1UiBinder extends UiBinder<Widget, ServiceTableView> {
  }

  private ServiceTablePresenter presenter;

  @UiField
  Button add;
  @UiField
  CellTable<Dto> table;
  @UiField
  SimplePager pager;
  @UiField
  Label sumLabel;
  @UiField
  Label sum;

  private ListDataProvider<Dto> provider;

  public ServiceTableView() {
    initWidget(uiBinder.createAndBindUi(this));

    add.setText(constants.add());
    sumLabel.setText(constants.sum());
    provider.addDataDisplay(table);
    pager.setDisplay(table);
  }

  @Override
  public HasClickHandlers getAdd() {
    return add;
  }

  @Override
  public ListDataProvider<Dto> getProvider() {
    return provider;
  }

  @UiFactory
  CellTable<Dto> makeTable() {
    return new CellTable<Dto>(provider = new ListDataProvider<Dto>());
  }

  @UiFactory
  SimplePager makePager() {
    return new SimplePager(TextLocation.CENTER);
  }

  @Override
  public void initColumns(final ModuleDto moduleDto, final View viewMode) {
    for (final String fieldName : moduleDto.getListFieldIds()) {
      final AbstractField<Object, Object> field = moduleDto.getFieldById(fieldName);
      Column<Dto, Object> column = field.getColumn(fieldName, viewMode, new Callback<Object>() {
        @Override
        public void callback(final Object arg) {
          // TODO do as much as possible of this code in the presenter to make sure this can be tested.
          if (arg instanceof QuicksearchValue) {
            QuicksearchValue q = (QuicksearchValue) arg;

            JsArrayString o = q.getReturnValue().cast();

            final Long id = NumberParser.convertToLong(o.get(1));
            final String name = o.get(0);
            final String productCode = o.get(2);
            final String price = o.get(3);

            q.getDto().set("productID", id);
            q.getDto().set("productCode", productCode);
            q.getDto().set("price", price);

            if (null == q.getDto().get("productID_resolved")) {
              q.getDto().set("productID_resolved", new Dto("Product"));
            }
            final Dto resolved = (Dto) q.getDto().get("productID_resolved");
            resolved.setId(id);
            resolved.set("name", name);

            provider.refresh();
          }
        }
      });

      column.setFieldUpdater(new FieldUpdater<Dto, Object>() {
        @Override
        public void update(int index, Dto object, Object value) {
          getProvider().getList().get(index).set(fieldName, (Serializable) value);
          presenter.onItemUpdated(index, object);
        }
      });

      table.addColumn(column, field.getLabel());
    }
  }

  @Override
  public void updateOverallSum(double calculatedSum) {
    sum.setText(NumberFormat.getCurrencyFormat("EUR").format(calculatedSum));
  }

  @Override
  public void setValue(ServiceTablePresenter value) {
    this.presenter = value;
  }

  @Override
  public ServiceTablePresenter getValue() {
    return presenter;
  }

  @Override
  public void hideAddButton() {
    add.setVisible(false);
  }

  @Override
  public void add(Dto newService) {
    provider.getList().add(newService);
  }
}
TOP

Related Classes of honeycrm.client.mvp.views.ServiceTableView$List1UiBinder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.