Package com.extjs.gxt.charts.client.model

Source Code of com.extjs.gxt.charts.client.model.DataProvider

/*
* Ext GWT 2.2.4 - Ext for GWT
* Copyright(c) 2007-2010, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
package com.extjs.gxt.charts.client.model;

import com.extjs.gxt.charts.client.Chart;
import com.extjs.gxt.charts.client.ChartManager;
import com.extjs.gxt.charts.client.model.charts.ChartConfig;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.ModelStringProvider;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.StoreEvent;
import com.extjs.gxt.ui.client.store.StoreListener;

/**
* Base class for objects that provide chart data form models in a store.
*/
public abstract class DataProvider {

  protected String labelProperty, textProperty, valueProperty;
  protected ModelStringProvider<ModelData> labelProvider, textProvider;
  protected ListStore<ModelData> store;
  protected double maxYValue, minYValue;

  private String chartId;
  private StoreListener<ModelData> storeListener;

  /**
   * Creates a new data provider.
   */
  public DataProvider() {
    storeListener = new StoreListener<ModelData>() {
      @Override
      public void handleEvent(StoreEvent<ModelData> e) {
        onStoreChange(e);
      }
    };
  }

  /**
   * Returns the label property.
   *
   * @return the label property
   */
  public String getLabelProperty() {
    return labelProperty;
  }
 
  /**
   * Returns the model label provider.
   *
   * @return the label provider
   */
  public ModelStringProvider<ModelData> getLabelProvider() {
    return labelProvider;
  }

  /**
   * Returns the text property.
   *
   * @return the text property
   */
  public String getTextProperty() {
    return textProperty;
  }

  /**
   * Returns the model text provider.
   *
   * @return the model text provider
   */
  public ModelStringProvider<ModelData> getTextProvider() {
    return textProvider;
  }

  /**
   * Returns the value property.
   *
   * @return the value property
   */
  public String getValueProperty() {
    return valueProperty;
  }

  /**
   * Binds the data provider the the given store.
   *
   * @param store the store
   */
  @SuppressWarnings({"unchecked", "rawtypes"})
  public void bind(ListStore store) {
    if (this.store != null) {
      this.store.removeStoreListener(storeListener);
    }
    this.store = store;
    this.store.addStoreListener(storeListener);
  }

  public abstract void populateData(ChartConfig config);

  /**
   * Sets the label property. Works when models contains a property with the
   * label value, an alternative is to use a label provider (
   * {@link #setLabelProvider(ModelStringProvider)}.
   *
   * @param labelProperty the label property
   */
  public void setLabelProperty(String labelProperty) {
    this.labelProperty = labelProperty;
  }

  /**
   * Sets the label provider.
   *
   * @param labelProvider the label provider
   */
  public void setLabelProvider(ModelStringProvider<ModelData> labelProvider) {
    this.labelProvider = labelProvider;
  }

  /**
   * Sets the text property.
   **/
  public void setTextProperty(String textProperty) {
    this.textProperty = textProperty;
  }

  /**
   * Sets the test provider.
   *
   * @param textProvider the text provider
   */
  public void setTextProvider(ModelStringProvider<ModelData> textProvider) {
    this.textProvider = textProvider;
  }

  /**
   * Sets the value property.
   **/
  public void setValueProperty(String valueProperty) {
    this.valueProperty = valueProperty;
  }

  protected String getLabel(ModelData model) {
    String label = null;
    if (labelProvider != null) {
      label = labelProvider.getStringValue(model, labelProperty);
    } else if (labelProperty != null) {
      Object o = model.<Object> get(labelProperty);
      label = o != null ? o.toString() : null;
    }
    return label == null ? "" : label;
  }

  protected double getMaxYValue() {
    return maxYValue;
  }

  protected double getMinYValue() {
    return minYValue;
  }

  protected String getText(ModelData model) {
    String text = null;
    if (textProvider != null) {
      text = textProvider.getStringValue(model, textProperty);
    } else if (textProperty != null) {
      Object o = model.<Object> get(textProperty);
      text = o != null ? o.toString() : null;
    }
    return text == null ? "" : text;
  }

  protected Number getValue(ModelData model) {
    Number value = null;
    if (valueProperty != null) {
      Object o = model.<Object> get(valueProperty);
      if (o != null) {
        if (o instanceof String) {
          value = Double.parseDouble((String) o);
        } else if (o instanceof Number) {
          value = (Number) o;
        }
      }
    }
    return value;
  }

  protected void onStoreChange(StoreEvent<ModelData> se) {
    Chart chart = ChartManager.get().getChart(chartId);
    if (chart != null) {
      chart.delayedRefresh(50);
    }
  }
}
TOP

Related Classes of com.extjs.gxt.charts.client.model.DataProvider

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.