Package fueltrack.client.ui

Source Code of fueltrack.client.ui.FuelTrackUI$FuelTrackUIUiBinder

package fueltrack.client.ui;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.extjs.gxt.ui.client.data.BaseListLoadConfig;
import com.extjs.gxt.ui.client.data.BaseListLoadResult;
import com.extjs.gxt.ui.client.data.BaseListLoader;
import com.extjs.gxt.ui.client.data.BaseModelData;
import com.extjs.gxt.ui.client.data.ListLoadResult;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.IconButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.Component;
import com.extjs.gxt.ui.client.widget.Composite;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.button.ToolButton;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.jhickman.web.gwt.gxtuibinder.client.GxtEvent;
import com.jhickman.web.gwt.gxtuibinder.client.GxtUiHandler;

import fueltrack.client.FuelTrackDataServiceAsync;
import fueltrack.client.FuelTrackEntry;

public class FuelTrackUI extends Composite /* implements HasText */{

  private static FuelTrackUIUiBinder uiBinder = GWT.create(FuelTrackUIUiBinder.class);

  interface FuelTrackUIUiBinder extends UiBinder<Component, FuelTrackUI> {
  }

  private FuelTrackDataServiceAsync fuelTrackDataService;

  @UiField
  Grid<ModelData> grid;
  @UiField
  ContentPanel entriesPanel;

  @UiField
  FormPanel newEntryForm;

  @UiField(provided = true)
  ListStore<ModelData> store;

  private BaseListLoader<ListLoadResult<ModelData>> loader;
 
  public FuelTrackUI(final FuelTrackDataServiceAsync fuelTrackDataService) {
    this.fuelTrackDataService = fuelTrackDataService;
   
    loader = new BaseListLoader<ListLoadResult<ModelData>>(new RpcProxy<ListLoadResult<ModelData>>() {
      @Override
      protected void load(Object loadConfig, final AsyncCallback<ListLoadResult<ModelData>> callback) {
        boolean force = ((BaseListLoadConfig) loadConfig).get("force", false);
       
        fuelTrackDataService.getFuelTrackEntries(force, new AsyncCallback<List<FuelTrackEntry>>() {
          @Override
          public void onSuccess(List<FuelTrackEntry> result) {
            List<ModelData> models = new ArrayList<ModelData>();
           
            for (FuelTrackEntry entry : result) {
              BaseModelData model = new BaseModelData();
             
              model.set("date", entry.getDate());
              model.set("odometer", entry.getOdometer());
              model.set("tripMeter", entry.getTripMeter());
              model.set("litres", entry.getLitres());
              model.set("amount", entry.getAmount());
             
              models.add(model);
            }
            callback.onSuccess(new BaseListLoadResult<ModelData>(models));
          }
         
          @Override
          public void onFailure(Throwable caught) {
            callback.onFailure(caught);
          }
        });
      }
    });
   
//    ModelType type = new ModelType(); 
//    type.setRoot("records"); 
//    type.addField("domain", "domain"); 
//    type.addField("name", "name"); 
//    type.addField("symbol", "symbol"); 
//    type.addField("last", "last"); 
//    type.addField("change", "change"); 
//    type.addField("date", "date");
//    final BaseListLoader<ListLoadResult<ModelData>> loader = new BaseListLoader<ListLoadResult<ModelData>>(new MemoryProxy<ListLoadResult<ModelData>>("{'records': [{'domain': 'A', 'name': 'A', 'symbol': 'A', 'last': 3, 'change': 0.1, 'date': '2012-01-12'}]}"), new JsonLoadResultReader<ListLoadResult<ModelData>>(type));
   
   
    store = new ListStore<ModelData>(loader);
   
    initComponent(uiBinder.createAndBindUi(this));
   
    ToolButton refreshButton = new ToolButton("x-tool-refresh");
    refreshButton.addSelectionListener(new SelectionListener<IconButtonEvent>() {
      @Override
      public void componentSelected(IconButtonEvent ce) {
        reloadGrid(true);
      }
    });
    entriesPanel.getHeader().addTool(refreshButton);
   
    reloadGrid(false);
  }
 
  @GxtUiHandler(uiField = "newEntrySubmitButton", eventType = GxtEvent.OnClick)
  void doNewEntrySubmitClick(ButtonEvent e) {
    FuelTrackEntry entry = new FuelTrackEntry();
   
    for (Field<?> field : newEntryForm.getFields()) {
      if ("date".equalsIgnoreCase(field.getName())) {
        entry.setDate(new Date());
      } else if ("odometer".equalsIgnoreCase(field.getName())) {
        entry.setOdometer(((Double) field.getValue()).longValue());
      } else if ("tripMeter".equalsIgnoreCase(field.getName())) {
        entry.setTripMeter(((Double) field.getValue()));
      } else if ("litres".equalsIgnoreCase(field.getName())) {
        entry.setLitres(((Double) field.getValue()));
      } else if ("amount".equalsIgnoreCase(field.getName())) {
        entry.setAmount(((Double) field.getValue()));
      }
    }
   
    fuelTrackDataService.addFuelTrackEntry(entry, new AsyncCallback<Void>() {
      @Override
      public void onSuccess(Void result) {
        reloadGrid(false);
        newEntryForm.clear();
      }
      @Override
      public void onFailure(Throwable caught) {
        MessageBox.alert("Service Error", "There was an error whilst trying to save the new entry\n" + caught.getLocalizedMessage(), null);
      }
    });
  }
 
  @GxtUiHandler(uiField = "newEntryCancelButton", eventType = GxtEvent.OnClick)
  void doNewEntryCancelClick(ButtonEvent e) {
    newEntryForm.clear();
  }
 
  private void reloadGrid(boolean force) {
    BaseListLoadConfig loadConfig = new BaseListLoadConfig();
    loadConfig.set("force", force);
   
    loader.load(loadConfig);
  }
}
TOP

Related Classes of fueltrack.client.ui.FuelTrackUI$FuelTrackUIUiBinder

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.