Package net.helipilot50.stocktrade.client

Source Code of net.helipilot50.stocktrade.client.TraderWindow

package net.helipilot50.stocktrade.client;

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

import net.helipilot50.stocktrade.model.Order;

import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.Orientation;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.Window;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;

public class TraderWindow extends Window {
  ListStore<Order> orders;
  private Grid<Order> ordersGrid;

  public TraderWindow() {
    super();
    setClosable(false);
    setResizable(false);
    setAutoWidth(true);
    setAutoHeight(true);
    setSize("460px", "300px");
    setPagePosition(10, 200);

   
    orders = new ListStore<Order>();
    orders.setMonitorChanges(true);

    setHeading("Trader");
    setLayout(new RowLayout(Orientation.VERTICAL));
   
   
    List<ColumnConfig> configs = new ArrayList<ColumnConfig>();

   
    ColumnConfig clmncnfgOrderID = new ColumnConfig("orderID", "ID", 30);
    configs.add(clmncnfgOrderID);
   
    ColumnConfig clmncnfgStockName = new ColumnConfig("stockName", "Stock", 80);
    configs.add(clmncnfgStockName);
   
    ColumnConfig clmncnfgCustomer = new ColumnConfig("customerName", "Customer", 150);
    configs.add(clmncnfgCustomer);
   
    ColumnConfig clmncnfgPrice = new ColumnConfig("price", "Price", 60);
    configs.add(clmncnfgPrice);
   
    ColumnConfig clmncnfgQuantity = new ColumnConfig("quantity", "Quantity", 60);
    configs.add(clmncnfgQuantity);
   
    ColumnConfig clmncnfgType = new ColumnConfig("type", "Type", 60);
    configs.add(clmncnfgType);

    ColumnModel cm = new ColumnModel(configs);

    ordersGrid = new Grid<Order>(orders, cm);
    ordersGrid.setSize("445px", "235px");
    ordersGrid.setBorders(true);
    add(ordersGrid);
   
    HorizontalPanel horizontalPanel = new HorizontalPanel();
    horizontalPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
    add(horizontalPanel);
   
    Button btnMakeTradde = new Button("Make Trade");
    btnMakeTradde.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        makeTrade();
      }
    });
    horizontalPanel.add(btnMakeTradde);
   
    Button btnRefresh = new Button("Refresh");
    btnRefresh.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        getOrders();
      }
    });
    horizontalPanel.add(btnRefresh);
   
    Button btnExit = new Button("Exit");
    btnExit.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        TraderWindow.this.showWindow(false);
      }
    });
    horizontalPanel.add(btnExit);
   
    getOrders();
  }
 
  @Override
  protected void onRender(Element parent, int pos) {
    super.onRender(parent, pos);
    //getOrders();
  }
  private void setOrders(List<Order> tradeOrders){
    this.orders.removeAll();
    this.orders.add(tradeOrders);
    setHeading("Trade: " + tradeOrders.size() + " orders");
  }

  private void getOrders(){
//    List<Order> orders = new ArrayList<Order>();
//    orders.add(new Order());
//    setOrders(orders);
    TradeServiceAsync tradeSO = Registry.get("TradeService");
    tradeSO.getOrderList(new AsyncCallback<List<Order>>() {
     
      @Override
      public void onSuccess(List<Order> result) {
        Info.display("Success", "Orders found: " + result.size());
        setOrders(result);
      }
     
      @Override
      public void onFailure(Throwable caught) {
        MessageBox.alert("Trade Error", caught.getMessage(), null);
        setOrders(new ArrayList<Order>());
       
      }
    });
  }
 
  private void makeTrade(){
    TradeServiceAsync tradeSO = Registry.get("TradeService");
    Order buyOrder = null;
    Order sellOrder = null;
    boolean foundSell = false;
    boolean foundBuy = false;
    int quantity = 0;
    double price = 0.0f;
   
    List<Order> selected = ordersGrid.getSelectionModel().getSelectedItems();
    for (Order order : selected){
      if (order.getType().equalsIgnoreCase("Buy") && !foundBuy){
        buyOrder = order;
        quantity = order.getQuantity();
       
      }
      if (order.getType().equalsIgnoreCase("Sell") && !foundSell){
        sellOrder = order;
        price = order.getPrice();
      }
      if (foundBuy && foundSell)
        break;
    }
    tradeSO.makeTrade(buyOrder, sellOrder, quantity, price, new AsyncCallback<String>() {
     
      @Override
      public void onSuccess(String result) {
        Info.display("Success", "Trade complete");
        getOrders(); //Kludgy refresh
       
      }
     
      @Override
      public void onFailure(Throwable caught) {
        MessageBox.alert("Trade Error", caught.getMessage(), null);
       
      }
    });
  }
}
TOP

Related Classes of net.helipilot50.stocktrade.client.TraderWindow

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.