Package com.changestuffs.kantor.client.core.home

Source Code of com.changestuffs.kantor.client.core.home.HomeView$Binder

package com.changestuffs.kantor.client.core.home;

import java.util.List;

import com.changestuffs.kantor.shared.actions.AddSell;
import com.changestuffs.kantor.shared.dto.SellDto;
import com.google.gwt.cell.client.NumberCell;
import com.google.gwt.cell.client.TextCell;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.TextHeader;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.ListDataProvider;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.ViewImpl;

public class HomeView extends ViewImpl implements HomePresenter.MyView {
  // Page to get the rates: http://rate-exchange.appspot.com/currency?from=USD&to=EUR
  private HomeUiHandler uiHandlers;
  private final Widget widget;
  @UiField
  CellTable<SellDto> table;
  @UiField
  ListBox sellBadge;
  @UiField
  ListBox buyBadge;
  @UiField
  TextBox commission;
  @UiField
  TextBox email;
  @UiField
  TextBox country;
  @UiField
  TextBox city;
  @UiField
  TextBox buyAmount;
  private final TextHeader sellHeader = new TextHeader("Sell");
  private final TextHeader buyHeader = new TextHeader("Buy");
  private final TextHeader rateHeader = new TextHeader("Rate");
  private final TextHeader commissionHeader = new TextHeader("Commission");
  private final TextHeader cityHeader = new TextHeader("City");
  private final TextHeader countryHeader = new TextHeader("Country");
  private final TextHeader resultHeader = new TextHeader("Exchange");
  private final TextHeader contactHeader = new TextHeader("Contact");
  private final ListDataProvider<SellDto> dataProvider = new ListDataProvider<SellDto>();
 
  private final NumberFormat decimalFormat = NumberFormat.getFormat("############.#############");
  private final NumberFormat amountFormat = NumberFormat.getFormat("###,##0.00");

  public interface Binder extends UiBinder<Widget, HomeView> {
  }

  @Inject
  public HomeView(final Binder binder) {
    widget = binder.createAndBindUi(this);
    dataProvider.addDataDisplay(table);
   
    GWT.log(getClass()+" instanced");
    table.addColumn(new Column<SellDto,String>(new TextCell()){
      @Override
      public String getValue(SellDto object) {
        return object.getBuyBadge();
      }
     
    }, buyHeader);
    table.addColumn(new Column<SellDto,String>(new TextCell()){
      @Override
      public String getValue(SellDto object) {
        return object.getSellBadge();
      }
     
    }, sellHeader);
    table.addColumn(new Column<SellDto,Number>(new NumberCell(decimalFormat)){
      @Override
      public Double getValue(SellDto object) {
        GWT.log("Rate: "+object.getRate());
        return object.getRate();
      }
     
    }, rateHeader);
    table.addColumn(new Column<SellDto,String>(new TextCell()){
      @Override
      public String getValue(SellDto object) {
        return object.getCommission()+"%";
      }
     
    }, commissionHeader);
    table.addColumn(new Column<SellDto,String>(new TextCell()){
      @Override
      public String getValue(SellDto object) {
        return object.getEmail();
      }
     
    }, contactHeader);
    table.addColumn(new Column<SellDto,String>(new TextCell()){
      @Override
      public String getValue(SellDto object) {
        return object.getCity();
      }
     
    }, cityHeader);
    table.addColumn(new Column<SellDto,String>(new TextCell()){
      @Override
      public String getValue(SellDto object) {
        return object.getCountry();
      }
     
    }, countryHeader);
    table.addColumn(new Column<SellDto,String>(new TextCell()){
      @Override
      public String getValue(SellDto object) {
        Double amount = Double.parseDouble(buyAmount.getText());
        object.setResult(getResult(object.getRate(), object.getCommission(), amount));
        return amountFormat.format(amount)+" "+object.getBuyBadge()+" = "+amountFormat.format(object.getResult())+" "+object.getSellBadge();
      }
     
    }, resultHeader);
  }

  @Override
  public Widget asWidget() {
    return widget;
  }
 
  @UiHandler("submmit")
  public void submmit(ClickEvent event) {
    AddSell addSell = new AddSell(sellBadge.getValue(sellBadge.getSelectedIndex()),
        buyBadge.getValue(buyBadge.getSelectedIndex()),
        Float.parseFloat(commission.getText()),
        city.getText(), country.getText(), email.getText());
    uiHandlers.submmitSell(addSell);
  }
 
  @UiHandler("buyAmount")
  public void buyAmount(KeyUpEvent event) {
    try{
      buyAmount.setText(buyAmount.getText().replace(",", "."));
      Double.parseDouble(buyAmount.getText());
      dataProvider.refresh();
    }catch(NumberFormatException e){
      GWT.log("buyAmount hasn't a double value");
    }
  }
 
  private double getResult(double rate, double commission, double amount){
    double rateValue = rate*amount;
    double commissionValue = commission*amount;
    double result = rateValue+commissionValue;
    return result;
  }

  @Override
  public void addDataInTable(List<SellDto> dtos) {
    dataProvider.getList().addAll(dtos);
  }

  @Override
  public void setUiHandlers(HomeUiHandler uiHandlers) {
    this.uiHandlers = uiHandlers;
  }
}
TOP

Related Classes of com.changestuffs.kantor.client.core.home.HomeView$Binder

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.