public TradeOrderWindow()

in openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/client/TradeOrderWindow.java [74:194]


    public TradeOrderWindow(final OpenTrader session, int w, int h) {
        super();
        this.session = session;

        setPixelSize(w, h);
        setStyleName("TradeOrderWindow");

        session.registerHandler(ServiceEvent.StockUpdated.TYPE, this);

        marketPrice.setReadOnly(true);
        margin.setReadOnly(true);
        gain.setReadOnly(true);
        userPrice.setMaxLength(10);
        userVolume.setMaxLength(10);

        setCellPadding(-2);
        setCellSpacing(-1);
        setHTML(0, 0, "Stock");
        setHTML(0, 1, "Market");
        setHTML(0, 2, session.getName());
        setHTML(0, 3, "Margin");
        setHTML(0, 4, "Volume");
        setHTML(0, 5, "Gain/Loss");
        for (int i = 0; i < 5; i++) {
            getCellFormatter().addStyleName(0, i, "TradingWindow-Label");
        }

        setWidget(1, 0, symbols);
        setWidget(1, 1, marketPrice);
        setWidget(1, 2, userPrice);
        setWidget(1, 3, margin);
        setWidget(1, 4, userVolume);
        setWidget(1, 5, gain);

        setWidget(2, 2, ask);
        setWidget(2, 3, bid);

        DOM.setStyleAttribute(getRowFormatter().getElement(0), "height", "4px");
        userPrice.setFocus(true);
        userPrice.setTabIndex(1);
        userPrice.setTabIndex(2);
        ask.setTabIndex(3);
        bid.setTabIndex(4);

        userPrice.addKeyUpHandler(new KeyUpHandler() {
            public void onKeyUp(KeyUpEvent event) {
                if (userPrice.getText().trim().length() == 0)
                    return;
                double price = 0.0;
                try {
                    price = Double.parseDouble(userPrice.getText());
                } catch (NumberFormatException e) {
                    MessageBox.alert(userPrice.getText() + " must be a number");
                    return;
                }
                double diff = calculateDiff(price, getSelectedStock().getMarketPrice());
                margin.setText(FormatUtil.priceFormat.format(diff));
                gain.setText(FormatUtil.changeFormat.format(diff * Integer.parseInt(userVolume.getText())));
            }
        });
        userVolume.addKeyUpHandler(new KeyUpHandler() {
            public void onKeyUp(KeyUpEvent event) {
                if (userVolume.getText().trim().length() == 0)
                    return;
                int volume = 0;
                try {
                    volume = Integer.parseInt(userVolume.getText());
                } catch (NumberFormatException e) {
                    MessageBox.alert(userVolume.getText() + " must be a positive integer");
                    return;
                }
                if (volume <= 0) {
                    MessageBox.alert(userVolume.getText() + " must be a positive integer");
                    return;
                }
                double diff = Double.parseDouble(margin.getText());
                gain.setText(FormatUtil.changeFormat.format(diff * volume));
            }
        });

        List<Stock> stocks = session.getTradedStocks();
        int n = stocks.size();
        for (int i = 0; i < n; i++) {
            symbols.addItem(stocks.get(i).getSymbol());
        }
        symbols.setSelectedIndex(0);
        initialize(stocks.get(0), false);

        symbols.addChangeHandler(new ChangeHandler() {
            @Override
            public void onChange(ChangeEvent event) {
                Stock stock = getSelectedStock();
                initialize(stock, false);
            }
        });

        ask.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent ce) {
                if (!validateData())
                    return;
                session.getService().ask(session.getTrader(),
                        getSelectedStock(),
                        Integer.parseInt(userVolume.getText()),
                        Double.parseDouble(userPrice.getText()),
                        new AskCallback());
            }
        });

        bid.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent ce) {
                if (!validateData())
                    return;
                session.getService().bid(session.getTrader(),
                        getSelectedStock(),
                        Integer.parseInt(userVolume.getText()),
                        Double.parseDouble(userPrice.getText()),
                        new BidCallback());
            }
        });

    }