You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ha...@apache.org on 2016/09/27 09:50:04 UTC

[19/28] git commit: [flex-asjs] [refs/heads/refactor-sprite] - New MobileStocks app. A work in progress so it is not connected to the examples build yet.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c1682af6/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
new file mode 100644
index 0000000..5d14065
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/views/LaunchView.mxml
@@ -0,0 +1,161 @@
+<?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="*"
+			className="AssetsView" xmlns:views="views.*">
+	<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;
+		}
+	</fx:Style>
+	
+	<fx:Metadata>
+		[Event("next")]
+	</fx:Metadata>
+	
+	<js:beads>
+		<js:VerticalLayout />
+	</js:beads>
+	
+	<js:model>
+		<models:AssetsModel />
+	</js:model>
+
+	<js:HContainer height="10%">
+		<js:Label text="Symbol:" />
+		<js:TextInput id="symbolInput" width="50" />
+		<js:Spacer width="10" />
+		<js:Label text="Shares:" />
+		<js:TextInput id="sharesInput" width="50" />
+		<js:Spacer width="10" />
+		<js:TextButton id="addButton" text="Add" width="80" click="addSymbol()" />
+		<js:Spacer width="30" />
+		<js:TextButton id="removeButton" text="Remove" width="80" click="removeSymbol()" />
+	</js:HContainer>
+	
+	<js:DataGrid id="assetGrid" height="45%" width="510" rowHeight="25" change="gridSelected()">
+		<js:beads>
+			<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="250" label="Company (SYMB)" dataField="name" itemRenderer="renderers.CompanyNameRenderer" />
+			<js:DataGridColumn columnWidth="80" label="Shares" dataField="shares" />
+			<js:DataGridColumn columnWidth="80" label="Last" dataField="last" />
+			<js:DataGridColumn columnWidth="100" label="Total $" dataField="shares" itemRenderer="renderers.SharesTotalRenderer" />
+		</js:columns>
+	</js:DataGrid>
+	
+	<js:Spacer height="3%" />
+		
+	<js:StackedBarChart id="barChart" width="510" height="40%" className="AllCharts">
+		<js:model>
+			<js:ChartArrayListSelectionModel />
+		</js:model>
+		<js:beads>
+			<js:DataItemRendererFactoryForSeriesArrayListData />
+			<js:StackedBarChartLayoutForArrayList />
+			<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:StackedBarChart>
+
+</js:TitleView>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c1682af6/examples/flexjs/MobileStocks/src/views/SearchView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/views/SearchView.mxml b/examples/flexjs/MobileStocks/src/views/SearchView.mxml
new file mode 100755
index 0000000..0348fba
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/views/SearchView.mxml
@@ -0,0 +1,37 @@
+<?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 org.apache.flex.mobile.StackedViewManager;
+			private function onBackClick() : void
+			{
+				(viewManager as StackedViewManager).pop();
+			}
+		]]>
+	</fx:Script>
+		
+	<js:Label text="Search View" x="20" y="100" />
+</js:TitleView>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c1682af6/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
new file mode 100755
index 0000000..ca86ba7
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/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/c1682af6/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
new file mode 100755
index 0000000..f4dcd94
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/views/WatchListView.mxml
@@ -0,0 +1,154 @@
+<?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: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" 
+			                   itemRenderer="renderers.CompanyNameRenderer" />
+			<js:DataGridColumn label="Open" dataField="open"
+			                   itemRenderer="renderers.StockRenderer" />
+			<js:DataGridColumn label="Last" dataField="last" >
+				<js:itemRenderer>
+					<fx:Component>
+						<renderers:StockRenderer />
+					</fx:Component>
+				</js:itemRenderer>
+			</js:DataGridColumn>
+			<js:DataGridColumn label="Change" dataField="change">
+				<js:itemRenderer>
+					<fx:Component>
+						<renderers:StockRenderer />
+					</fx:Component>
+				</js:itemRenderer>
+			</js:DataGridColumn>
+			<js:DataGridColumn label="High" dataField="high" >
+				<js:itemRenderer>
+					<fx:Component>
+						<renderers:StockRenderer />
+					</fx:Component>
+				</js:itemRenderer>
+			</js:DataGridColumn>
+			<js:DataGridColumn label="Low" dataField="low" >
+				<js:itemRenderer>
+					<fx:Component>
+						<renderers:StockRenderer />
+					</fx:Component>
+				</js:itemRenderer>
+			</js:DataGridColumn>
+		</js:columns>
+	</js:DataGrid>
+	
+</js:TitleView>