Added StorageExample to FlexJS examples.

Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/1c69a390
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/1c69a390
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/1c69a390

Branch: refs/heads/spark
Commit: 1c69a390af29678d4797d3e9648b06b69ed87510
Parents: 1bc555d
Author: Peter Ent <[email protected]>
Authored: Wed Mar 9 11:13:26 2016 -0500
Committer: Peter Ent <[email protected]>
Committed: Wed Mar 9 11:13:26 2016 -0500

----------------------------------------------------------------------
 examples/build.xml                              |   2 +
 examples/flexjs/StorageExample/README.txt       |  81 ++++++
 .../StorageExample/StorageExample-app.xml       | 252 +++++++++++++++++++
 examples/flexjs/StorageExample/build.xml        |  77 ++++++
 examples/flexjs/StorageExample/pom.xml          |  50 ++++
 .../StorageExample/src/MyInitialView.mxml       | 131 ++++++++++
 .../StorageExample/src/StorageExample.mxml      |  42 ++++
 .../flexjs/StorageExample/src/models/MyModel.as |  58 +++++
 8 files changed, 693 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1c69a390/examples/build.xml
----------------------------------------------------------------------
diff --git a/examples/build.xml b/examples/build.xml
index 7efccfc..27d1816 100644
--- a/examples/build.xml
+++ b/examples/build.xml
@@ -85,6 +85,7 @@
         <ant dir="${basedir}/flexjs/MapSearch"/>
         <ant dir="${basedir}/flexjs/MobileTrader"/>
         <ant dir="${basedir}/flexjs/ChartExample"/>
+        <ant dir="${basedir}/flexjs/StorageExample"/>
         <ant dir="${basedir}/flexjs/TodoListSampleApp"/>
         <ant dir="${basedir}/flexjs/TreeExample"/>
         <ant dir="${basedir}/native/ButtonExample"/>
@@ -113,6 +114,7 @@
         <ant dir="${basedir}/flexjs/MapSearch" target="clean"/>
         <ant dir="${basedir}/flexjs/MobileTrader" target="clean"/>
         <ant dir="${basedir}/flexjs/ChartExample" target="clean"/>
+        <ant dir="${basedir}/flexjs/StorageExample" target="clean"/>
         <ant dir="${basedir}/flexjs/TodoListSampleApp" target="clean"/>
         <ant dir="${basedir}/flexjs/TreeExample" target="clean"/>
         <ant dir="${basedir}/native/ButtonExample" target="clean"/>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1c69a390/examples/flexjs/StorageExample/README.txt
----------------------------------------------------------------------
diff --git a/examples/flexjs/StorageExample/README.txt 
b/examples/flexjs/StorageExample/README.txt
new file mode 100644
index 0000000..12cb609
--- /dev/null
+++ b/examples/flexjs/StorageExample/README.txt
@@ -0,0 +1,81 @@
+Storage Example
+
+The StorageExample is designed to show you have to read and write simple, but 
permanent files using
+the FlexJS Storage framework.
+
+Permanent storage is available when the target platform is either Adobe AIR 
(desktop or mobile device)
+or Apache Cordova (mobile devices).
+
+Build the Example
+
+1. Run the build (ant)
+
+This will build both the AIR and Cordova-compatible versions. The AIR version 
will be in the
+bin-debug directory. The Cordova-compatible versions will be in the js-debug 
and js-release
+directories.
+
+Running on Adobe AIR
+
+1. Run the example (ant run).
+
+This will launch the SWF as an AIR application. 
+
+Running on an Android Device using Cordova
+
+This is a somewhat complex process. The JavaScript and HTML files that were 
built (bin/js-debug)
+need to be moved into a Cordova project. Once there, the application can be 
deployed to a device
+or run in an emulator.
+
+1. In a clean directory, outside of the flex-asjs directories, use the cordova 
command line
+interface to build an empty application:
+
+cordova create filetest org.apache.flex "FileTest"
+cd filetest
+
+2. Add in the Android platform and the Cordova File plugin:
+
+cordova platform add android
+cordova plugin add cordova-plugin-file
+
+3. Go to the StorageExample/bin/js-debug directory and copy all of the files 
and directories
+into the filetest/www directory:
+
+index.html (replaces the index.html from the generated cordova app)
+MyInitialView.js
+StorageExample.css
+StorageExample.js
+externs/
+library/
+models/
+org/
+
+
+4. Open filetest/www/index.html and replace the <body> element with this:
+
+<body onload="startup()">
+  <script type="text/javascript" src="cordova.js"></script>
+  <script type="text/javascript">
+      function startup() {
+        document.addEventListener('deviceready', this.onDeviceReady, false);
+      }
+      function onDeviceReady() {
+         new StorageExample().start();
+      }
+  </script>
+</body>
+
+
+5. Build the Cordova app from the top filetest directory:
+
+cordova build
+
+6. You can run it either in an emulator on a connected device:
+
+(emulator): cordova emulate android
+(device): cordova run android
+
+The filetest/platforms/android directory can be opened from Android Studio if 
you want to
+use an Android IDE. If you need to make changes, do that in the filetest/www 
directory,
+then run "cordova build" again. Android Studio will detect the change, ask you 
to re-sync,
+and after that, you can re-redeploy the changed app to the device.
+ 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1c69a390/examples/flexjs/StorageExample/StorageExample-app.xml
----------------------------------------------------------------------
diff --git a/examples/flexjs/StorageExample/StorageExample-app.xml 
b/examples/flexjs/StorageExample/StorageExample-app.xml
new file mode 100644
index 0000000..62657d2
--- /dev/null
+++ b/examples/flexjs/StorageExample/StorageExample-app.xml
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!--
+
+  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.
+
+-->
+<application xmlns="http://ns.adobe.com/air/application/16.0";>
+
+<!-- Adobe AIR Application Descriptor File Template.
+
+       Specifies parameters for identifying, installing, and launching AIR 
applications.
+
+       xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/3.8
+                       The last segment of the namespace specifies the version
+                       of the AIR runtime required for this application to run.
+
+       minimumPatchLevel - The minimum patch level of the AIR runtime required 
to run
+                       the application. Optional.
+-->
+
+       <!-- A universally unique application identifier. Must be unique across 
all AIR applications.
+       Using a reverse DNS-style name as the id is recommended. (Eg. 
com.example.ExampleApplication.) Required. -->
+       <id>org.apache.flexjs.storageexample</id>
+
+       <!-- Used as the filename for the application. Required. -->
+       <filename>Apache FlexJS Storage Example</filename>
+
+       <!-- The name that is displayed in the AIR application installer.
+       May have multiple values for each language. See samples or xsd schema 
file. Optional. -->
+       <name>Apache FlexJS Storage Example</name>
+
+       <!-- A string value of the format <0-999>.<0-999>.<0-999> that 
represents application version which can be used to check for application 
upgrade.
+       Values can also be 1-part or 2-part. It is not necessary to have a 
3-part value.
+       An updated version of application must have a versionNumber value 
higher than the previous version. Required for namespace >= 2.5 . -->
+       <versionNumber>0.6.0</versionNumber>
+
+       <!-- A string value (such as "v1", "2.5", or "Alpha 1") that represents 
the version of the application, as it should be shown to users. Optional. -->
+       <!-- <versionLabel></versionLabel> -->
+
+       <!-- Description, displayed in the AIR application installer.
+       May have multiple values for each language. See samples or xsd schema 
file. Optional. -->
+       <!-- <description></description> -->
+
+       <!-- Copyright information. Optional -->
+       <copyright>Copyright 2015 The Apache Software Foundation.</copyright>
+
+       <!-- Publisher ID. Used if you're updating an application created prior 
to 1.5.3 -->
+       <!-- <publisherID></publisherID> -->
+
+       <!-- Settings for the application's initial window. Required. -->
+       <initialWindow>
+               <!-- The main SWF or HTML file of the application. Required. -->
+               <!-- Note: In Flash Builder, the SWF reference is set 
automatically. -->
+               <content>StorageExample.swf</content>
+
+               <!-- The title of the main window. Optional. -->
+               <!-- <title></title> -->
+
+               <!-- The type of system chrome to use (either "standard" or 
"none"). Optional. Default standard. -->
+               <!-- <systemChrome></systemChrome> -->
+
+               <!-- Whether the window is transparent. Only applicable when 
systemChrome is none. Optional. Default false. -->
+               <!-- <transparent></transparent> -->
+
+               <!-- Whether the window is initially visible. Optional. Default 
false. -->
+               <!-- <visible></visible> -->
+
+               <!-- Whether the user can minimize the window. Optional. 
Default true. -->
+               <!-- <minimizable></minimizable> -->
+
+               <!-- Whether the user can maximize the window. Optional. 
Default true. -->
+               <!-- <maximizable></maximizable> -->
+
+               <!-- Whether the user can resize the window. Optional. Default 
true. -->
+               <!-- <resizable></resizable> -->
+
+               <!-- The window's initial width in pixels. Optional. -->
+               <width>640</width>
+
+               <!-- The window's initial height in pixels. Optional. -->
+               <height>720</height>
+
+               <!-- The window's initial x position. Optional. -->
+               <!-- <x></x> -->
+
+               <!-- The window's initial y position. Optional. -->
+               <!-- <y></y> -->
+
+               <!-- The window's minimum size, specified as a width/height 
pair in pixels, such as "400 200". Optional. -->
+               <!-- <minSize></minSize> -->
+
+               <!-- The window's initial maximum size, specified as a 
width/height pair in pixels, such as "1600 1200". Optional. -->
+               <!-- <maxSize></maxSize> -->
+
+        <!-- The initial aspect ratio of the app when launched (either 
"portrait" or "landscape"). Optional. Mobile only. Default is the natural 
orientation of the device -->
+
+        <!-- <aspectRatio></aspectRatio> -->
+
+        <!-- Whether the app will begin auto-orienting on launch. Optional. 
Mobile only. Default false -->
+
+        <!-- <autoOrients></autoOrients> -->
+
+        <!-- Whether the app launches in full screen. Optional. Mobile only. 
Default false -->
+
+        <!-- <fullScreen></fullScreen> -->
+
+        <!-- The render mode for the app (either auto, cpu, gpu, or direct). 
Optional. Default auto -->
+
+        <!-- <renderMode></renderMode> -->
+
+               <!-- Whether or not to pan when a soft keyboard is raised or 
lowered (either "pan" or "none").  Optional.  Defaults "pan." -->
+               <!-- <softKeyboardBehavior></softKeyboardBehavior> -->
+       <autoOrients>false</autoOrients>
+        <fullScreen>false</fullScreen>
+        <visible>true</visible>
+    </initialWindow>
+
+       <!-- We recommend omitting the supportedProfiles element, -->
+       <!-- which in turn permits your application to be deployed to all -->
+       <!-- devices supported by AIR. If you wish to restrict deployment -->
+       <!-- (i.e., to only mobile devices) then add this element and list -->
+       <!-- only the profiles which your application does support. -->
+       <!-- <supportedProfiles>desktop extendedDesktop mobileDevice 
extendedMobileDevice</supportedProfiles> -->
+       <supportedProfiles>extendedDesktop desktop</supportedProfiles>
+
+       <!-- The subpath of the standard default installation location to use. 
Optional. -->
+       <installFolder>Apache Flex</installFolder>
+
+       <!-- The subpath of the Programs menu to use. (Ignored on operating 
systems without a Programs menu.) Optional. -->
+       <programMenuFolder>Apache Flex</programMenuFolder>
+
+       <!-- The icon the system uses for the application. For at least one 
resolution,
+       specify the path to a PNG file included in the AIR package. Optional. 
-->
+       <icon>
+               <image16x16>assets/icons/16.png</image16x16>
+               <image29x29>assets/icons/29.png</image29x29>
+               <image32x32>assets/icons/32.png</image32x32>
+               <image36x36>assets/icons/36.png</image36x36>
+               <image48x48>assets/icons/48.png</image48x48>
+               <image57x57>assets/icons/57.png</image57x57>
+               <image72x72>assets/icons/72.png</image72x72>
+               <image114x114>assets/icons/114.png</image114x114>
+               <image128x128>assets/icons/128.png</image128x128>
+       </icon>
+
+       <!-- Whether the application handles the update when a user 
double-clicks an update version
+       of the AIR file (true), or the default AIR application installer 
handles the update (false).
+       Optional. Default false. -->
+       <!-- <customUpdateUI></customUpdateUI> -->
+
+       <!-- Whether the application can be launched when the user clicks a 
link in a web browser.
+       Optional. Default false. -->
+       <!-- <allowBrowserInvocation></allowBrowserInvocation> -->
+
+       <!-- Listing of file types for which the application can register. 
Optional. -->
+       <!-- <fileTypes> -->
+
+               <!-- Defines one file type. Optional. -->
+               <!-- <fileType> -->
+
+                       <!-- The name that the system displays for the 
registered file type. Required. -->
+                       <!-- <name></name> -->
+
+                       <!-- The extension to register. Required. -->
+                       <!-- <extension></extension> -->
+
+                       <!-- The description of the file type. Optional. -->
+                       <!-- <description></description> -->
+
+                       <!-- The MIME content type. -->
+                       <!-- <contentType></contentType> -->
+
+                       <!-- The icon to display for the file type. Optional. 
-->
+                       <!-- <icon>
+                               <image16x16></image16x16>
+                               <image32x32></image32x32>
+                               <image48x48></image48x48>
+                               <image128x128></image128x128>
+                       </icon> -->
+
+               <!-- </fileType> -->
+       <!-- </fileTypes> -->
+
+    <!-- iOS specific capabilities -->
+       <!-- <iPhone> -->
+               <!-- A list of plist key/value pairs to be added to the 
application Info.plist -->
+               <!-- <InfoAdditions>
+            <![CDATA[
+                <key>UIDeviceFamily</key>
+                <array>
+                    <string>1</string>
+                    <string>2</string>
+                </array>
+                <key>UIStatusBarStyle</key>
+                <string>UIStatusBarStyleBlackOpaque</string>
+                <key>UIRequiresPersistentWiFi</key>
+                <string>YES</string>
+            ]]>
+        </InfoAdditions> -->
+        <!-- A list of plist key/value pairs to be added to the application 
Entitlements.plist -->
+               <!-- <Entitlements>
+            <![CDATA[
+                <key>keychain-access-groups</key>
+                <array>
+                    <string></string>
+                    <string></string>
+                </array>
+            ]]>
+        </Entitlements> -->
+       <!-- Display Resolution for the app (either "standard" or "high"). 
Optional. Default "standard" -->
+       <!-- <requestedDisplayResolution></requestedDisplayResolution> -->
+       <!-- </iPhone> -->
+
+       <!-- Specify Android specific tags that get passed to 
AndroidManifest.xml file. -->
+    <!--<android> -->
+    <!--       <manifestAdditions>
+               <![CDATA[
+                       <manifest android:installLocation="auto">
+                               <uses-permission 
android:name="android.permission.INTERNET"/>
+                               <uses-permission 
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+                               <uses-permission 
android:name="android.permission.ACCESS_FINE_LOCATION"/>
+                               <uses-feature android:required="true" 
android:name="android.hardware.touchscreen.multitouch"/>
+                               <application android:enabled="true">
+                                       <activity 
android:excludeFromRecents="false">
+                                               <intent-filter>
+                                                       <action 
android:name="android.intent.action.MAIN"/>
+                                                       <category 
android:name="android.intent.category.LAUNCHER"/>
+                                               </intent-filter>
+                                       </activity>
+                               </application>
+            </manifest>
+               ]]>
+        </manifestAdditions> -->
+           <!-- Color depth for the app (either "32bit" or "16bit"). Optional. 
Default 16bit before namespace 3.0, 32bit after -->
+        <!-- <colorDepth></colorDepth> -->
+    <!-- </android> -->
+       <!-- End of the schema for adding the android specific tags in 
AndroidManifest.xml file -->
+
+</application>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1c69a390/examples/flexjs/StorageExample/build.xml
----------------------------------------------------------------------
diff --git a/examples/flexjs/StorageExample/build.xml 
b/examples/flexjs/StorageExample/build.xml
new file mode 100644
index 0000000..a976cad
--- /dev/null
+++ b/examples/flexjs/StorageExample/build.xml
@@ -0,0 +1,77 @@
+<?xml version="1.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.
+
+-->
+
+
+<project name="storageexample" default="main" basedir=".">
+    <property name="FLEXJS_HOME" location="../../.."/>
+    <property name="example" value="StorageExample" />
+    
+    <!-- this project needs AIR 3.4 FP 11.4 -->
+    <property name="swf.version" value="17" />
+    <property name="playerglobal.version" value="11.4" />
+    
+    <property file="${FLEXJS_HOME}/env.properties"/>
+    <property environment="env"/>
+    <property file="${FLEXJS_HOME}/build.properties"/>
+    <property name="FLEX_HOME" value="${FLEXJS_HOME}"/>
+    <property name="AIR_HOME" value="${env.AIR_HOME}"/>
+    
+    <condition property="adl" value="adl.exe">
+        <os family="windows"/>
+    </condition>
+    
+    <condition property="adl" value="adl">
+        <os family="mac"/>
+    </condition>
+    
+    <condition property="runtime" value="win">
+        <os family="windows"/>
+    </condition>
+    
+    <condition property="runtime" value="mac">
+        <os family="mac"/>
+    </condition>
+
+    <include file="${basedir}/../../build_example.xml" />
+
+    <property name="extlib_arg" 
value="-external-library-path=${FALCONJX_HOME}/../externs/cordova/out/bin/cordova.swc"/>
+    <property name="opt1_arg" value="-remove-circulars" />
+
+<!-- build_example.compileair, -->
+    <target name="main" 
depends="clean,build_example.compileair,build_example.compilejsair" 
description="Clean build of ${example}">
+    </target>
+    
+    <target name="clean">
+        <echo>playerglobal.version = ${playerglobal.version}</echo>
+        <delete dir="${basedir}/bin" failonerror="false" />
+        <delete dir="${basedir}/bin-debug" failonerror="false" />
+        <delete dir="${basedir}/bin-release" failonerror="false" />
+    </target>    
+    
+    <target name="run">
+        <exec executable="${AIR_HOME}/bin/${adl}" dir="${basedir}/bin-debug" 
failonerror="true">
+            <arg value="-runtime" />
+            <arg value="${AIR_HOME}/runtimes/air/${runtime}" />
+            <arg value="-profile" />
+            <arg value="extendedDesktop" />
+            <arg value="${basedir}/bin-debug/${example}-app.xml" />
+        </exec>
+    </target>
+</project>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1c69a390/examples/flexjs/StorageExample/pom.xml
----------------------------------------------------------------------
diff --git a/examples/flexjs/StorageExample/pom.xml 
b/examples/flexjs/StorageExample/pom.xml
new file mode 100644
index 0000000..06ac9b2
--- /dev/null
+++ b/examples/flexjs/StorageExample/pom.xml
@@ -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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.examples.flexjs</groupId>
+        <artifactId>examples</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>StorageExample</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>swf</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+        <plugins>
+            <plugin>
+                <groupId>net.flexmojos.oss</groupId>
+                <artifactId>flexmojos-maven-plugin</artifactId>
+                <version>7.1.0-SNAPSHOT</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <sourceFile>StorageExample.mxml</sourceFile>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1c69a390/examples/flexjs/StorageExample/src/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/StorageExample/src/MyInitialView.mxml 
b/examples/flexjs/StorageExample/src/MyInitialView.mxml
new file mode 100644
index 0000000..2bb6b7a
--- /dev/null
+++ b/examples/flexjs/StorageExample/src/MyInitialView.mxml
@@ -0,0 +1,131 @@
+<?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:ViewBase xmlns:fx="http://ns.adobe.com/mxml/2009";
+                               xmlns:js="library://ns.apache.org/flexjs/basic"
+                               xmlns:local="*"
+                               initComplete="startup()">
+    <fx:Script>
+        <![CDATA[                      
+                       import org.apache.flex.storage.PermanentStorage;
+                       import org.apache.flex.storage.events.FileReadEvent;
+                       import org.apache.flex.storage.events.FileWriteEvent;
+                       
+                       private function startup():void
+                       {
+                               trace("Starting up");
+                       }
+                       
+                       private function onRead():void
+                       {
+                               var storage:PermanentStorage = new 
PermanentStorage();
+                               
+                               var useFile:String = readFileNameField.text;
+                               
+                               storage.addEventListener("COMPLETE", 
handleRead);
+                               storage.addEventListener("ERROR", handleRead);
+                               storage.readTextFromDataFile( useFile );
+                       }
+                       
+                       private function handleRead(event:FileReadEvent):void
+                       {
+                               trace("Read event type: "+event.type);
+                               if (event.type == "ERROR") {
+                                       status.text = "Error: 
"+event.errorMessage;
+                                       readContent.text = "";
+                               }
+                               else {
+                                       trace(event.data);
+                                       status.text = "Read Success!";
+                                       readContent.text = String(event.data);
+                               }
+                       }
+                       
+                       private function onSave():void
+                       {
+                               var storage:PermanentStorage = new 
PermanentStorage();
+                               var today:Date = new Date();
+                               
+                               var useFile:String = writeFileNameField.text;
+                               var useContent:String = today.toString() + " " 
+ contentField.text;
+                               
+                               storage.addEventListener("COMPLETE", 
handleSave);
+                               storage.writeTextToDataFile(useFile, 
useContent);
+                       }
+                       
+                       private function handleSave(event:FileWriteEvent):void
+                       {
+                               if (event.type == "ERROR") {
+                                       status.text = "Error: 
"+event.errorMessage;
+                               } else {
+                                       status.text = "Write Success!";
+                               }
+                       }
+               ]]>
+    </fx:Script>
+       
+       <fx:Style>
+       
+       .labelStyle {
+               color: #9999FF;
+       }
+       
+       .contentStyle {
+               font-size: 18pt;
+       }
+       
+       </fx:Style>
+       
+       <js:beads>
+               <js:ViewBaseDataBinding />
+       </js:beads>
+       
+       <js:VContainer width="100%" height="100%">
+               <js:Label text="Storage Example" width="100%" />
+               <js:Spacer height="20" />
+               
+               <js:HContainer>
+                       <js:Label text="Write File Name:" 
className="labelStyle" />
+                       <js:TextInput id="writeFileNameField" 
text="testfile.txt" />
+               </js:HContainer>
+               <js:HContainer>
+                       <js:Label text="Content:" className="labelStyle" />
+                       <js:TextInput id="contentField" />
+               </js:HContainer>
+               <js:TextButton text="SAVE" click="onSave()" />
+               <js:Spacer height="20" />
+               
+               <js:Label id="status" />
+               <js:Spacer height="20" />
+               
+               <js:HContainer>
+                       <js:Label text="Read File Name:" className="labelStyle" 
/>
+                       <js:TextInput id="readFileNameField" 
text="testfile.txt" />
+               </js:HContainer>
+               <js:TextButton text="READ" click="onRead()" />
+               <js:HContainer>
+                       <js:Label text="Content:" className="labelStyle" />
+               </js:HContainer>
+               <js:HContainer>
+                       <js:Label id="readContent" className="contentStyle" />
+               </js:HContainer>
+       </js:VContainer>
+               
+
+</js:ViewBase>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1c69a390/examples/flexjs/StorageExample/src/StorageExample.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/StorageExample/src/StorageExample.mxml 
b/examples/flexjs/StorageExample/src/StorageExample.mxml
new file mode 100644
index 0000000..1b9842a
--- /dev/null
+++ b/examples/flexjs/StorageExample/src/StorageExample.mxml
@@ -0,0 +1,42 @@
+<?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: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:beads>
+               <js:MixinManager />
+       </js:beads>
+       
+</js:Application>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1c69a390/examples/flexjs/StorageExample/src/models/MyModel.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/StorageExample/src/models/MyModel.as 
b/examples/flexjs/StorageExample/src/models/MyModel.as
new file mode 100644
index 0000000..e0dab68
--- /dev/null
+++ b/examples/flexjs/StorageExample/src/models/MyModel.as
@@ -0,0 +1,58 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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;
+               }
+       }
+}
\ No newline at end of file

Reply via email to