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());
}
});
}