Package honeycrm.client.field

Source Code of honeycrm.client.field.FieldTable

package honeycrm.client.field;

import honeycrm.client.dto.Dto;
import honeycrm.client.misc.Callback;
import honeycrm.client.misc.View;
import honeycrm.client.mvp.presenters.ServiceTablePresenter;
import honeycrm.client.mvp.views.ServiceTableView;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.client.TakesValue;
import com.google.gwt.user.client.ui.Widget;

public class FieldTable extends AbstractField<String, Void> {
  private static final long serialVersionUID = 5834729592030900010L;

  public FieldTable() {
  }

  public FieldTable(final String id, final String label) {
    super(id, label);
  }

  @Override
  protected Widget internalGetCreateWidget(final Dto dto, final String fieldId) {
    return getTableWidget(dto, fieldId, View.CREATE);
  }

  @Override
  protected Widget internalGetDetailWidget(final Dto dto, final String fieldId) {
    return getTableWidget(dto, (fieldId), View.DETAIL);
  }

  @Override
  protected Widget internalGetEditWidget(final Dto dto, final String fieldId) {
    return getTableWidget(dto, fieldId, View.EDIT);
  }

  @Override
  protected Widget internalGetListWidget(final Dto dto, final String fieldId) {
    return internalGetDetailWidget(dto, fieldId);
  }

  /**
   * Create the widget and initialize it with data.
   */
  private Widget getTableWidget(final Dto dto, final String fieldId, final View view) {
    // TODO use common ITableView interface instead
    // TODO make this independent of the widget / chose the widget
    Serializable value = dto.get(fieldId);

    final ServiceTableView v = new ServiceTableView();
    final ServiceTablePresenter p = new ServiceTablePresenter(v, view, dto.getModule(), fieldId);

    if (value instanceof List<?>) {
      p.setValue((ArrayList<Dto>) value);
    } else {
      p.setValue(new ArrayList<Dto>());
    }
   
    return v;
  }

  @Override
  protected Serializable internalGetData(Widget w) {
    // TODO use presenter.getValue() instead
    final ServiceTablePresenter presenter = ((TakesValue<ServiceTablePresenter>) w).getValue();
    return (Serializable) presenter.getValue();
  }

  @Override
  public Column<Dto, String> getColumn(String fieldName, final View viewMode, final Callback<Void> fieldUpdatedCallback) {
    return null;
  }
}
TOP

Related Classes of honeycrm.client.field.FieldTable

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.