You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2016/10/27 15:16:06 UTC
[05/17] git commit: [flex-asjs]
[refs/heads/feature-autobuild/example-maven-dirs] - - 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/FlexWebsiteStatsViewer/src/main/flex/models/StatsModel.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/models/StatsModel.as b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/models/StatsModel.as
new file mode 100644
index 0000000..d6d1254
--- /dev/null
+++ b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/models/StatsModel.as
@@ -0,0 +1,55 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 StatsModel extends EventDispatcher
+ {
+ private var _lastThirtyDaysUsers:Array;
+ public function StatsModel()
+ {
+
+ }
+
+ [Bindable("lastThirtyDaysDataChanged")]
+ public function get lastThirtyDaysUsers():Array
+ {
+ return _lastThirtyDaysUsers;
+ }
+
+ public function set lastThirtyDaysUsers(v:Array):void
+ {
+ if(v != _lastThirtyDaysUsers)
+ {
+ _lastThirtyDaysUsers = v;
+ dispatchEvent(new Event("lastThirtyDaysDataChanged"));
+ }
+ }
+
+ private var _labelFields:Array = [ "date", "users"];
+ public function get labelFields():Array
+ {
+ return _labelFields;
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexWebsiteStatsViewer/src/models/StatsModel.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/models/StatsModel.as b/examples/flexjs/FlexWebsiteStatsViewer/src/models/StatsModel.as
deleted file mode 100644
index d6d1254..0000000
--- a/examples/flexjs/FlexWebsiteStatsViewer/src/models/StatsModel.as
+++ /dev/null
@@ -1,55 +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 StatsModel extends EventDispatcher
- {
- private var _lastThirtyDaysUsers:Array;
- public function StatsModel()
- {
-
- }
-
- [Bindable("lastThirtyDaysDataChanged")]
- public function get lastThirtyDaysUsers():Array
- {
- return _lastThirtyDaysUsers;
- }
-
- public function set lastThirtyDaysUsers(v:Array):void
- {
- if(v != _lastThirtyDaysUsers)
- {
- _lastThirtyDaysUsers = v;
- dispatchEvent(new Event("lastThirtyDaysDataChanged"));
- }
- }
-
- private var _labelFields:Array = [ "date", "users"];
- public function get labelFields():Array
- {
- return _labelFields;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/HelloWorld/src/HelloWorld.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/HelloWorld/src/HelloWorld.mxml b/examples/flexjs/HelloWorld/src/HelloWorld.mxml
deleted file mode 100644
index 70d8d20..0000000
--- a/examples/flexjs/HelloWorld/src/HelloWorld.mxml
+++ /dev/null
@@ -1,30 +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:js="library://ns.apache.org/flexjs/basic" >
- <js:valuesImpl>
- <js:SimpleCSSValuesImpl />
- </js:valuesImpl>
- <js:initialView>
- <js:View>
- <js:Label text="Hello World!" />
- </js:View>
- </js:initialView>
-</js:Application>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/HelloWorld/src/main/flex/HelloWorld.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/HelloWorld/src/main/flex/HelloWorld.mxml b/examples/flexjs/HelloWorld/src/main/flex/HelloWorld.mxml
new file mode 100644
index 0000000..70d8d20
--- /dev/null
+++ b/examples/flexjs/HelloWorld/src/main/flex/HelloWorld.mxml
@@ -0,0 +1,30 @@
+<?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:js="library://ns.apache.org/flexjs/basic" >
+ <js:valuesImpl>
+ <js:SimpleCSSValuesImpl />
+ </js:valuesImpl>
+ <js:initialView>
+ <js:View>
+ <js:Label text="Hello World!" />
+ </js:View>
+ </js:initialView>
+</js:Application>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MapSearch/src/MapSearch.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MapSearch/src/MapSearch.mxml b/examples/flexjs/MapSearch/src/MapSearch.mxml
deleted file mode 100644
index af06140..0000000
--- a/examples/flexjs/MapSearch/src/MapSearch.mxml
+++ /dev/null
@@ -1,46 +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"
- >
-
- <!-- This application demonstrates how to use the Google MAP API
- on both the AIR and JavaScript/browser platform. After cross-
- compiling this application for JavaScript, edit the index.html
- file and include your Google developer API token.
- -->
-
- <js:valuesImpl>
- <js:SimpleCSSValuesImpl />
- </js:valuesImpl>
- <js:initialView>
- <local:MyInitialView />
- </js:initialView>
- <js:model>
- <models:MyModel />
- </js:model>
- <js:beads>
- <js:MixinManager />
- </js:beads>
-
-</js:Application>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MapSearch/src/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MapSearch/src/MyInitialView.mxml b/examples/flexjs/MapSearch/src/MyInitialView.mxml
deleted file mode 100644
index 54ec4a2..0000000
--- a/examples/flexjs/MapSearch/src/MyInitialView.mxml
+++ /dev/null
@@ -1,211 +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:View xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:js="library://ns.apache.org/flexjs/basic"
- xmlns:google="library://ns.apache.org/flexjs/google"
- xmlns:local="*"
- initComplete="initControls()">
- <fx:Script>
- <![CDATA[
- import models.MyModel;
- import org.apache.flex.events.Event;
-
- import google.maps.places.PlaceResult;
- import google.maps.Marker;
-
- private function initControls() : void
- {
-
- }
-
- /**
- * Called when the map is ready for use. This function adds a variety of event
- * listners, some of which will trigger a new search.
- */
- private function onMapReady() : void
- {
- map.addEventListener("centered", onMapCenteredOrChanged);
- map.addEventListener("boundsChanged", onMapCenteredOrChanged);
- map.addEventListener("zoomChanged", onMapCenteredOrChanged);
- map.addEventListener("dragEnd", onMapCenteredOrChanged);
- map.addEventListener("markerClicked", onMarkerClicked);
-
- // Listen for changes to the search results on the map's model.
- map.model.addEventListener("searchResultsChanged", onSearchResults);
- }
-
- private var selectedCity:String;
-
- /**
- * Triggered by a change in the drop list with a new city selected. This
- * will also update the input fields.
- */
- private function changeCity(event:org.apache.flex.events.Event) : void
- {
- var index:int = list.selectedIndex;
- mapLocation.text = MyModel(applicationModel).cities[index];
- codeAddress();
- }
-
- private function codeAddress() : void
- {
- map.markAddress(mapLocation.text);
- }
-
- private function searchOnMap() : void
- {
- map.nearbySearch(search.text);
- }
-
- private function clearSearchResults() : void
- {
- map.clearSearchResults();
- }
-
- private function orientMap() : void
- {
- map.centerOnAddress(mapLocation.text);
- }
-
- /**
- * Called when the map has been re-centered or moved. The search results are
- * cleared and a new search is triggered.
- */
- private function onMapCenteredOrChanged(event:org.apache.flex.events.Event):void
- {
- clearSearchResults();
- if (search.text) searchOnMap();
- }
-
- /**
- * Called when search results are available in the map's model. This function
- * transfers those results to the application's model which is bound to the
- * List component.
- */
- private function onSearchResults(event:org.apache.flex.events.Event):void
- {
- var searchResults:Array = map.searchResults;
- MyModel(applicationModel).searchResults = searchResults;
- }
-
- /**
- * Called when a marker on the map has been selected. This function centers
- * the map on the marker and, if necessary, zooms the map in for closer
- * inspection.
- */
- private function onMarkerClicked(event:org.apache.flex.events.Event):void
- {
- var marker:Marker = map.selectedMarker as Marker;
- map.setZoom(12);
- map.setCenter(marker.getPosition());
- }
-
- ]]>
- </fx:Script>
-
- <fx:Style>
- @namespace basic "library://ns.apache.org/flexjs/basic";
-
- .FormLabel {
- font-weight: bold;
- font-size: 12;
- padding-left: 20px;
- padding-right: 20px;
- padding-top: 20px;
- padding-bottom: 20px;
- height: 22px;
- }
-
- .FormButton {
- font-weight: bold;
- font-size: 12;
- color: #000000;
- background-color: #FFFFFF;
- border-style: solid;
- padding-top: 5px;
- padding-bottom: 5px;
- padding-left: 5px;
- padding-right: 5px;
- }
-
- .FormInput {
- font-weight: normal;
- font-size: 12;
- color: #0000DE;
- padding: 0px;
- height: 20px;
- }
-
- .InnerBox {
- margin-top: 11px;
- margin-bottom: 10px;
- }
- </fx:Style>
-
- <js:beads>
- <js:ViewDataBinding />
- </js:beads>
-
-
- <js:Container x="5" y="5" className="topContainer" >
- <js:beads>
- <js:VerticalLayout />
- </js:beads>
-
- <js:Container className="InnerBox">
- <js:beads>
- <js:HorizontalLayout />
- </js:beads>
- <js:Label id="label1" text="Location:" className="FormLabel" />
- <js:TextInput id="mapLocation" />
- <js:TextButton text="Go" id="goButton" click="orientMap()" className="FormButton" />
-
- <js:DropDownList id="list" width="100" height="20"
- change="changeCity(event)"
- dataProvider="{MyModel(applicationModel).cities}" />
- </js:Container>
-
- <google:Map id="map" width="450" height="300" className="MainMap"
- token="AIzaSyDkQgg2iojLCYeuW6hK7DkuAHD-SwJJhdE"
- ready="onMapReady()"/>
-
- <js:Container className="InnerBox">
- <js:beads>
- <js:HorizontalLayout />
- </js:beads>
- <js:Label id="label2" text="Search on Map:" className="FormLabel" />
- <js:TextInput id="search" />
- <js:TextButton text="Find" click="searchOnMap()" className="FormButton" />
- <js:TextButton text="Clear"click="clearSearchResults()" className="FormButton" />
- </js:Container>
-
- <js:List id="resultsList" width="450" height="200">
- <js:beads>
- <js:SimpleBinding
- sourceID="applicationModel"
- sourcePropertyName="searchResults"
- eventName="searchResultsChanged"
- destinationPropertyName="dataProvider" />
- </js:beads>
- </js:List>
-
- </js:Container>
-
-</js:View>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MapSearch/src/main/flex/MapSearch.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MapSearch/src/main/flex/MapSearch.mxml b/examples/flexjs/MapSearch/src/main/flex/MapSearch.mxml
new file mode 100644
index 0000000..af06140
--- /dev/null
+++ b/examples/flexjs/MapSearch/src/main/flex/MapSearch.mxml
@@ -0,0 +1,46 @@
+<?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"
+ >
+
+ <!-- This application demonstrates how to use the Google MAP API
+ on both the AIR and JavaScript/browser platform. After cross-
+ compiling this application for JavaScript, edit the index.html
+ file and include your Google developer API token.
+ -->
+
+ <js:valuesImpl>
+ <js:SimpleCSSValuesImpl />
+ </js:valuesImpl>
+ <js:initialView>
+ <local:MyInitialView />
+ </js:initialView>
+ <js:model>
+ <models:MyModel />
+ </js:model>
+ <js:beads>
+ <js:MixinManager />
+ </js:beads>
+
+</js:Application>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MapSearch/src/main/flex/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MapSearch/src/main/flex/MyInitialView.mxml b/examples/flexjs/MapSearch/src/main/flex/MyInitialView.mxml
new file mode 100644
index 0000000..54ec4a2
--- /dev/null
+++ b/examples/flexjs/MapSearch/src/main/flex/MyInitialView.mxml
@@ -0,0 +1,211 @@
+<?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:View xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:js="library://ns.apache.org/flexjs/basic"
+ xmlns:google="library://ns.apache.org/flexjs/google"
+ xmlns:local="*"
+ initComplete="initControls()">
+ <fx:Script>
+ <![CDATA[
+ import models.MyModel;
+ import org.apache.flex.events.Event;
+
+ import google.maps.places.PlaceResult;
+ import google.maps.Marker;
+
+ private function initControls() : void
+ {
+
+ }
+
+ /**
+ * Called when the map is ready for use. This function adds a variety of event
+ * listners, some of which will trigger a new search.
+ */
+ private function onMapReady() : void
+ {
+ map.addEventListener("centered", onMapCenteredOrChanged);
+ map.addEventListener("boundsChanged", onMapCenteredOrChanged);
+ map.addEventListener("zoomChanged", onMapCenteredOrChanged);
+ map.addEventListener("dragEnd", onMapCenteredOrChanged);
+ map.addEventListener("markerClicked", onMarkerClicked);
+
+ // Listen for changes to the search results on the map's model.
+ map.model.addEventListener("searchResultsChanged", onSearchResults);
+ }
+
+ private var selectedCity:String;
+
+ /**
+ * Triggered by a change in the drop list with a new city selected. This
+ * will also update the input fields.
+ */
+ private function changeCity(event:org.apache.flex.events.Event) : void
+ {
+ var index:int = list.selectedIndex;
+ mapLocation.text = MyModel(applicationModel).cities[index];
+ codeAddress();
+ }
+
+ private function codeAddress() : void
+ {
+ map.markAddress(mapLocation.text);
+ }
+
+ private function searchOnMap() : void
+ {
+ map.nearbySearch(search.text);
+ }
+
+ private function clearSearchResults() : void
+ {
+ map.clearSearchResults();
+ }
+
+ private function orientMap() : void
+ {
+ map.centerOnAddress(mapLocation.text);
+ }
+
+ /**
+ * Called when the map has been re-centered or moved. The search results are
+ * cleared and a new search is triggered.
+ */
+ private function onMapCenteredOrChanged(event:org.apache.flex.events.Event):void
+ {
+ clearSearchResults();
+ if (search.text) searchOnMap();
+ }
+
+ /**
+ * Called when search results are available in the map's model. This function
+ * transfers those results to the application's model which is bound to the
+ * List component.
+ */
+ private function onSearchResults(event:org.apache.flex.events.Event):void
+ {
+ var searchResults:Array = map.searchResults;
+ MyModel(applicationModel).searchResults = searchResults;
+ }
+
+ /**
+ * Called when a marker on the map has been selected. This function centers
+ * the map on the marker and, if necessary, zooms the map in for closer
+ * inspection.
+ */
+ private function onMarkerClicked(event:org.apache.flex.events.Event):void
+ {
+ var marker:Marker = map.selectedMarker as Marker;
+ map.setZoom(12);
+ map.setCenter(marker.getPosition());
+ }
+
+ ]]>
+ </fx:Script>
+
+ <fx:Style>
+ @namespace basic "library://ns.apache.org/flexjs/basic";
+
+ .FormLabel {
+ font-weight: bold;
+ font-size: 12;
+ padding-left: 20px;
+ padding-right: 20px;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ height: 22px;
+ }
+
+ .FormButton {
+ font-weight: bold;
+ font-size: 12;
+ color: #000000;
+ background-color: #FFFFFF;
+ border-style: solid;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ padding-left: 5px;
+ padding-right: 5px;
+ }
+
+ .FormInput {
+ font-weight: normal;
+ font-size: 12;
+ color: #0000DE;
+ padding: 0px;
+ height: 20px;
+ }
+
+ .InnerBox {
+ margin-top: 11px;
+ margin-bottom: 10px;
+ }
+ </fx:Style>
+
+ <js:beads>
+ <js:ViewDataBinding />
+ </js:beads>
+
+
+ <js:Container x="5" y="5" className="topContainer" >
+ <js:beads>
+ <js:VerticalLayout />
+ </js:beads>
+
+ <js:Container className="InnerBox">
+ <js:beads>
+ <js:HorizontalLayout />
+ </js:beads>
+ <js:Label id="label1" text="Location:" className="FormLabel" />
+ <js:TextInput id="mapLocation" />
+ <js:TextButton text="Go" id="goButton" click="orientMap()" className="FormButton" />
+
+ <js:DropDownList id="list" width="100" height="20"
+ change="changeCity(event)"
+ dataProvider="{MyModel(applicationModel).cities}" />
+ </js:Container>
+
+ <google:Map id="map" width="450" height="300" className="MainMap"
+ token="AIzaSyDkQgg2iojLCYeuW6hK7DkuAHD-SwJJhdE"
+ ready="onMapReady()"/>
+
+ <js:Container className="InnerBox">
+ <js:beads>
+ <js:HorizontalLayout />
+ </js:beads>
+ <js:Label id="label2" text="Search on Map:" className="FormLabel" />
+ <js:TextInput id="search" />
+ <js:TextButton text="Find" click="searchOnMap()" className="FormButton" />
+ <js:TextButton text="Clear"click="clearSearchResults()" className="FormButton" />
+ </js:Container>
+
+ <js:List id="resultsList" width="450" height="200">
+ <js:beads>
+ <js:SimpleBinding
+ sourceID="applicationModel"
+ sourcePropertyName="searchResults"
+ eventName="searchResultsChanged"
+ destinationPropertyName="dataProvider" />
+ </js:beads>
+ </js:List>
+
+ </js:Container>
+
+</js:View>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MapSearch/src/main/flex/models/MyModel.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MapSearch/src/main/flex/models/MyModel.as b/examples/flexjs/MapSearch/src/main/flex/models/MyModel.as
new file mode 100644
index 0000000..8a1e8fd
--- /dev/null
+++ b/examples/flexjs/MapSearch/src/main/flex/models/MyModel.as
@@ -0,0 +1,71 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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;
+
+ public class MyModel extends EventDispatcher implements IBeadModel
+ {
+ public function MyModel()
+ {
+ super();
+ }
+
+ private var _strand:IStrand;
+
+ public function set strand(value:IStrand):void
+ {
+ _strand = value;
+ }
+
+ private var _cities:Array = ["Sydney", "NYC", "Mexico City", "London", "Rio de Janeiro"];
+
+ [Bindable]
+ public function get cities():Array
+ {
+ return _cities;
+ }
+
+ private var _coordinates:Array = [{lat:-33.86, lng:151.211},
+ {lat:40.712, lng:-74.0059},
+ {lat:19.26, lng:-99.03},
+ {lat:51.4, lng:-0.1},
+ {lat:-22.95, lng:-43.12}];
+ public function get coordinates():Array
+ {
+ return _coordinates;
+ }
+
+ private var _searchResults:Array = [];
+
+ [Bindable("searchResultsChanged")]
+ public function get searchResults():Array
+ {
+ return _searchResults;
+ }
+ public function set searchResults(value:Array):void
+ {
+ _searchResults = value;
+ dispatchEvent(new Event("searchResultsChanged"));
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MapSearch/src/models/MyModel.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MapSearch/src/models/MyModel.as b/examples/flexjs/MapSearch/src/models/MyModel.as
deleted file mode 100644
index 8a1e8fd..0000000
--- a/examples/flexjs/MapSearch/src/models/MyModel.as
+++ /dev/null
@@ -1,71 +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;
-
- public class MyModel extends EventDispatcher implements IBeadModel
- {
- public function MyModel()
- {
- super();
- }
-
- private var _strand:IStrand;
-
- public function set strand(value:IStrand):void
- {
- _strand = value;
- }
-
- private var _cities:Array = ["Sydney", "NYC", "Mexico City", "London", "Rio de Janeiro"];
-
- [Bindable]
- public function get cities():Array
- {
- return _cities;
- }
-
- private var _coordinates:Array = [{lat:-33.86, lng:151.211},
- {lat:40.712, lng:-74.0059},
- {lat:19.26, lng:-99.03},
- {lat:51.4, lng:-0.1},
- {lat:-22.95, lng:-43.12}];
- public function get coordinates():Array
- {
- return _coordinates;
- }
-
- private var _searchResults:Array = [];
-
- [Bindable("searchResultsChanged")]
- public function get searchResults():Array
- {
- return _searchResults;
- }
- public function set searchResults(value:Array):void
- {
- _searchResults = value;
- dispatchEvent(new Event("searchResultsChanged"));
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileMap/resources/config.xml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileMap/resources/config.xml b/examples/flexjs/MobileMap/resources/config.xml
deleted file mode 100644
index 00b9f64..0000000
--- a/examples/flexjs/MobileMap/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/MobileMap/src/MobileMap.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileMap/src/MobileMap.mxml b/examples/flexjs/MobileMap/src/MobileMap.mxml
deleted file mode 100644
index 1a68662..0000000
--- a/examples/flexjs/MobileMap/src/MobileMap.mxml
+++ /dev/null
@@ -1,71 +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.
-
--->
-<mjs:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:js="library://ns.apache.org/flexjs/basic"
- xmlns:mjs="library://ns.apache.org/flexjs/cordova"
- xmlns:google="library://ns.apache.org/flexjs/google"
- applicationComplete="onDeviceReady()">
- <js:valuesImpl>
- <js:SimpleCSSValuesImpl />
- </js:valuesImpl>
- <fx:Script>
- <![CDATA[
- import org.apache.cordova.geolocation.Geolocation;
- import google.maps.LatLng;
-
- private function onDeviceReady():void {
- label.text = "The device ready, loading map...";
-
- var location:Geolocation = new Geolocation();
- location.getCurrentPosition(onSuccess, onError);
- }
-
- private function onSuccess(position:Object):void
- {
- // Extract the latitude and longitude from the position
- // given and covert it to GoogleMaps LatLng object so
- // the map can be centered on it.
-
- var lat:Number = Number(position["coords"]["latitude"]);
- var lng:Number = Number(position["coords"]["longitude"]);
-
- label.text = String(lat) + ", " + String(lng);
- map.setCenter(new LatLng(lat, lng));
- }
-
- private function onError(error:*):void
- {
- label.text = "Location failure";
- }
- ]]>
- </fx:Script>
- <js:initialView>
- <js:View>
- <js:VContainer width="450" height="640">
- <js:HContainer width="100%" height="40">
- <js:Label text="Current Location: " width="25%" />
- <js:Label id="label" text="" width="75%" />
- </js:HContainer>
- <google:Map id="map" width="100%" height="600"
- token="AIzaSyDkQgg2iojLCYeuW6hK7DkuAHD-SwJJhdE" />
- </js:VContainer>
- </js:View>
- </js:initialView>
-</mjs:Application>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileMap/src/main/flex/MobileMap.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileMap/src/main/flex/MobileMap.mxml b/examples/flexjs/MobileMap/src/main/flex/MobileMap.mxml
new file mode 100644
index 0000000..1a68662
--- /dev/null
+++ b/examples/flexjs/MobileMap/src/main/flex/MobileMap.mxml
@@ -0,0 +1,71 @@
+<?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.
+
+-->
+<mjs:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:js="library://ns.apache.org/flexjs/basic"
+ xmlns:mjs="library://ns.apache.org/flexjs/cordova"
+ xmlns:google="library://ns.apache.org/flexjs/google"
+ applicationComplete="onDeviceReady()">
+ <js:valuesImpl>
+ <js:SimpleCSSValuesImpl />
+ </js:valuesImpl>
+ <fx:Script>
+ <![CDATA[
+ import org.apache.cordova.geolocation.Geolocation;
+ import google.maps.LatLng;
+
+ private function onDeviceReady():void {
+ label.text = "The device ready, loading map...";
+
+ var location:Geolocation = new Geolocation();
+ location.getCurrentPosition(onSuccess, onError);
+ }
+
+ private function onSuccess(position:Object):void
+ {
+ // Extract the latitude and longitude from the position
+ // given and covert it to GoogleMaps LatLng object so
+ // the map can be centered on it.
+
+ var lat:Number = Number(position["coords"]["latitude"]);
+ var lng:Number = Number(position["coords"]["longitude"]);
+
+ label.text = String(lat) + ", " + String(lng);
+ map.setCenter(new LatLng(lat, lng));
+ }
+
+ private function onError(error:*):void
+ {
+ label.text = "Location failure";
+ }
+ ]]>
+ </fx:Script>
+ <js:initialView>
+ <js:View>
+ <js:VContainer width="450" height="640">
+ <js:HContainer width="100%" height="40">
+ <js:Label text="Current Location: " width="25%" />
+ <js:Label id="label" text="" width="75%" />
+ </js:HContainer>
+ <google:Map id="map" width="100%" height="600"
+ token="AIzaSyDkQgg2iojLCYeuW6hK7DkuAHD-SwJJhdE" />
+ </js:VContainer>
+ </js:View>
+ </js:initialView>
+</mjs:Application>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileMap/src/main/resources/config.xml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileMap/src/main/resources/config.xml b/examples/flexjs/MobileMap/src/main/resources/config.xml
new file mode 100644
index 0000000..00b9f64
--- /dev/null
+++ b/examples/flexjs/MobileMap/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/resources/config.xml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/resources/config.xml b/examples/flexjs/MobileStocks/resources/config.xml
deleted file mode 100644
index 00b9f64..0000000
--- a/examples/flexjs/MobileStocks/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/MobileStocks/src/MobileStocks.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/MobileStocks.mxml b/examples/flexjs/MobileStocks/src/MobileStocks.mxml
deleted file mode 100644
index 1d30b37..0000000
--- a/examples/flexjs/MobileStocks/src/MobileStocks.mxml
+++ /dev/null
@@ -1,50 +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.
-
--->
-<cordova:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:local="*"
- xmlns:models="models.*"
- xmlns:views="views.*"
- xmlns:js="library://ns.apache.org/flexjs/basic"
- xmlns:cordova="library://ns.apache.org/flexjs/cordova"
- >
- <fx:Declarations>
- <!-- Place non-visual elements (e.g., services, value objects) here -->
- </fx:Declarations>
-
- <js:valuesImpl>
- <js:SimpleCSSValuesImpl />
- </js:valuesImpl>
-
- <js:model>
- <models:ProductsModel />
- </js:model>
-
- <js:initialView>
- <local:MyInitialView width="100%" height="100%" className="InitalView" />
- </js:initialView>
-
- <js:beads>
- <cordova:Weinre guid="aharui" />
- <js:MixinManager />
- <js:DeviceSizeBead />
- </js:beads>
-
-
-</cordova:Application>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/MyInitialView.mxml b/examples/flexjs/MobileStocks/src/MyInitialView.mxml
deleted file mode 100755
index b6853e2..0000000
--- a/examples/flexjs/MobileStocks/src/MyInitialView.mxml
+++ /dev/null
@@ -1,253 +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:View xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:local="*"
- xmlns:js="library://ns.apache.org/flexjs/basic"
- xmlns:views="views.*"
- xmlns:apache="org.apache.flex.html.beads.*"
- xmlns:html="org.apache.flex.html.*"
- xmlns:controller="controller.*"
- initComplete="onInitComplete()" xmlns:models="models.*" >
-
- <fx:Style>
- @namespace js "library://ns.apache.org/flexjs/basic";
- @namespace views "views.*";
-
- js|Container {
- background-color: #FFFFFF;
- }
-
- js|TextInput {
- font-size: 10pt;
- }
-
- js|Label {
- font-size: 8pt;
- }
-
- js|StackedViewManager {
- padding-top: 0px;
- padding-bottom: 0px;
- padding-left: 0px;
- padding-right: 0px;
- }
-
- js|TabbedViewManager {
- position : absolute ;
- height : 100% ;
- width : 100% ;
- left : 0px ;
- top : 0px ;
- border: solid 1px #444444;
- background-color: #FFFFFF;
- }
-
- .NavigationBar {
- background-image: url("assets/background.png");
- height: 56px;
- width: 100%;
- IBeadLayout: ClassReference("org.apache.flex.html.beads.layouts.HorizontalLayout");
- }
-
- .TabBar {
- background-color: #DEDEDE;
- height: 55px;
- vertical-align: middle;
- line-height: 55px;
- }
-
- .BackButton:hover {
- background-image: url('assets/arrow_left_24.png');
- }
-
- .BackButton:active {
- background-image: url('assets/arrow_left_24.png');
- }
-
- .BackButton {
- background-image: url('assets/arrow_left_24.png');
- }
-
- views|LaunchView {
- width: 100%;
- height: 100%;
- IBeadController:ClassReference('controller.LaunchViewController');
- background-color: #FFFFFF;
- }
-
- views|WatchListView {
- width: 100%;
- height: 100%;
- IBeadController:ClassReference('controller.WatchListController');
- background-color: #FFFFFF;
- }
-
- .WatchListInner {
- height: 480px;
- width: 100%;
- background-color: #FFFFFF;
- }
-
- .WatchListDataGrid {
- height: 480px;
- width: 100%;
- }
-
- .WatchListInputArea {
- background-color: #FFFFFF;
- width: 480px;
- height: 25px;
- padding-top: 5px;
- padding-bottom: 2px;
- }
-
- views|StockView {
- width: 100%;
- height: 100%;
- }
-
- .redCell {
- color: #FF0000;
- }
-
- .greenCell {
- color: #00FF00;
- }
-
- .ViewTitle {
- font-size: 18pt;
- font-weight: bold;
- padding: 10pt;
- }
-
- .StockName {
- font-size: 14pt;
- font-weight: normal;
- padding: 10pt;
- }
-
- .StockDetailArea {
- padding: 10pt;
- }
-
- .StockLabel {
- font-size: 18pt;
- font-weight: normal;
- color: #2255DD;
- }
-
- .StockRemoveButton {
- background-color: #FF5522;
- font-size: 16pt;
- font-weight: bold;
- color: #FFFFFF;
- width: 200px;
- height: 50px;
- }
-
- .StockRemoveButton:hover {
- background-color: #DD3300;
- }
-
- .StockValue {
- font-size: 18pt;
- font-weight: normal;
- color: #999999;
- }
-
- @media -flex-flash
- {
- .NavigationBar {
- IBackgroundBead: ClassReference("org.apache.flex.html.beads.BackgroundImageBead");
- }
- }
-
- </fx:Style>
-
- <fx:Script>
- <![CDATA[
- import org.apache.flex.core.IBeadController;
- import org.apache.flex.core.IBeadModel;
- import org.apache.flex.events.Event;
- import org.apache.flex.mobile.IViewManagerView;
- import org.apache.flex.mobile.IViewManager;
- import org.apache.flex.mobile.chrome.NavigationBar;
-
- import models.ProductsModel;
-
- private function onInitComplete():void
- {
- (applicationModel as ProductsModel).loadDataFromStorage();
- }
-
- /* debugging */
- private function tabbedViewChanged(event:org.apache.flex.events.Event):void
- {
- //var manager:IViewManager = event.currentTarget as IViewManager;
- //trace("TabbedViewChanged for "+manager);
- }
-
- private function watchListStackChanged(event:org.apache.flex.events.Event):void
- {
- //trace("watchlist stack changed");
- var manager:StackedViewManager = event.currentTarget as StackedViewManager;
-
- var currentView:IViewManagerView = manager.selectedView;
- backButton.visible = manager.views.length > 1;
- }
-
- private function goBack(event:org.apache.flex.events.MouseEvent):void
- {
- if (navController.selectedIndex == 1) {
- watchListStack.pop();
- }
- }
- ]]>
- </fx:Script>
-
- <js:beads>
- <js:ViewDataBinding />
- </js:beads>
-
- <js:TabbedViewManager id="navController" width="100%" height="100%" x="0" y="0" viewChanged="tabbedViewChanged(event)">
- <js:navigationBarItems>
- <js:TextButton id="backButton" width="45" height="45" className="BackButton" visible="false" click="goBack(event)">
- <js:beads>
- <apache:ImageButtonView />
- </js:beads>
- </js:TextButton>
- <js:Image source="assets/logo.png" width="218" height="55" />
- </js:navigationBarItems>
- <js:views>
- <js:StackedViewManager title="Assets">
- <js:views>
- <views:LaunchView id="assetsView" title="Assets" dataModel="{applicationModel}" />
- </js:views>
- </js:StackedViewManager>
-
- <js:StackedViewManager id="watchListStack" title="Watch List" viewChanged="watchListStackChanged(event)">
- <js:views>
- <views:WatchListView id="watchListView" dataModel="{applicationModel}"/>
- </js:views>
- </js:StackedViewManager>
- </js:views>
- </js:TabbedViewManager>
-
-</js:View>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/StockDataJSONItemConverter.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/StockDataJSONItemConverter.as b/examples/flexjs/MobileStocks/src/StockDataJSONItemConverter.as
deleted file mode 100755
index 92a75dc..0000000
--- a/examples/flexjs/MobileStocks/src/StockDataJSONItemConverter.as
+++ /dev/null
@@ -1,41 +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
-{
- import org.apache.flex.collections.converters.JSONItemConverter;
-
- public class StockDataJSONItemConverter extends JSONItemConverter
- {
- public function StockDataJSONItemConverter()
- {
- super();
- }
-
- override public function convertItem(data:String):Object
- {
- var obj:Object = super.convertItem(data);
- if (obj["query"] == null) return "No Data";
- if (obj["query"]["count"] == 0)
- return "No Data";
-
- obj = obj["query"]["results"]["quote"];
- return obj;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/VerticalLayoutTextView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/VerticalLayoutTextView.mxml b/examples/flexjs/MobileStocks/src/VerticalLayoutTextView.mxml
deleted file mode 100755
index 0353195..0000000
--- a/examples/flexjs/MobileStocks/src/VerticalLayoutTextView.mxml
+++ /dev/null
@@ -1,68 +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:View xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:js="library://ns.apache.org/flexjs/basic"
- >
-
- <fx:Style>
- @namespace js "library://ns.apache.org/flexjs/basic";
- @namespace views "views.*";
-
- .TopContainer {
- background-color: #FFFFCC;
- }
-
- .MidContainer {
- background-color: #FFCCFF;
- }
-
- .BotContainer {
- background-color: #CCFFFF;
- }
-
- </fx:Style>
-
- <fx:Script>
- <![CDATA[
-
- ]]>
- </fx:Script>
-
- <js:beads>
- <js:ViewDataBinding />
- </js:beads>
-
- <js:VContainer width="100%" height="100%">
-
- <js:Container width="100%" height="25%" className="TopContainer">
- <js:Label text="Top Container: 25%" />
- </js:Container>
-
- <js:Container width="100%" height="50%" className="MidContainer">
- <js:Label text="Middle Container: 50%" />
- </js:Container>
-
- <js:Container width="100%" height="25%" className="BotContainer">
- <js:Label text="Bottom Container: 25%" />
- </js:Container>
-
- </js:VContainer>
-
-</js:View>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/assets/arrow_left_24.png
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/assets/arrow_left_24.png b/examples/flexjs/MobileStocks/src/assets/arrow_left_24.png
deleted file mode 100755
index a3019ba..0000000
Binary files a/examples/flexjs/MobileStocks/src/assets/arrow_left_24.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/assets/background.png
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/assets/background.png b/examples/flexjs/MobileStocks/src/assets/background.png
deleted file mode 100755
index 87bbd59..0000000
Binary files a/examples/flexjs/MobileStocks/src/assets/background.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/assets/logo.png
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/assets/logo.png b/examples/flexjs/MobileStocks/src/assets/logo.png
deleted file mode 100755
index 0fb0f21..0000000
Binary files a/examples/flexjs/MobileStocks/src/assets/logo.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/controller/LaunchViewController.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/controller/LaunchViewController.as b/examples/flexjs/MobileStocks/src/controller/LaunchViewController.as
deleted file mode 100644
index 2b88d26..0000000
--- a/examples/flexjs/MobileStocks/src/controller/LaunchViewController.as
+++ /dev/null
@@ -1,150 +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 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.LaunchView;
-
- public class LaunchViewController extends EventDispatcher implements IBeadController
- {
- public function LaunchViewController()
- {
- 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:LaunchView = value as LaunchView;
- view.addEventListener("addSymbol", handleAddSymbol);
- view.addEventListener("removeSymbol", handleRemoveSymbol);
- view.addEventListener("symbolSelected", 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:LaunchView = _strand as LaunchView;
- var symbol:String = view.symbolInput.text.toUpperCase();
- var shares:Number = Number(view.sharesInput.text);
- if (isNaN(shares) || shares < 0) shares = 0;
-
- (model as ProductsModel).addStockToAssetList(symbol, shares);
- (model as ProductsModel).saveDataToStorage();
-
- subscribe();
-
- view.symbolInput.text = "";
- view.sharesInput.text = "";
- view.addButton.text = "Add";
- }
-
- private function handleGridSelection(event:Event):void
- {
- var view:LaunchView = _strand as LaunchView;
- var index:int = view.assetGrid.selectedIndex;
- var data:Object = (model as ProductsModel).assetList.getItemAt(index);
- view.symbolInput.text = data.symbol;
- view.sharesInput.text = String(data.shares);
-
- view.addButton.text = "Change";
- }
-
- public function handleRemoveSymbol(event:Event):void
- {
- var view:LaunchView = _strand as LaunchView;
- var index:int = view.assetGrid.selectedIndex;
- if (index < 0) return;
-
- (model as ProductsModel).removeStockFromAssetListAtIndex(index);
-
- view.symbolInput.text = "";
- view.sharesInput.text = "";
-
- view.addButton.text = "Add";
- }
-
- 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).assetList;
-
- 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/controller/WatchListController.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/controller/WatchListController.as b/examples/flexjs/MobileStocks/src/controller/WatchListController.as
deleted file mode 100644
index 0d94e5f..0000000
--- a/examples/flexjs/MobileStocks/src/controller/WatchListController.as
+++ /dev/null
@@ -1,139 +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 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/MobileStocks.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/MobileStocks.mxml b/examples/flexjs/MobileStocks/src/main/flex/MobileStocks.mxml
new file mode 100644
index 0000000..1d30b37
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/MobileStocks.mxml
@@ -0,0 +1,50 @@
+<?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.
+
+-->
+<cordova:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:local="*"
+ xmlns:models="models.*"
+ xmlns:views="views.*"
+ xmlns:js="library://ns.apache.org/flexjs/basic"
+ xmlns:cordova="library://ns.apache.org/flexjs/cordova"
+ >
+ <fx:Declarations>
+ <!-- Place non-visual elements (e.g., services, value objects) here -->
+ </fx:Declarations>
+
+ <js:valuesImpl>
+ <js:SimpleCSSValuesImpl />
+ </js:valuesImpl>
+
+ <js:model>
+ <models:ProductsModel />
+ </js:model>
+
+ <js:initialView>
+ <local:MyInitialView width="100%" height="100%" className="InitalView" />
+ </js:initialView>
+
+ <js:beads>
+ <cordova:Weinre guid="aharui" />
+ <js:MixinManager />
+ <js:DeviceSizeBead />
+ </js:beads>
+
+
+</cordova:Application>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/MyInitialView.mxml b/examples/flexjs/MobileStocks/src/main/flex/MyInitialView.mxml
new file mode 100755
index 0000000..b6853e2
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/MyInitialView.mxml
@@ -0,0 +1,253 @@
+<?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:View xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:local="*"
+ xmlns:js="library://ns.apache.org/flexjs/basic"
+ xmlns:views="views.*"
+ xmlns:apache="org.apache.flex.html.beads.*"
+ xmlns:html="org.apache.flex.html.*"
+ xmlns:controller="controller.*"
+ initComplete="onInitComplete()" xmlns:models="models.*" >
+
+ <fx:Style>
+ @namespace js "library://ns.apache.org/flexjs/basic";
+ @namespace views "views.*";
+
+ js|Container {
+ background-color: #FFFFFF;
+ }
+
+ js|TextInput {
+ font-size: 10pt;
+ }
+
+ js|Label {
+ font-size: 8pt;
+ }
+
+ js|StackedViewManager {
+ padding-top: 0px;
+ padding-bottom: 0px;
+ padding-left: 0px;
+ padding-right: 0px;
+ }
+
+ js|TabbedViewManager {
+ position : absolute ;
+ height : 100% ;
+ width : 100% ;
+ left : 0px ;
+ top : 0px ;
+ border: solid 1px #444444;
+ background-color: #FFFFFF;
+ }
+
+ .NavigationBar {
+ background-image: url("assets/background.png");
+ height: 56px;
+ width: 100%;
+ IBeadLayout: ClassReference("org.apache.flex.html.beads.layouts.HorizontalLayout");
+ }
+
+ .TabBar {
+ background-color: #DEDEDE;
+ height: 55px;
+ vertical-align: middle;
+ line-height: 55px;
+ }
+
+ .BackButton:hover {
+ background-image: url('assets/arrow_left_24.png');
+ }
+
+ .BackButton:active {
+ background-image: url('assets/arrow_left_24.png');
+ }
+
+ .BackButton {
+ background-image: url('assets/arrow_left_24.png');
+ }
+
+ views|LaunchView {
+ width: 100%;
+ height: 100%;
+ IBeadController:ClassReference('controller.LaunchViewController');
+ background-color: #FFFFFF;
+ }
+
+ views|WatchListView {
+ width: 100%;
+ height: 100%;
+ IBeadController:ClassReference('controller.WatchListController');
+ background-color: #FFFFFF;
+ }
+
+ .WatchListInner {
+ height: 480px;
+ width: 100%;
+ background-color: #FFFFFF;
+ }
+
+ .WatchListDataGrid {
+ height: 480px;
+ width: 100%;
+ }
+
+ .WatchListInputArea {
+ background-color: #FFFFFF;
+ width: 480px;
+ height: 25px;
+ padding-top: 5px;
+ padding-bottom: 2px;
+ }
+
+ views|StockView {
+ width: 100%;
+ height: 100%;
+ }
+
+ .redCell {
+ color: #FF0000;
+ }
+
+ .greenCell {
+ color: #00FF00;
+ }
+
+ .ViewTitle {
+ font-size: 18pt;
+ font-weight: bold;
+ padding: 10pt;
+ }
+
+ .StockName {
+ font-size: 14pt;
+ font-weight: normal;
+ padding: 10pt;
+ }
+
+ .StockDetailArea {
+ padding: 10pt;
+ }
+
+ .StockLabel {
+ font-size: 18pt;
+ font-weight: normal;
+ color: #2255DD;
+ }
+
+ .StockRemoveButton {
+ background-color: #FF5522;
+ font-size: 16pt;
+ font-weight: bold;
+ color: #FFFFFF;
+ width: 200px;
+ height: 50px;
+ }
+
+ .StockRemoveButton:hover {
+ background-color: #DD3300;
+ }
+
+ .StockValue {
+ font-size: 18pt;
+ font-weight: normal;
+ color: #999999;
+ }
+
+ @media -flex-flash
+ {
+ .NavigationBar {
+ IBackgroundBead: ClassReference("org.apache.flex.html.beads.BackgroundImageBead");
+ }
+ }
+
+ </fx:Style>
+
+ <fx:Script>
+ <![CDATA[
+ import org.apache.flex.core.IBeadController;
+ import org.apache.flex.core.IBeadModel;
+ import org.apache.flex.events.Event;
+ import org.apache.flex.mobile.IViewManagerView;
+ import org.apache.flex.mobile.IViewManager;
+ import org.apache.flex.mobile.chrome.NavigationBar;
+
+ import models.ProductsModel;
+
+ private function onInitComplete():void
+ {
+ (applicationModel as ProductsModel).loadDataFromStorage();
+ }
+
+ /* debugging */
+ private function tabbedViewChanged(event:org.apache.flex.events.Event):void
+ {
+ //var manager:IViewManager = event.currentTarget as IViewManager;
+ //trace("TabbedViewChanged for "+manager);
+ }
+
+ private function watchListStackChanged(event:org.apache.flex.events.Event):void
+ {
+ //trace("watchlist stack changed");
+ var manager:StackedViewManager = event.currentTarget as StackedViewManager;
+
+ var currentView:IViewManagerView = manager.selectedView;
+ backButton.visible = manager.views.length > 1;
+ }
+
+ private function goBack(event:org.apache.flex.events.MouseEvent):void
+ {
+ if (navController.selectedIndex == 1) {
+ watchListStack.pop();
+ }
+ }
+ ]]>
+ </fx:Script>
+
+ <js:beads>
+ <js:ViewDataBinding />
+ </js:beads>
+
+ <js:TabbedViewManager id="navController" width="100%" height="100%" x="0" y="0" viewChanged="tabbedViewChanged(event)">
+ <js:navigationBarItems>
+ <js:TextButton id="backButton" width="45" height="45" className="BackButton" visible="false" click="goBack(event)">
+ <js:beads>
+ <apache:ImageButtonView />
+ </js:beads>
+ </js:TextButton>
+ <js:Image source="assets/logo.png" width="218" height="55" />
+ </js:navigationBarItems>
+ <js:views>
+ <js:StackedViewManager title="Assets">
+ <js:views>
+ <views:LaunchView id="assetsView" title="Assets" dataModel="{applicationModel}" />
+ </js:views>
+ </js:StackedViewManager>
+
+ <js:StackedViewManager id="watchListStack" title="Watch List" viewChanged="watchListStackChanged(event)">
+ <js:views>
+ <views:WatchListView id="watchListView" dataModel="{applicationModel}"/>
+ </js:views>
+ </js:StackedViewManager>
+ </js:views>
+ </js:TabbedViewManager>
+
+</js:View>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/StockDataJSONItemConverter.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/StockDataJSONItemConverter.as b/examples/flexjs/MobileStocks/src/main/flex/StockDataJSONItemConverter.as
new file mode 100755
index 0000000..92a75dc
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/StockDataJSONItemConverter.as
@@ -0,0 +1,41 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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
+{
+ import org.apache.flex.collections.converters.JSONItemConverter;
+
+ public class StockDataJSONItemConverter extends JSONItemConverter
+ {
+ public function StockDataJSONItemConverter()
+ {
+ super();
+ }
+
+ override public function convertItem(data:String):Object
+ {
+ var obj:Object = super.convertItem(data);
+ if (obj["query"] == null) return "No Data";
+ if (obj["query"]["count"] == 0)
+ return "No Data";
+
+ obj = obj["query"]["results"]["quote"];
+ return obj;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/VerticalLayoutTextView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/VerticalLayoutTextView.mxml b/examples/flexjs/MobileStocks/src/main/flex/VerticalLayoutTextView.mxml
new file mode 100755
index 0000000..0353195
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/VerticalLayoutTextView.mxml
@@ -0,0 +1,68 @@
+<?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:View xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:js="library://ns.apache.org/flexjs/basic"
+ >
+
+ <fx:Style>
+ @namespace js "library://ns.apache.org/flexjs/basic";
+ @namespace views "views.*";
+
+ .TopContainer {
+ background-color: #FFFFCC;
+ }
+
+ .MidContainer {
+ background-color: #FFCCFF;
+ }
+
+ .BotContainer {
+ background-color: #CCFFFF;
+ }
+
+ </fx:Style>
+
+ <fx:Script>
+ <![CDATA[
+
+ ]]>
+ </fx:Script>
+
+ <js:beads>
+ <js:ViewDataBinding />
+ </js:beads>
+
+ <js:VContainer width="100%" height="100%">
+
+ <js:Container width="100%" height="25%" className="TopContainer">
+ <js:Label text="Top Container: 25%" />
+ </js:Container>
+
+ <js:Container width="100%" height="50%" className="MidContainer">
+ <js:Label text="Middle Container: 50%" />
+ </js:Container>
+
+ <js:Container width="100%" height="25%" className="BotContainer">
+ <js:Label text="Bottom Container: 25%" />
+ </js:Container>
+
+ </js:VContainer>
+
+</js:View>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/assets/arrow_left_24.png
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/assets/arrow_left_24.png b/examples/flexjs/MobileStocks/src/main/flex/assets/arrow_left_24.png
new file mode 100755
index 0000000..a3019ba
Binary files /dev/null and b/examples/flexjs/MobileStocks/src/main/flex/assets/arrow_left_24.png differ
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/assets/background.png
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/assets/background.png b/examples/flexjs/MobileStocks/src/main/flex/assets/background.png
new file mode 100755
index 0000000..87bbd59
Binary files /dev/null and b/examples/flexjs/MobileStocks/src/main/flex/assets/background.png differ
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/assets/logo.png
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/assets/logo.png b/examples/flexjs/MobileStocks/src/main/flex/assets/logo.png
new file mode 100755
index 0000000..0fb0f21
Binary files /dev/null and b/examples/flexjs/MobileStocks/src/main/flex/assets/logo.png differ
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/MobileStocks/src/main/flex/controller/LaunchViewController.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/MobileStocks/src/main/flex/controller/LaunchViewController.as b/examples/flexjs/MobileStocks/src/main/flex/controller/LaunchViewController.as
new file mode 100644
index 0000000..2b88d26
--- /dev/null
+++ b/examples/flexjs/MobileStocks/src/main/flex/controller/LaunchViewController.as
@@ -0,0 +1,150 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.LaunchView;
+
+ public class LaunchViewController extends EventDispatcher implements IBeadController
+ {
+ public function LaunchViewController()
+ {
+ 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:LaunchView = value as LaunchView;
+ view.addEventListener("addSymbol", handleAddSymbol);
+ view.addEventListener("removeSymbol", handleRemoveSymbol);
+ view.addEventListener("symbolSelected", 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:LaunchView = _strand as LaunchView;
+ var symbol:String = view.symbolInput.text.toUpperCase();
+ var shares:Number = Number(view.sharesInput.text);
+ if (isNaN(shares) || shares < 0) shares = 0;
+
+ (model as ProductsModel).addStockToAssetList(symbol, shares);
+ (model as ProductsModel).saveDataToStorage();
+
+ subscribe();
+
+ view.symbolInput.text = "";
+ view.sharesInput.text = "";
+ view.addButton.text = "Add";
+ }
+
+ private function handleGridSelection(event:Event):void
+ {
+ var view:LaunchView = _strand as LaunchView;
+ var index:int = view.assetGrid.selectedIndex;
+ var data:Object = (model as ProductsModel).assetList.getItemAt(index);
+ view.symbolInput.text = data.symbol;
+ view.sharesInput.text = String(data.shares);
+
+ view.addButton.text = "Change";
+ }
+
+ public function handleRemoveSymbol(event:Event):void
+ {
+ var view:LaunchView = _strand as LaunchView;
+ var index:int = view.assetGrid.selectedIndex;
+ if (index < 0) return;
+
+ (model as ProductsModel).removeStockFromAssetListAtIndex(index);
+
+ view.symbolInput.text = "";
+ view.sharesInput.text = "";
+
+ view.addButton.text = "Add";
+ }
+
+ 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).assetList;
+
+ 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);
+ }
+ }
+}