You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ca...@apache.org on 2016/11/10 09:23:11 UTC
[04/53] git commit: [flex-asjs] [refs/heads/feature/mdl] - -
Refactored the directory structure of the example projects to be maven-style
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/controller/WatchListController.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/controller/WatchListController.as b/examples/flexjs/MobileStocks/src/main/flex/controller/WatchListController.as
new file mode 100644
index 0000000..0d94e5f
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/controller/WatchListController.as
@@ -0,0 +1,139 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package controller
+{
+ import models.ProductsModel;
+ import models.Stock;
+
+ import org.apache.flex.core.IBeadController;
+ import org.apache.flex.core.IBeadModel;
+ import org.apache.flex.core.IStrand;
+ import org.apache.flex.events.Event;
+ import org.apache.flex.events.EventDispatcher;
+ import org.apache.flex.utils.Timer;
+ import org.apache.flex.collections.ArrayList;
+
+ import views.StockView;
+ import views.WatchListView;
+
+ public class WatchListController extends EventDispatcher implements IBeadController
+ {
+ public function WatchListController()
+ {
+ super();
+
+ timer = new Timer(updateInterval, 0);
+ timer.addEventListener("timer", timerHandler);
+ }
+
+ public var updateInterval:Number = 5000;
+
+ protected var timer:Timer;
+
+ private var index:Number = 0;
+ private var selectedStock:Stock;
+ private var _strand:IStrand;
+
+ public function set strand(value:IStrand):void
+ {
+ _strand = value;
+
+ var view:WatchListView = value as WatchListView;
+ view.addEventListener("addSymbol", handleAddSymbol);
+ view.addEventListener("stockSelected", handleGridSelection);
+ }
+
+ private var _model:IBeadModel;
+ public function set model(value:IBeadModel):void
+ {
+ _model = value;
+ }
+ public function get model():IBeadModel
+ {
+ return _model;
+ }
+
+ private function handleAddSymbol(event:Event):void
+ {
+ var view:WatchListView = _strand as WatchListView;
+ var symbol:String = view.symbolName.text.toUpperCase();
+
+ view.symbolName.text = "";
+
+ (model as ProductsModel).addStockToWatchList(symbol);
+ (model as ProductsModel).saveDataToStorage();
+
+ subscribe();
+ }
+
+ private function handleGridSelection(event:Event):void
+ {
+ var view:WatchListView = _strand as WatchListView;
+ selectedStock = (model as ProductsModel).watchList.getItemAt(view.selectedStockIndex) as Stock;
+ trace("Selected stock "+selectedStock.symbol);
+
+ var stockView:StockView = view.showStockDetails(selectedStock);
+ stockView.addEventListener("removeFromList", handleRemoveFromList);
+ }
+
+ public function handleRemoveFromList(event:Event):void
+ {
+ (model as ProductsModel).removeStockFromWatchList(selectedStock);
+
+ var view:WatchListView = _strand as WatchListView;
+ view.popView();
+ }
+
+ public function subscribe():void
+ {
+ if (!timer.running)
+ {
+ timer.start();
+ }
+ }
+
+ public function unsubscribe():void
+ {
+ if (timer.running)
+ {
+ timer.stop();
+ }
+ }
+
+ /**
+ * Each time the handler goes off a different stock in the list
+ * is updated. This keeps the app from sending too many requests
+ * all at once.
+ */
+ protected function timerHandler(event:*):void
+ {
+ var stockList:ArrayList = (model as ProductsModel).watchList;
+
+ if (stockList.length == 0) return;
+
+ if (index >= stockList.length) index = 0;
+
+ (model as ProductsModel).updateStockData(stockList.getItemAt(index) as Stock);
+ index++;
+
+ var newEvent:Event = new Event("update");
+ model.dispatchEvent(newEvent);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/models/ProductsModel.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/models/ProductsModel.as b/examples/flexjs/MobileStocks/src/main/flex/models/ProductsModel.as
new file mode 100755
index 0000000..ab7689e
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/models/ProductsModel.as
@@ -0,0 +1,271 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package models
+{
+ import org.apache.flex.core.IBeadModel;
+ import org.apache.flex.core.IStrand;
+ import org.apache.flex.events.Event;
+ import org.apache.flex.events.EventDispatcher;
+ import org.apache.flex.net.HTTPService;
+ import org.apache.flex.collections.parsers.JSONInputParser;
+ import org.apache.flex.collections.LazyCollection;
+ import org.apache.flex.collections.ArrayList;
+
+ import org.apache.flex.storage.PermanentStorage;
+ import org.apache.flex.storage.events.FileEvent;
+ import org.apache.flex.storage.events.FileErrorEvent;
+
+ public class ProductsModel extends EventDispatcher implements IBeadModel
+ {
+ public function ProductsModel()
+ {
+ super();
+
+ service = new HTTPService();
+ collection = new LazyCollection;
+ collection.inputParser = new JSONInputParser();
+ collection.itemConverter = new StockDataJSONItemConverter();
+
+ _watchList = new ArrayList();
+ _assetList = new ArrayList();
+ }
+
+ public function loadDataFromStorage():void
+ {
+ var storage:PermanentStorage = new PermanentStorage();
+ var useFile:String = "com.apache.flex.MobileStocks2";
+
+ storage.addEventListener("READ", handleRead);
+ storage.addEventListener("ERROR", handleReadError);
+ storage.readTextFromDataFile(useFile);
+ }
+
+ private function handleRead(event:FileEvent):void
+ {
+ trace(event.data);
+ var result:XML = new XML(event.data);
+ trace("XML parsing:");
+ trace(result);
+
+ var assetItems:XMLList = result..asset;
+ trace("Got "+assetItems.length()+" assets");
+ for each (var asset:XML in assetItems) {
+ trace("symbol = " + asset.@symbol + ", shares = " + asset.@shares);
+ addStockToAssetList(asset.@symbol, Number(asset.@shares));
+ }
+
+ var watchItems:XMLList = result..watch;
+ trace("Got "+watchItems.length()+" watches");
+ for each (var watch:XML in watchItems) {
+ trace("symbol = "+watch.@symbol);
+ addStockToWatchList(watch.@symbol);
+ }
+ }
+
+ private function handleReadError(event:FileErrorEvent):void
+ {
+ trace("Read error: "+event.errorMessage);
+ }
+
+ public function saveDataToStorage():void
+ {
+ var storage:PermanentStorage = new PermanentStorage();
+ var useFile:String = "com.apache.flex.MobileStocks2";
+ var assets:String = "";
+
+ for (var i:int=0; i < _assetList.length; i++) {
+ var stock:Stock = _assetList.getItemAt(i) as Stock;
+ assets = assets + '<asset symbol="'+stock.symbol+'" shares="'+stock.shares+'" />';
+ }
+
+ var watches:String = "";
+ for (i=0; i < _watchList.length; i++) {
+ stock = _watchList.getItemAt(i) as Stock;
+ watches = watches + '<watch symbol="'+stock.symbol+'" />';
+ }
+
+ var output:String = "<data><assets>"+assets+"</assets><watches>"+watches+"</watches></data>";
+
+ trace("Writing: "+output);
+
+ storage.addEventListener("WRITE", handleSave);
+ storage.addEventListener("ERROR", handleSaveError);
+ storage.writeTextToDataFile(useFile, output);
+ }
+
+ private function handleSave(event:FileEvent):void
+ {
+ trace("Save completed");
+ }
+
+ private function handleSaveError(event:FileErrorEvent):void
+ {
+ trace("Write error: "+event.errorMessage);
+ }
+
+ private var service:HTTPService;
+ private var collection:LazyCollection;
+ private var queryBegin:String = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22";
+ private var queryEnd:String = "%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json";
+
+ private var _strand:IStrand;
+ public function set strand(value:IStrand):void
+ {
+ _strand = value;
+
+ service.addBead(collection);
+ _strand.addBead(service);
+ }
+
+ private var _tabList:Array = ["Assets", "Watch", "Alerts"];
+ public function get tabList():Array
+ {
+ return _tabList;
+ }
+
+ private var _labelFields:Array = [ "id", "title", "detail" ];
+ public function get labelFields():Array
+ {
+ return _labelFields;
+ }
+
+ private var _watchList:ArrayList;
+
+ public function get watchList():ArrayList
+ {
+ return _watchList;
+ }
+
+ private var _assetList:ArrayList;
+
+ public function get assetList():ArrayList
+ {
+ return _assetList;
+ }
+
+ public function addStockToAssetList(symbol:String, shares:Number):Stock
+ {
+ for (var i:int=0; i < _assetList.length; i++)
+ {
+ var stock:Stock = _assetList.getItemAt(i) as Stock;
+ if (stock.symbol == symbol) {
+ stock.shares = shares;
+ _assetList.itemUpdatedAt(i);
+ return stock;
+ }
+ }
+
+ stock = new Stock(symbol);
+ stock.shares = shares;
+
+ _assetList.addItem(stock);
+ updateStockData(stock);
+
+ return stock;
+ }
+
+ public function addStockToWatchList(symbol:String):Stock
+ {
+ for (var i:int=0; i < _watchList.length; i++)
+ {
+ var stock:Stock = _watchList.getItemAt(i) as Stock;
+ if (stock.symbol == symbol) {
+ _watchList.itemUpdatedAt(i);
+ return stock;
+ }
+ }
+
+ stock = new Stock(symbol);
+ _watchList.addItem(stock);
+ updateStockData(stock);
+ return stock;
+ }
+
+ public function removeStockFromWatchList(stock:Stock):void
+ {
+ for (var i:int=0; i < _watchList.length; i++)
+ {
+ var s:Stock = _watchList.getItemAt(i) as Stock;
+ if (stock.symbol == s.symbol) {
+ _watchList.removeItemAt(i);
+ break;
+ }
+ }
+
+ dispatchEvent(new Event("update"));
+ }
+
+ public function removeStockFromAssetListAtIndex(index:int):void
+ {
+ if (index >= 0 && index < _assetList.length) {
+ _assetList.removeItemAt(index);
+ dispatchEvent(new Event("update"));
+ }
+ }
+
+ // UPDATE STOCK INFORMATION FROM REMOTE SYSTEM
+
+ public function updateStockData(value:Stock):void
+ {
+ var sym:String = value.symbol;
+ service.url = queryBegin + sym + queryEnd;
+ service.send();
+ service.addEventListener("complete", completeHandler);
+ }
+
+ private function completeHandler(event:Event):void
+ {
+ var responseData:Object = collection.getItemAt(0);
+ if ((responseData is String) && (responseData == "No Data")) return;
+ var sym:String = responseData["Symbol"];
+
+ var queueNext:Stock = null;
+
+ for (var i:int=0; i < _watchList.length; i++)
+ {
+ var stock:Stock = _watchList.getItemAt(i) as Stock;
+ if (stock.symbol == sym) {
+ stock.updateFromData(responseData);
+ _watchList.itemUpdatedAt(i);
+ }
+ else if (stock.last == 0) {
+ queueNext = stock;
+ }
+ }
+
+ for (i=0; i < _assetList.length; i++)
+ {
+ stock = _assetList.getItemAt(i) as Stock;
+ if (stock.symbol == sym) {
+ stock.updateFromData(responseData);
+ _assetList.itemUpdatedAt(i);
+ }
+ else if (stock.last == 0) {
+ queueNext = stock;
+ }
+ }
+
+ if (queueNext != null) {
+ trace("--- queue: "+queueNext.symbol);
+ updateStockData(queueNext);
+ }
+
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/models/Stock.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/models/Stock.as b/examples/flexjs/MobileStocks/src/main/flex/models/Stock.as
new file mode 100755
index 0000000..e66f353
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/models/Stock.as
@@ -0,0 +1,168 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package models
+{
+ import org.apache.flex.events.Event;
+ import org.apache.flex.events.EventDispatcher;
+
+ public class Stock extends EventDispatcher
+ {
+ public var history:Array;
+
+ public function Stock(symbol:String=null, last:Number=0)
+ {
+ this.symbol = symbol;
+ this.last = last;
+ this.low = last;
+ this.high = last;
+ this.open = last;
+ this.change = 0;
+ this.name = "";
+ this.shares = 0;
+ }
+
+ public function updateFromData(obj:Object):void
+ {
+ name = obj["Name"];
+ low = obj["DaysLow"];
+ high = obj["DaysHigh"];
+ open = obj["Open"];
+ change = obj["Change"];
+ symbol = obj["Symbol"];
+ last = obj["LastTradePriceOnly"];
+ // shares do not change this way
+ }
+
+ private var _symbol:String;
+ private var _name:String;
+ private var _low:Number;
+ private var _high:Number;
+ private var _open:Number;
+ private var _last:Number;
+ private var _change:Number;
+ private var _date:Date;
+
+ private var _shares:Number;
+
+ [Bindable("symbolChanged")]
+ public function get symbol():String
+ {
+ return _symbol;
+ }
+ public function set symbol(value:String):void
+ {
+ _symbol = value;
+ dispatchEvent(new Event("symbolChanged"));
+ }
+
+ [Bindable("nameChanged")]
+ public function get name():String
+ {
+ return _name;
+ }
+ public function set name(value:String):void
+ {
+ _name = value;
+ dispatchEvent(new Event("nameChanged"));
+ }
+
+ [Bindable("lowChanged")]
+ public function get low():Number
+ {
+ return _low;
+ }
+ public function set low(value:Number):void
+ {
+ _low = value;
+ dispatchEvent(new Event("lowChanged"));
+ }
+
+ [Bindable("highChanged")]
+ public function get high():Number
+ {
+ return _high;
+ }
+ public function set high(value:Number):void
+ {
+ _high = value;
+ dispatchEvent(new Event("highChanged"));
+ }
+
+ [Bindable("openChanged")]
+ public function get open():Number
+ {
+ return _open;
+ }
+ public function set open(value:Number):void
+ {
+ _open = value;
+ dispatchEvent(new Event("openChanged"));
+ }
+
+ [Bindable("lastChanged")]
+ public function get last():Number
+ {
+ return _last;
+ }
+ public function set last(value:Number):void
+ {
+ _last = value;
+ dispatchEvent(new Event("lastChanged"));
+ }
+
+ [Bindable("changeChanged")]
+ public function get change():Number
+ {
+ return _change;
+ }
+ public function set change(value:Number):void
+ {
+ _change = value;
+ dispatchEvent(new Event("changeChanged"));
+ }
+
+ [Bindable("dateChanged")]
+ public function get date():Date
+ {
+ return _date;
+ }
+ public function set date(value:Date):void
+ {
+ _date = value;
+ dispatchEvent(new Event("dateChanged"));
+ }
+
+ [Bindable("sharedChanged")]
+ public function get shares():Number
+ {
+ return _shares;
+ }
+ public function set shares(value:Number):void
+ {
+ _shares = value;
+ dispatchEvent(new Event("sharesChanged"));
+ }
+
+ public function get total():Number
+ {
+ return _shares * _last;
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/renderers/AlertRenderer.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/renderers/AlertRenderer.as b/examples/flexjs/MobileStocks/src/main/flex/renderers/AlertRenderer.as
new file mode 100644
index 0000000..e683020
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/renderers/AlertRenderer.as
@@ -0,0 +1,44 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package renderers
+{
+ import org.apache.flex.html.supportClasses.StringItemRenderer;
+
+ public class AlertRenderer extends StringItemRenderer
+ {
+ public function AlertRenderer()
+ {
+ super();
+ }
+
+ override public function set data(value:Object):void
+ {
+ super.data = value;
+
+ if (labelField == "greaterThan") {
+ if (Boolean(value[labelField])) {
+ text = "when over "+value["value"];
+ }
+ else {
+ text = "when under "+value["value"];
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/renderers/CompanyNameRenderer.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/renderers/CompanyNameRenderer.as b/examples/flexjs/MobileStocks/src/main/flex/renderers/CompanyNameRenderer.as
new file mode 100644
index 0000000..e899b57
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/renderers/CompanyNameRenderer.as
@@ -0,0 +1,37 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package renderers
+{
+ import org.apache.flex.html.supportClasses.StringItemRenderer;
+
+ public class CompanyNameRenderer extends StringItemRenderer
+ {
+ public function CompanyNameRenderer()
+ {
+ super();
+ }
+
+ override public function set data(value:Object):void
+ {
+ super.data = value;
+
+ text = data.name + " (" + data.symbol + ")";
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/renderers/SharesTotalRenderer.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/renderers/SharesTotalRenderer.as b/examples/flexjs/MobileStocks/src/main/flex/renderers/SharesTotalRenderer.as
new file mode 100644
index 0000000..f6ac94b
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/renderers/SharesTotalRenderer.as
@@ -0,0 +1,37 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package renderers
+{
+ import org.apache.flex.html.supportClasses.StringItemRenderer;
+
+ public class SharesTotalRenderer extends StringItemRenderer
+ {
+ public function SharesTotalRenderer()
+ {
+ super();
+ }
+
+ override public function set data(value:Object):void
+ {
+ super.data = value;
+
+ text = "$"+String( int(data.total*100)/100.0 );
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/renderers/StockRenderer.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/renderers/StockRenderer.as b/examples/flexjs/MobileStocks/src/main/flex/renderers/StockRenderer.as
new file mode 100755
index 0000000..afba26f
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/renderers/StockRenderer.as
@@ -0,0 +1,47 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package renderers
+{
+ import org.apache.flex.html.supportClasses.StringItemRenderer;
+
+ public class StockRenderer extends StringItemRenderer
+ {
+ public function StockRenderer()
+ {
+ super();
+ }
+
+ override public function set data(value:Object):void
+ {
+ super.data = value;
+
+ var n1:Number = Number(value[labelField]);
+ if (!isNaN(n1)) {
+ n1 = Math.round(n1*100)/100.0;
+
+ // something to keep in mind when using FlexJS for cross-platform
+ // use: make sure that public properties are used versus protected
+ // functions or properties. in most cases, internal vars and functions
+ // will be platform-specific whereas public properties and function
+ // should be cross-platform.
+ text = String(n1);
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/views/LaunchView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/views/LaunchView.mxml b/examples/flexjs/MobileStocks/src/main/flex/views/LaunchView.mxml
new file mode 100644
index 0000000..3d38bda
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/views/LaunchView.mxml
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<js:TitleView xmlns:fx="http://ns.adobe.com/mxml/2009"
+ title="Assets"
+ xmlns:js="library://ns.apache.org/flexjs/basic"
+ xmlns:models="models.*"
+ xmlns:local="*"
+ xmlns:views="views.*"
+ className="LaunchView">
+
+ <fx:Script>
+ <![CDATA[
+ import controller.LaunchViewController;
+ import models.ProductsModel;
+ import models.Stock;
+
+ import org.apache.flex.binding.SimpleBinding;
+ import org.apache.flex.core.IBeadController;
+ import org.apache.flex.core.IBeadModel;
+ import org.apache.flex.events.Event;
+ import org.apache.flex.events.ValueChangeEvent;
+ import org.apache.flex.mobile.IViewManager;
+ import org.apache.flex.mobile.StackedViewManager;
+ import org.apache.flex.html.beads.DataProviderChangeNotifier;
+
+ public function set dataModel(value:IBeadModel):void
+ {
+ var cm:IBeadController = controller;
+ (cm as LaunchViewController).model = value;
+
+ var newEvent:ValueChangeEvent = new ValueChangeEvent("valueChange", false, false, null, value);
+ newEvent.propertyName = "dataModel";
+ dispatchEvent(newEvent);
+ }
+
+ public function get dataModel():IBeadModel
+ {
+ var cm:IBeadController = controller;
+ return (cm as LaunchViewController).model;
+ }
+
+ public function addSymbol():void
+ {
+ dispatchEvent(new org.apache.flex.events.Event("addSymbol"));
+ }
+
+ public function removeSymbol():void
+ {
+ dispatchEvent(new org.apache.flex.events.Event("removeSymbol"));
+ }
+
+ public function gridSelected():void
+ {
+ dispatchEvent(new org.apache.flex.events.Event("symbolSelected"));
+ }
+ ]]>
+ </fx:Script>
+
+ <fx:Style>
+ @namespace js "library://ns.apache.org/flexjs/basic";
+ .AllCharts {
+ border-width: 0px;
+ padding-left: 2px;
+ padding-top: 10px;
+ padding-bottom: 2px;
+ padding-right: 10px;
+ }
+
+ .DataGridListArea .StringItemRenderer {
+ font-size: 10px;
+ }
+
+ .HorizontalAxis .TickLabel {
+ color: #333333;
+ }
+
+ .VerticalAxis .TickLabel {
+ color: #333333;
+ }
+
+ /*.Outer1 {
+ background-color: #FFFFFF;
+ vertical-align: middle;
+ }*/
+
+ .InputChild {
+ vertical-align: middle;
+ }
+
+ /*.Outer2 {
+ background-color: #FFFFFF;
+ }*/
+
+ .LaunchGrid {
+ background-color: #FFFFFF;
+ }
+
+ .DataGridListArea {
+ background-color: #FFFFFF;
+ }
+ </fx:Style>
+
+ <fx:Metadata>
+ [Event("next")]
+ </fx:Metadata>
+
+ <js:beads>
+ <js:VerticalLayout />
+ </js:beads>
+
+ <!--
+<js:model>
+ <models:AssetsModel />
+ </js:model>
+ -->
+
+ <js:Container height="40" width="100%">
+ <js:beads>
+ <js:OneFlexibleChildHorizontalLayout flexibleChild="spacer1" maxWidth="400" maxHeight="20" />
+ </js:beads>
+ <js:Label text="Symbol:" className="InputChild" />
+ <js:TextInput id="symbolInput" width="50" className="InputChild" />
+ <js:Spacer width="10" />
+ <js:Label text="Shares:" className="InputChild" />
+ <js:TextInput id="sharesInput" width="50" className="InputChild" />
+ <js:Spacer width="10" />
+ <js:TextButton id="addButton" text="Add" width="80" click="addSymbol()" className="InputChild" />
+ <js:Spacer id="spacer1" width="1" />
+ <js:TextButton id="removeButton" text="Remove" width="80" click="removeSymbol()" className="InputChild" />
+ </js:Container>
+
+ <js:Container height="45%" width="100%">
+ <js:DataGrid id="assetGrid" height="100%" width="100%" rowHeight="25" change="gridSelected()" className="LaunchGrid">
+ <js:beads>
+ <js:DataGridPercentageLayout />
+ <js:SimpleBinding
+ eventName="update"
+ sourceID="dataModel"
+ sourcePropertyName="assetList"
+ destinationPropertyName="dataProvider" />
+ <js:DataProviderChangeNotifier sourceID="dataModel" propertyName="assetList"
+ destinationPropertyName="dataProvider" changeEventName="dataProviderChanged" />
+ </js:beads>
+ <js:columns>
+ <js:DataGridColumn columnWidth="36" label="Company (SYMB)" dataField="name" itemRenderer="renderers.CompanyNameRenderer" />
+ <js:DataGridColumn columnWidth="20" label="Shares" dataField="shares" />
+ <js:DataGridColumn columnWidth="20" label="Last" dataField="last" />
+ <js:DataGridColumn columnWidth="24" label="Total $" dataField="shares" itemRenderer="renderers.SharesTotalRenderer" />
+ </js:columns>
+ </js:DataGrid>
+ </js:Container>
+
+ <js:Spacer height="3%" />
+
+ <js:BarChart id="barChart" width="100%" height="40%" className="AllCharts">
+ <js:model>
+ <js:ChartArrayListSelectionModel />
+ </js:model>
+ <js:beads>
+ <js:DataItemRendererFactoryForSeriesArrayListData />
+ <js:BarChartLayoutForArrayList gap="2" />
+ <js:SimpleBinding
+ eventName="update"
+ sourceID="dataModel"
+ sourcePropertyName="assetList"
+ destinationPropertyName="dataProvider" />
+ <js:DataProviderChangeNotifier sourceID="dataModel" propertyName="assetList"
+ destinationPropertyName="dataProvider" changeEventName="dataProviderChanged" />
+ <js:HorizontalLinearAxisForArrayListBead valueField="total" />
+ <js:VerticalCategoryAxisForArrayListBead categoryField="symbol" />
+ </js:beads>
+ <js:series>
+ <js:BarSeries xField="total">
+ <js:itemRenderer>
+ <fx:Component>
+ <js:BoxItemRenderer>
+ <js:fill>
+ <js:SolidColor color="#FF964D" alpha="1.0" />
+ </js:fill>
+ </js:BoxItemRenderer>
+ </fx:Component>
+ </js:itemRenderer>
+ </js:BarSeries>
+ </js:series>
+ </js:BarChart>
+
+</js:TitleView>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/views/StockView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/views/StockView.mxml b/examples/flexjs/MobileStocks/src/main/flex/views/StockView.mxml
new file mode 100755
index 0000000..ca86ba7
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/views/StockView.mxml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<js:TitleView xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:js="library://ns.apache.org/flexjs/basic"
+ xmlns:apache="org.apache.flex.html.beads.*"
+ xmlns:local="*"
+ className="StockView">
+
+ <fx:Script>
+ <![CDATA[
+ import models.Stock;
+
+ import org.apache.flex.events.Event;
+ import org.apache.flex.mobile.StackedViewManager;
+
+ private var _stock:Stock;
+
+ [Bindable("stockChanged")]
+ public function get stock():Stock
+ {
+ return _stock;
+ }
+ public function set stock(value:Stock):void
+ {
+ _stock = value;
+ dispatchEvent(new org.apache.flex.events.Event("stockChanged"));
+ }
+
+ private function onBackClick() : void
+ {
+ (viewManager as StackedViewManager).pop();
+ }
+
+ override public function addedToParent():void
+ {
+ super.addedToParent();
+
+ stockSymbol.text = stock.symbol;
+ stockName.text = stock.name;
+ lastPrice.text = String(stock.last);
+ openPrice.text = String(stock.open);
+ lowPrice.text = String(stock.low);
+ highPrice.text = String(stock.high);
+ changeAmount.text = String(stock.change);
+ }
+
+ private function removeFromList():void
+ {
+ dispatchEvent(new org.apache.flex.events.Event("removeFromList"));
+ }
+ ]]>
+ </fx:Script>
+
+ <js:Container>
+ <js:beads>
+ <js:VerticalLayout />
+ </js:beads>
+ <js:style>
+ <js:SimpleCSSStyles top="10px" left="10px" />
+ </js:style>
+
+ <js:Label id="stockSymbol" text="{stock.symbol}" className="ViewTitle" />
+ <js:Label id="stockName" text="{stock.name}" className="StockName" />
+
+ <js:Spacer height="10" />
+
+ <js:Container className="StockDetailArea">
+ <js:beads>
+ <js:VerticalColumnLayout numColumns="2" />
+ </js:beads>
+
+ <js:Label text="Last Price:" className="StockLabel" /> <js:Label id="lastPrice" className="StockValue" />
+ <js:Label text="Open Price:" className="StockLabel" /> <js:Label id="openPrice" className="StockValue" />
+ <js:Label text="Low Price:" className="StockLabel" /> <js:Label id="lowPrice" className="StockValue" />
+ <js:Label text="High Price:" className="StockLabel" /> <js:Label id="highPrice" className="StockValue" />
+ <js:Label text="Change: " className="StockLabel" /> <js:Label id="changeAmount" className="StockValue" />
+ </js:Container>
+
+ <js:Spacer height="10" />
+
+ <js:Container className="StockDetailArea">
+ <js:TextButton text="Remove From List" width="200" className="StockRemoveButton" click="removeFromList()" />
+ </js:Container>
+ </js:Container>
+</js:TitleView>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/views/WatchListView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/views/WatchListView.mxml b/examples/flexjs/MobileStocks/src/main/flex/views/WatchListView.mxml
new file mode 100755
index 0000000..1c317fe
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/views/WatchListView.mxml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<js:TitleView xmlns:fx="http://ns.adobe.com/mxml/2009"
+ title="Watch List"
+ xmlns:js="library://ns.apache.org/flexjs/basic"
+ xmlns:controller="controller.*"
+ xmlns:local="*"
+ className="WatchListView"
+ xmlns:renderers="renderers.*">
+
+ <fx:Script>
+ <![CDATA[
+ import controller.WatchListController;
+
+ import models.ProductsModel;
+ import models.Stock;
+
+ import org.apache.flex.binding.SimpleBinding;
+ import org.apache.flex.core.IBeadController;
+ import org.apache.flex.core.IBeadModel;
+ import org.apache.flex.events.Event;
+ import org.apache.flex.mobile.IViewManager;
+ import org.apache.flex.mobile.StackedViewManager;
+
+ public function set dataModel(value:IBeadModel):void
+ {
+ var cm:IBeadController = controller;
+ (cm as WatchListController).model = value;
+
+ var newEvent:ValueChangeEvent = new ValueChangeEvent("valueChange", false, false, null, value);
+ newEvent.propertyName = "dataModel";
+ dispatchEvent(newEvent);
+ }
+ public function get dataModel():IBeadModel
+ {
+ var cm:IBeadController = controller;
+ return (cm as WatchListController).model;
+ }
+
+ private function onSelectStock():void
+ {
+ var stockView:StockView = new StockView();
+ var svm:IViewManager = viewManager;
+ (viewManager as StackedViewManager).push(stockView);
+ }
+
+ private function addSymbol():void
+ {
+ dispatchEvent(new org.apache.flex.events.Event("addSymbol"));
+ }
+
+ public var selectedStockIndex:Number;
+
+ private function selectRow():void
+ {
+ selectedStockIndex = dataGrid.selectedIndex;
+ dispatchEvent(new org.apache.flex.events.Event("stockSelected"));
+ }
+
+ public function showStockDetails(stock:Stock):StockView
+ {
+ var stockView:StockView = new StockView();
+ stockView.stock = stock;
+ var vm:* = viewManager;
+ (viewManager as StackedViewManager).push(stockView);
+
+ var cm:IBeadController = controller;
+
+ return stockView;
+ }
+
+ public function popView():void
+ {
+ (viewManager as StackedViewManager).pop();
+ }
+ ]]>
+ </fx:Script>
+
+ <js:beads>
+ <js:VerticalLayout />
+ </js:beads>
+
+ <js:HContainer className="WatchListInputArea" width="100%" height="10%">
+ <js:Label text="Symbol:" />
+ <js:TextInput id="symbolName" />
+ <js:TextButton text="Add" click="addSymbol()" />
+ </js:HContainer>
+
+ <js:Spacer height="10" />
+
+ <js:DataGrid id="dataGrid" width="100%" height="85%" change="selectRow()" className="WatchListDataGrid">
+ <js:beads>
+ <js:DataGridPercentageLayout />
+ <js:SimpleBinding
+ eventName="update"
+ sourceID="dataModel"
+ sourcePropertyName="watchList"
+ destinationPropertyName="dataProvider" />
+ <js:DataProviderChangeNotifier sourceID="dataModel" propertyName="watchList"
+ destinationPropertyName="dataProvider" changeEventName="dataProviderChanged" />
+ </js:beads>
+ <js:columns>
+ <js:DataGridColumn label="Company (SYMB)" dataField="symbol" columnWidth="45"
+ itemRenderer="renderers.CompanyNameRenderer" />
+ <js:DataGridColumn label="Open" dataField="open" columnWidth="11"
+ itemRenderer="renderers.StockRenderer" />
+ <js:DataGridColumn label="Last" dataField="last"columnWidth="11"
+ itemRenderer="renderers.StockRenderer" />
+ <js:DataGridColumn label="Change" dataField="change"columnWidth="11"
+ itemRenderer="renderers.StockRenderer" />
+ <js:DataGridColumn label="High" dataField="high"columnWidth="11"
+ itemRenderer="renderers.StockRenderer" />
+ <js:DataGridColumn label="Low" dataField="low" columnWidth="11"
+ itemRenderer="renderers.StockRenderer" />
+ </js:columns>
+ </js:DataGrid>
+
+</js:TitleView>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/resources/config.xml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/resources/config.xml b/examples/flexjs/MobileStocks/src/main/resources/config.xml
new file mode 100644
index 0000000..00b9f64
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/resources/config.xml
@@ -0,0 +1,44 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<widget id="${groupId}.${artifactId}" version="${version}" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
+ <name>${artifactId}</name>
+ <description>
+ ${description}
+ </description>
+ <author email="dev@flex.apache.org" href="http://flex.apache.org">
+ Apache Flex Team
+ </author>
+ <content src="index.html" />
+ <plugin name="cordova-plugin-whitelist" version="1" />
+ <access origin="*" />
+ <allow-intent href="http://*/*" />
+ <allow-intent href="https://*/*" />
+ <allow-intent href="tel:*" />
+ <allow-intent href="sms:*" />
+ <allow-intent href="mailto:*" />
+ <allow-intent href="geo:*" />
+ <platform name="android">
+ <allow-intent href="market:*" />
+ </platform>
+ <platform name="ios">
+ <allow-intent href="itms:*" />
+ <allow-intent href="itms-apps:*" />
+ </platform>
+</widget>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/models/ProductsModel.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/models/ProductsModel.as b/examples/flexjs/MobileStocks/src/models/ProductsModel.as
deleted file mode 100755
index ab7689e..0000000
--- a/examples/flexjs/MobileStocks/src/models/ProductsModel.as
+++ /dev/null
@@ -1,271 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package models
-{
- import org.apache.flex.core.IBeadModel;
- import org.apache.flex.core.IStrand;
- import org.apache.flex.events.Event;
- import org.apache.flex.events.EventDispatcher;
- import org.apache.flex.net.HTTPService;
- import org.apache.flex.collections.parsers.JSONInputParser;
- import org.apache.flex.collections.LazyCollection;
- import org.apache.flex.collections.ArrayList;
-
- import org.apache.flex.storage.PermanentStorage;
- import org.apache.flex.storage.events.FileEvent;
- import org.apache.flex.storage.events.FileErrorEvent;
-
- public class ProductsModel extends EventDispatcher implements IBeadModel
- {
- public function ProductsModel()
- {
- super();
-
- service = new HTTPService();
- collection = new LazyCollection;
- collection.inputParser = new JSONInputParser();
- collection.itemConverter = new StockDataJSONItemConverter();
-
- _watchList = new ArrayList();
- _assetList = new ArrayList();
- }
-
- public function loadDataFromStorage():void
- {
- var storage:PermanentStorage = new PermanentStorage();
- var useFile:String = "com.apache.flex.MobileStocks2";
-
- storage.addEventListener("READ", handleRead);
- storage.addEventListener("ERROR", handleReadError);
- storage.readTextFromDataFile(useFile);
- }
-
- private function handleRead(event:FileEvent):void
- {
- trace(event.data);
- var result:XML = new XML(event.data);
- trace("XML parsing:");
- trace(result);
-
- var assetItems:XMLList = result..asset;
- trace("Got "+assetItems.length()+" assets");
- for each (var asset:XML in assetItems) {
- trace("symbol = " + asset.@symbol + ", shares = " + asset.@shares);
- addStockToAssetList(asset.@symbol, Number(asset.@shares));
- }
-
- var watchItems:XMLList = result..watch;
- trace("Got "+watchItems.length()+" watches");
- for each (var watch:XML in watchItems) {
- trace("symbol = "+watch.@symbol);
- addStockToWatchList(watch.@symbol);
- }
- }
-
- private function handleReadError(event:FileErrorEvent):void
- {
- trace("Read error: "+event.errorMessage);
- }
-
- public function saveDataToStorage():void
- {
- var storage:PermanentStorage = new PermanentStorage();
- var useFile:String = "com.apache.flex.MobileStocks2";
- var assets:String = "";
-
- for (var i:int=0; i < _assetList.length; i++) {
- var stock:Stock = _assetList.getItemAt(i) as Stock;
- assets = assets + '<asset symbol="'+stock.symbol+'" shares="'+stock.shares+'" />';
- }
-
- var watches:String = "";
- for (i=0; i < _watchList.length; i++) {
- stock = _watchList.getItemAt(i) as Stock;
- watches = watches + '<watch symbol="'+stock.symbol+'" />';
- }
-
- var output:String = "<data><assets>"+assets+"</assets><watches>"+watches+"</watches></data>";
-
- trace("Writing: "+output);
-
- storage.addEventListener("WRITE", handleSave);
- storage.addEventListener("ERROR", handleSaveError);
- storage.writeTextToDataFile(useFile, output);
- }
-
- private function handleSave(event:FileEvent):void
- {
- trace("Save completed");
- }
-
- private function handleSaveError(event:FileErrorEvent):void
- {
- trace("Write error: "+event.errorMessage);
- }
-
- private var service:HTTPService;
- private var collection:LazyCollection;
- private var queryBegin:String = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22";
- private var queryEnd:String = "%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json";
-
- private var _strand:IStrand;
- public function set strand(value:IStrand):void
- {
- _strand = value;
-
- service.addBead(collection);
- _strand.addBead(service);
- }
-
- private var _tabList:Array = ["Assets", "Watch", "Alerts"];
- public function get tabList():Array
- {
- return _tabList;
- }
-
- private var _labelFields:Array = [ "id", "title", "detail" ];
- public function get labelFields():Array
- {
- return _labelFields;
- }
-
- private var _watchList:ArrayList;
-
- public function get watchList():ArrayList
- {
- return _watchList;
- }
-
- private var _assetList:ArrayList;
-
- public function get assetList():ArrayList
- {
- return _assetList;
- }
-
- public function addStockToAssetList(symbol:String, shares:Number):Stock
- {
- for (var i:int=0; i < _assetList.length; i++)
- {
- var stock:Stock = _assetList.getItemAt(i) as Stock;
- if (stock.symbol == symbol) {
- stock.shares = shares;
- _assetList.itemUpdatedAt(i);
- return stock;
- }
- }
-
- stock = new Stock(symbol);
- stock.shares = shares;
-
- _assetList.addItem(stock);
- updateStockData(stock);
-
- return stock;
- }
-
- public function addStockToWatchList(symbol:String):Stock
- {
- for (var i:int=0; i < _watchList.length; i++)
- {
- var stock:Stock = _watchList.getItemAt(i) as Stock;
- if (stock.symbol == symbol) {
- _watchList.itemUpdatedAt(i);
- return stock;
- }
- }
-
- stock = new Stock(symbol);
- _watchList.addItem(stock);
- updateStockData(stock);
- return stock;
- }
-
- public function removeStockFromWatchList(stock:Stock):void
- {
- for (var i:int=0; i < _watchList.length; i++)
- {
- var s:Stock = _watchList.getItemAt(i) as Stock;
- if (stock.symbol == s.symbol) {
- _watchList.removeItemAt(i);
- break;
- }
- }
-
- dispatchEvent(new Event("update"));
- }
-
- public function removeStockFromAssetListAtIndex(index:int):void
- {
- if (index >= 0 && index < _assetList.length) {
- _assetList.removeItemAt(index);
- dispatchEvent(new Event("update"));
- }
- }
-
- // UPDATE STOCK INFORMATION FROM REMOTE SYSTEM
-
- public function updateStockData(value:Stock):void
- {
- var sym:String = value.symbol;
- service.url = queryBegin + sym + queryEnd;
- service.send();
- service.addEventListener("complete", completeHandler);
- }
-
- private function completeHandler(event:Event):void
- {
- var responseData:Object = collection.getItemAt(0);
- if ((responseData is String) && (responseData == "No Data")) return;
- var sym:String = responseData["Symbol"];
-
- var queueNext:Stock = null;
-
- for (var i:int=0; i < _watchList.length; i++)
- {
- var stock:Stock = _watchList.getItemAt(i) as Stock;
- if (stock.symbol == sym) {
- stock.updateFromData(responseData);
- _watchList.itemUpdatedAt(i);
- }
- else if (stock.last == 0) {
- queueNext = stock;
- }
- }
-
- for (i=0; i < _assetList.length; i++)
- {
- stock = _assetList.getItemAt(i) as Stock;
- if (stock.symbol == sym) {
- stock.updateFromData(responseData);
- _assetList.itemUpdatedAt(i);
- }
- else if (stock.last == 0) {
- queueNext = stock;
- }
- }
-
- if (queueNext != null) {
- trace("--- queue: "+queueNext.symbol);
- updateStockData(queueNext);
- }
-
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/models/Stock.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/models/Stock.as b/examples/flexjs/MobileStocks/src/models/Stock.as
deleted file mode 100755
index 55f74cc..0000000
--- a/examples/flexjs/MobileStocks/src/models/Stock.as
+++ /dev/null
@@ -1,168 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package models
-{
- import org.apache.flex.events.Event;
- import org.apache.flex.events.EventDispatcher;
-
- public class Stock extends EventDispatcher
- {
- public var history:Array;
-
- public function Stock(symbol:String=null, last:Number=0)
- {
- this.symbol = symbol;
- this.last = last;
- this.low = last;
- this.high = last;
- this.open = last;
- this.change = 0;
- this.name = "";
- this.shares = 0;
- }
-
- public function updateFromData(obj:Object):void
- {
- name = obj["Name"];
- low = obj["DaysLow"];
- high = obj["DaysHigh"];
- open = obj["Open"];
- change = obj["Change"];
- symbol = obj["Symbol"];
- last = obj["LastTradePriceOnly"];
- // shares do not change this way
- }
-
- private var _symbol:String;
- private var _name:String;
- private var _low:Number;
- private var _high:Number;
- private var _open:Number;
- private var _last:Number;
- private var _change:Number;
- private var _date:Date;
-
- private var _shares:Number;
-
- [Bindable("symbolChanged")]
- public function get symbol():String
- {
- return _symbol;
- }
- public function set symbol(value:String):void
- {
- _symbol = value;
- dispatchEvent(new Event("symbolChanged"));
- }
-
- [Bindable("nameChanged")]
- public function get name():String
- {
- return _name;
- }
- public function set name(value:String):void
- {
- _name = value;
- dispatchEvent(new Event("nameChanged"));
- }
-
- [Bindable("lowChanged")]
- public function get low():Number
- {
- return _low;
- }
- public function set low(value:Number):void
- {
- _low = value;
- dispatchEvent(new Event("lowChanged"));
- }
-
- [Bindable("highChanged")]
- public function get high():Number
- {
- return _high;
- }
- public function set high(value:Number):void
- {
- _high = value;
- dispatchEvent(new Event("highChanged"));
- }
-
- [Bindable("openChanged")]
- public function get open():Number
- {
- return _open;
- }
- public function set open(value:Number):void
- {
- _open = value;
- dispatchEvent(new Event("openChanged"));
- }
-
- [Bindable("lastChanged")]
- public function get last():Number
- {
- return _last;
- }
- public function set last(value:Number):void
- {
- _last = value;
- dispatchEvent(new Event("lastChanged"));
- }
-
- [Bindable("changeChanged")]
- public function get change():Number
- {
- return _change;
- }
- public function set change(value:Number):void
- {
- _change = value;
- dispatchEvent(new Event("changeChanged"));
- }
-
- [Bindable("dateChanged")]
- public function get date():Date
- {
- return _date;
- }
- public function set date(value:Date):void
- {
- _date = value;
- dispatchEvent(new Event("dateChanged"));
- }
-
- [Bindable("sharedChanged")]
- public function get shares():Number
- {
- return _shares;
- }
- public function set shares(value:Number):void
- {
- _shares = value;
- dispatchEvent(new Event("sharesChanged"));
- }
-
- public function get total():Number
- {
- return _shares * _last;
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/renderers/AlertRenderer.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/renderers/AlertRenderer.as b/examples/flexjs/MobileStocks/src/renderers/AlertRenderer.as
deleted file mode 100644
index e683020..0000000
--- a/examples/flexjs/MobileStocks/src/renderers/AlertRenderer.as
+++ /dev/null
@@ -1,44 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package renderers
-{
- import org.apache.flex.html.supportClasses.StringItemRenderer;
-
- public class AlertRenderer extends StringItemRenderer
- {
- public function AlertRenderer()
- {
- super();
- }
-
- override public function set data(value:Object):void
- {
- super.data = value;
-
- if (labelField == "greaterThan") {
- if (Boolean(value[labelField])) {
- text = "when over "+value["value"];
- }
- else {
- text = "when under "+value["value"];
- }
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/renderers/CompanyNameRenderer.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/renderers/CompanyNameRenderer.as b/examples/flexjs/MobileStocks/src/renderers/CompanyNameRenderer.as
deleted file mode 100644
index e899b57..0000000
--- a/examples/flexjs/MobileStocks/src/renderers/CompanyNameRenderer.as
+++ /dev/null
@@ -1,37 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package renderers
-{
- import org.apache.flex.html.supportClasses.StringItemRenderer;
-
- public class CompanyNameRenderer extends StringItemRenderer
- {
- public function CompanyNameRenderer()
- {
- super();
- }
-
- override public function set data(value:Object):void
- {
- super.data = value;
-
- text = data.name + " (" + data.symbol + ")";
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/renderers/SharesTotalRenderer.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/renderers/SharesTotalRenderer.as b/examples/flexjs/MobileStocks/src/renderers/SharesTotalRenderer.as
deleted file mode 100644
index f6ac94b..0000000
--- a/examples/flexjs/MobileStocks/src/renderers/SharesTotalRenderer.as
+++ /dev/null
@@ -1,37 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package renderers
-{
- import org.apache.flex.html.supportClasses.StringItemRenderer;
-
- public class SharesTotalRenderer extends StringItemRenderer
- {
- public function SharesTotalRenderer()
- {
- super();
- }
-
- override public function set data(value:Object):void
- {
- super.data = value;
-
- text = "$"+String( int(data.total*100)/100.0 );
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/renderers/StockRenderer.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/renderers/StockRenderer.as b/examples/flexjs/MobileStocks/src/renderers/StockRenderer.as
deleted file mode 100755
index afba26f..0000000
--- a/examples/flexjs/MobileStocks/src/renderers/StockRenderer.as
+++ /dev/null
@@ -1,47 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package renderers
-{
- import org.apache.flex.html.supportClasses.StringItemRenderer;
-
- public class StockRenderer extends StringItemRenderer
- {
- public function StockRenderer()
- {
- super();
- }
-
- override public function set data(value:Object):void
- {
- super.data = value;
-
- var n1:Number = Number(value[labelField]);
- if (!isNaN(n1)) {
- n1 = Math.round(n1*100)/100.0;
-
- // something to keep in mind when using FlexJS for cross-platform
- // use: make sure that public properties are used versus protected
- // functions or properties. in most cases, internal vars and functions
- // will be platform-specific whereas public properties and function
- // should be cross-platform.
- text = String(n1);
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/views/LaunchView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/views/LaunchView.mxml b/examples/flexjs/MobileStocks/src/views/LaunchView.mxml
deleted file mode 100644
index 3d38bda..0000000
--- a/examples/flexjs/MobileStocks/src/views/LaunchView.mxml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
--->
-<js:TitleView xmlns:fx="http://ns.adobe.com/mxml/2009"
- title="Assets"
- xmlns:js="library://ns.apache.org/flexjs/basic"
- xmlns:models="models.*"
- xmlns:local="*"
- xmlns:views="views.*"
- className="LaunchView">
-
- <fx:Script>
- <![CDATA[
- import controller.LaunchViewController;
- import models.ProductsModel;
- import models.Stock;
-
- import org.apache.flex.binding.SimpleBinding;
- import org.apache.flex.core.IBeadController;
- import org.apache.flex.core.IBeadModel;
- import org.apache.flex.events.Event;
- import org.apache.flex.events.ValueChangeEvent;
- import org.apache.flex.mobile.IViewManager;
- import org.apache.flex.mobile.StackedViewManager;
- import org.apache.flex.html.beads.DataProviderChangeNotifier;
-
- public function set dataModel(value:IBeadModel):void
- {
- var cm:IBeadController = controller;
- (cm as LaunchViewController).model = value;
-
- var newEvent:ValueChangeEvent = new ValueChangeEvent("valueChange", false, false, null, value);
- newEvent.propertyName = "dataModel";
- dispatchEvent(newEvent);
- }
-
- public function get dataModel():IBeadModel
- {
- var cm:IBeadController = controller;
- return (cm as LaunchViewController).model;
- }
-
- public function addSymbol():void
- {
- dispatchEvent(new org.apache.flex.events.Event("addSymbol"));
- }
-
- public function removeSymbol():void
- {
- dispatchEvent(new org.apache.flex.events.Event("removeSymbol"));
- }
-
- public function gridSelected():void
- {
- dispatchEvent(new org.apache.flex.events.Event("symbolSelected"));
- }
- ]]>
- </fx:Script>
-
- <fx:Style>
- @namespace js "library://ns.apache.org/flexjs/basic";
- .AllCharts {
- border-width: 0px;
- padding-left: 2px;
- padding-top: 10px;
- padding-bottom: 2px;
- padding-right: 10px;
- }
-
- .DataGridListArea .StringItemRenderer {
- font-size: 10px;
- }
-
- .HorizontalAxis .TickLabel {
- color: #333333;
- }
-
- .VerticalAxis .TickLabel {
- color: #333333;
- }
-
- /*.Outer1 {
- background-color: #FFFFFF;
- vertical-align: middle;
- }*/
-
- .InputChild {
- vertical-align: middle;
- }
-
- /*.Outer2 {
- background-color: #FFFFFF;
- }*/
-
- .LaunchGrid {
- background-color: #FFFFFF;
- }
-
- .DataGridListArea {
- background-color: #FFFFFF;
- }
- </fx:Style>
-
- <fx:Metadata>
- [Event("next")]
- </fx:Metadata>
-
- <js:beads>
- <js:VerticalLayout />
- </js:beads>
-
- <!--
-<js:model>
- <models:AssetsModel />
- </js:model>
- -->
-
- <js:Container height="40" width="100%">
- <js:beads>
- <js:OneFlexibleChildHorizontalLayout flexibleChild="spacer1" maxWidth="400" maxHeight="20" />
- </js:beads>
- <js:Label text="Symbol:" className="InputChild" />
- <js:TextInput id="symbolInput" width="50" className="InputChild" />
- <js:Spacer width="10" />
- <js:Label text="Shares:" className="InputChild" />
- <js:TextInput id="sharesInput" width="50" className="InputChild" />
- <js:Spacer width="10" />
- <js:TextButton id="addButton" text="Add" width="80" click="addSymbol()" className="InputChild" />
- <js:Spacer id="spacer1" width="1" />
- <js:TextButton id="removeButton" text="Remove" width="80" click="removeSymbol()" className="InputChild" />
- </js:Container>
-
- <js:Container height="45%" width="100%">
- <js:DataGrid id="assetGrid" height="100%" width="100%" rowHeight="25" change="gridSelected()" className="LaunchGrid">
- <js:beads>
- <js:DataGridPercentageLayout />
- <js:SimpleBinding
- eventName="update"
- sourceID="dataModel"
- sourcePropertyName="assetList"
- destinationPropertyName="dataProvider" />
- <js:DataProviderChangeNotifier sourceID="dataModel" propertyName="assetList"
- destinationPropertyName="dataProvider" changeEventName="dataProviderChanged" />
- </js:beads>
- <js:columns>
- <js:DataGridColumn columnWidth="36" label="Company (SYMB)" dataField="name" itemRenderer="renderers.CompanyNameRenderer" />
- <js:DataGridColumn columnWidth="20" label="Shares" dataField="shares" />
- <js:DataGridColumn columnWidth="20" label="Last" dataField="last" />
- <js:DataGridColumn columnWidth="24" label="Total $" dataField="shares" itemRenderer="renderers.SharesTotalRenderer" />
- </js:columns>
- </js:DataGrid>
- </js:Container>
-
- <js:Spacer height="3%" />
-
- <js:BarChart id="barChart" width="100%" height="40%" className="AllCharts">
- <js:model>
- <js:ChartArrayListSelectionModel />
- </js:model>
- <js:beads>
- <js:DataItemRendererFactoryForSeriesArrayListData />
- <js:BarChartLayoutForArrayList gap="2" />
- <js:SimpleBinding
- eventName="update"
- sourceID="dataModel"
- sourcePropertyName="assetList"
- destinationPropertyName="dataProvider" />
- <js:DataProviderChangeNotifier sourceID="dataModel" propertyName="assetList"
- destinationPropertyName="dataProvider" changeEventName="dataProviderChanged" />
- <js:HorizontalLinearAxisForArrayListBead valueField="total" />
- <js:VerticalCategoryAxisForArrayListBead categoryField="symbol" />
- </js:beads>
- <js:series>
- <js:BarSeries xField="total">
- <js:itemRenderer>
- <fx:Component>
- <js:BoxItemRenderer>
- <js:fill>
- <js:SolidColor color="#FF964D" alpha="1.0" />
- </js:fill>
- </js:BoxItemRenderer>
- </fx:Component>
- </js:itemRenderer>
- </js:BarSeries>
- </js:series>
- </js:BarChart>
-
-</js:TitleView>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/views/StockView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/views/StockView.mxml b/examples/flexjs/MobileStocks/src/views/StockView.mxml
deleted file mode 100755
index ca86ba7..0000000
--- a/examples/flexjs/MobileStocks/src/views/StockView.mxml
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
--->
-<js:TitleView xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:js="library://ns.apache.org/flexjs/basic"
- xmlns:apache="org.apache.flex.html.beads.*"
- xmlns:local="*"
- className="StockView">
-
- <fx:Script>
- <![CDATA[
- import models.Stock;
-
- import org.apache.flex.events.Event;
- import org.apache.flex.mobile.StackedViewManager;
-
- private var _stock:Stock;
-
- [Bindable("stockChanged")]
- public function get stock():Stock
- {
- return _stock;
- }
- public function set stock(value:Stock):void
- {
- _stock = value;
- dispatchEvent(new org.apache.flex.events.Event("stockChanged"));
- }
-
- private function onBackClick() : void
- {
- (viewManager as StackedViewManager).pop();
- }
-
- override public function addedToParent():void
- {
- super.addedToParent();
-
- stockSymbol.text = stock.symbol;
- stockName.text = stock.name;
- lastPrice.text = String(stock.last);
- openPrice.text = String(stock.open);
- lowPrice.text = String(stock.low);
- highPrice.text = String(stock.high);
- changeAmount.text = String(stock.change);
- }
-
- private function removeFromList():void
- {
- dispatchEvent(new org.apache.flex.events.Event("removeFromList"));
- }
- ]]>
- </fx:Script>
-
- <js:Container>
- <js:beads>
- <js:VerticalLayout />
- </js:beads>
- <js:style>
- <js:SimpleCSSStyles top="10px" left="10px" />
- </js:style>
-
- <js:Label id="stockSymbol" text="{stock.symbol}" className="ViewTitle" />
- <js:Label id="stockName" text="{stock.name}" className="StockName" />
-
- <js:Spacer height="10" />
-
- <js:Container className="StockDetailArea">
- <js:beads>
- <js:VerticalColumnLayout numColumns="2" />
- </js:beads>
-
- <js:Label text="Last Price:" className="StockLabel" /> <js:Label id="lastPrice" className="StockValue" />
- <js:Label text="Open Price:" className="StockLabel" /> <js:Label id="openPrice" className="StockValue" />
- <js:Label text="Low Price:" className="StockLabel" /> <js:Label id="lowPrice" className="StockValue" />
- <js:Label text="High Price:" className="StockLabel" /> <js:Label id="highPrice" className="StockValue" />
- <js:Label text="Change: " className="StockLabel" /> <js:Label id="changeAmount" className="StockValue" />
- </js:Container>
-
- <js:Spacer height="10" />
-
- <js:Container className="StockDetailArea">
- <js:TextButton text="Remove From List" width="200" className="StockRemoveButton" click="removeFromList()" />
- </js:Container>
- </js:Container>
-</js:TitleView>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/views/WatchListView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/views/WatchListView.mxml b/examples/flexjs/MobileStocks/src/views/WatchListView.mxml
deleted file mode 100755
index 1c317fe..0000000
--- a/examples/flexjs/MobileStocks/src/views/WatchListView.mxml
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
--->
-<js:TitleView xmlns:fx="http://ns.adobe.com/mxml/2009"
- title="Watch List"
- xmlns:js="library://ns.apache.org/flexjs/basic"
- xmlns:controller="controller.*"
- xmlns:local="*"
- className="WatchListView"
- xmlns:renderers="renderers.*">
-
- <fx:Script>
- <![CDATA[
- import controller.WatchListController;
-
- import models.ProductsModel;
- import models.Stock;
-
- import org.apache.flex.binding.SimpleBinding;
- import org.apache.flex.core.IBeadController;
- import org.apache.flex.core.IBeadModel;
- import org.apache.flex.events.Event;
- import org.apache.flex.mobile.IViewManager;
- import org.apache.flex.mobile.StackedViewManager;
-
- public function set dataModel(value:IBeadModel):void
- {
- var cm:IBeadController = controller;
- (cm as WatchListController).model = value;
-
- var newEvent:ValueChangeEvent = new ValueChangeEvent("valueChange", false, false, null, value);
- newEvent.propertyName = "dataModel";
- dispatchEvent(newEvent);
- }
- public function get dataModel():IBeadModel
- {
- var cm:IBeadController = controller;
- return (cm as WatchListController).model;
- }
-
- private function onSelectStock():void
- {
- var stockView:StockView = new StockView();
- var svm:IViewManager = viewManager;
- (viewManager as StackedViewManager).push(stockView);
- }
-
- private function addSymbol():void
- {
- dispatchEvent(new org.apache.flex.events.Event("addSymbol"));
- }
-
- public var selectedStockIndex:Number;
-
- private function selectRow():void
- {
- selectedStockIndex = dataGrid.selectedIndex;
- dispatchEvent(new org.apache.flex.events.Event("stockSelected"));
- }
-
- public function showStockDetails(stock:Stock):StockView
- {
- var stockView:StockView = new StockView();
- stockView.stock = stock;
- var vm:* = viewManager;
- (viewManager as StackedViewManager).push(stockView);
-
- var cm:IBeadController = controller;
-
- return stockView;
- }
-
- public function popView():void
- {
- (viewManager as StackedViewManager).pop();
- }
- ]]>
- </fx:Script>
-
- <js:beads>
- <js:VerticalLayout />
- </js:beads>
-
- <js:HContainer className="WatchListInputArea" width="100%" height="10%">
- <js:Label text="Symbol:" />
- <js:TextInput id="symbolName" />
- <js:TextButton text="Add" click="addSymbol()" />
- </js:HContainer>
-
- <js:Spacer height="10" />
-
- <js:DataGrid id="dataGrid" width="100%" height="85%" change="selectRow()" className="WatchListDataGrid">
- <js:beads>
- <js:DataGridPercentageLayout />
- <js:SimpleBinding
- eventName="update"
- sourceID="dataModel"
- sourcePropertyName="watchList"
- destinationPropertyName="dataProvider" />
- <js:DataProviderChangeNotifier sourceID="dataModel" propertyName="watchList"
- destinationPropertyName="dataProvider" changeEventName="dataProviderChanged" />
- </js:beads>
- <js:columns>
- <js:DataGridColumn label="Company (SYMB)" dataField="symbol" columnWidth="45"
- itemRenderer="renderers.CompanyNameRenderer" />
- <js:DataGridColumn label="Open" dataField="open" columnWidth="11"
- itemRenderer="renderers.StockRenderer" />
- <js:DataGridColumn label="Last" dataField="last"columnWidth="11"
- itemRenderer="renderers.StockRenderer" />
- <js:DataGridColumn label="Change" dataField="change"columnWidth="11"
- itemRenderer="renderers.StockRenderer" />
- <js:DataGridColumn label="High" dataField="high"columnWidth="11"
- itemRenderer="renderers.StockRenderer" />
- <js:DataGridColumn label="Low" dataField="low" columnWidth="11"
- itemRenderer="renderers.StockRenderer" />
- </js:columns>
- </js:DataGrid>
-
-</js:TitleView>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileTrader/resources/config.xml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileTrader/resources/config.xml b/examples/flexjs/MobileTrader/resources/config.xml
deleted file mode 100644
index 00b9f64..0000000
--- a/examples/flexjs/MobileTrader/resources/config.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<widget id="${groupId}.${artifactId}" version="${version}" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
- <name>${artifactId}</name>
- <description>
- ${description}
- </description>
- <author email="dev@flex.apache.org" href="http://flex.apache.org">
- Apache Flex Team
- </author>
- <content src="index.html" />
- <plugin name="cordova-plugin-whitelist" version="1" />
- <access origin="*" />
- <allow-intent href="http://*/*" />
- <allow-intent href="https://*/*" />
- <allow-intent href="tel:*" />
- <allow-intent href="sms:*" />
- <allow-intent href="mailto:*" />
- <allow-intent href="geo:*" />
- <platform name="android">
- <allow-intent href="market:*" />
- </platform>
- <platform name="ios">
- <allow-intent href="itms:*" />
- <allow-intent href="itms-apps:*" />
- </platform>
-</widget>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileTrader/src/MobileTrader.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileTrader/src/MobileTrader.mxml b/examples/flexjs/MobileTrader/src/MobileTrader.mxml
deleted file mode 100755
index c76531c..0000000
--- a/examples/flexjs/MobileTrader/src/MobileTrader.mxml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!---
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
--->
-<js:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:local="*"
- xmlns:models="models.*"
- xmlns:js="library://ns.apache.org/flexjs/basic"
- xmlns:controller="controller.*"
- >
-
- <js:valuesImpl>
- <js:SimpleCSSValuesImpl />
- </js:valuesImpl>
-
- <js:model>
- <models:ProductsModel />
- </js:model>
-
- <js:initialView>
- <local:MyInitialView width="100%" height="100%" />
- </js:initialView>
-</js:Application>