📄 traderdesktop.mxml
字号:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*"
applicationComplete="initApp()">
<mx:Script>
<![CDATA[
import org.springframework.flex.samples.marketfeed.Stock;
import mx.controls.Alert;
import mx.collections.ArrayCollection;
import mx.messaging.events.MessageEvent;
import mx.messaging.Consumer;
[Bindable]
private var items:ArrayCollection;
private var consumers:Object;
private var stockMap:Object;
private function initApp():void
{
consumers = new Object();
stockMap = new Object();
items = new ArrayCollection();
initializeWatchList(["IBM", "JBLU", "ADBE", "GE", "C"]);
}
private function deleteSymbol():void
{
var symbol:String = dg.selectedItem.symbol;
unsubscribe(symbol);
items.removeItemAt(dg.selectedIndex);
delete stockMap[symbol];
}
public function initializeWatchList(list:Array):void
{
for (var i:int=0; i<list.length; i++)
{
addSymbol(list[i]);
}
}
private function addSymbol(symbol:String):void
{
if (symbol == null || symbol == "")
{
Alert.show("Cannot add an empty symbol");
return;
}
symbol = symbol.toUpperCase();
if (stockMap.hasOwnProperty(symbol))
{
Alert.show("Symbol '" + symbol + "' is already in the list");
return;
}
var stock:Stock = new Stock();
stock.symbol = symbol;
stockMap[symbol] = stock;
items.addItem(stock);
subscribe(symbol);
}
private function subscribe(symbol:String):void
{
var consumer:Consumer = new Consumer();
consumer.destination = "market-feed";
consumer.subtopic = symbol;
consumer.channelSet = cs;
consumer.addEventListener(MessageEvent.MESSAGE, messageHandler);
consumer.subscribe();
consumers[symbol] = consumer;
}
private function unsubscribe(symbol:String):void
{
if (consumers[symbol])
{
var consumer:Consumer = consumers[symbol];
consumer.removeEventListener(MessageEvent.MESSAGE, messageHandler);
if (consumer.subscribed)
{
consumer.unsubscribe();
}
delete consumers[symbol];
}
}
private function messageHandler(event:MessageEvent):void
{
var changedStock:Stock = event.message.body as Stock;
var stock:Stock = stockMap[changedStock.symbol];
BackgroundColorRenderer.symbol = changedStock.symbol;
if (stock)
{
stock.open = changedStock.open;
stock.change = changedStock.change;
stock.last = changedStock.last;
stock.high = changedStock.high;
stock.low = changedStock.low;
stock.date = changedStock.date;
}
}
private function formatNumber(item:Object, column:DataGridColumn):String
{
return nf.format(item[column.dataField]);
}
]]>
</mx:Script>
<mx:ChannelSet id="cs">
<!-- <mx:StreamingAMFChannel url="http://localhost:8080/messagebroker/streamingamf"/> -->
<mx:AMFChannel url="http://localhost:8080/messagebroker/amflongpolling"/>
<mx:AMFChannel url="http://localhost:8080/messagebroker/amfpolling"/>
</mx:ChannelSet>
<mx:NumberFormatter id="nf" precision="2"/>
<mx:Panel title="Watch List" width="400" height="400">
<mx:DataGrid id="dg" dataProvider="{items}" width="100%" height="100%">
<mx:columns>
<mx:DataGridColumn headerText="Symbol" dataField="symbol" width="80"/>
<mx:DataGridColumn headerText="Open" dataField="open" labelFunction="formatNumber" textAlign="right" width="60"/>
<mx:DataGridColumn headerText="Last" dataField="last" itemRenderer="BackgroundColorRenderer" labelFunction="formatNumber" textAlign="right" width="60"/>
<mx:DataGridColumn headerText="Change" dataField="change" itemRenderer="ColorRenderer" labelFunction="formatNumber" textAlign="right" width="60"/>
<mx:DataGridColumn headerText="High" dataField="high" labelFunction="formatNumber" textAlign="right" width="60"/>
<mx:DataGridColumn headerText="Low" dataField="low" labelFunction="formatNumber" textAlign="right" width="60"/>
</mx:columns>
</mx:DataGrid>
<mx:ControlBar>
<mx:VBox width="100%">
<mx:Text width="100%">
<mx:text>
The stocks available in the sample feed are: XOM, WMT, GM, CVX, COP, GE, C, AIG, GOOG, ADBE, JBLU, COKE, GENZ, YHOO, IBM, BA, SAP, MOT, VZ, MCD.
</mx:text>
</mx:Text>
<mx:HBox width="100%">
<mx:TextInput id="symbol" enter="addSymbol(symbol.text);symbol.text='';" width="50"/>
<mx:Button label="Add Symbol" click="addSymbol(symbol.text);symbol.text='';"/>
<mx:Spacer width="100%"/>
<mx:Button label="Delete Symbol" click="deleteSymbol()" enabled="{dg.selectedItem}"/>
</mx:HBox>
</mx:VBox>
</mx:ControlBar>
</mx:Panel>
</mx:Application>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -