Repository: flex-asjs
Updated Branches:
  refs/heads/develop eadf66c82 -> 910d4d9c7


Updated formatting beads with the introduction of a FormatBase that is 
implemented natively in JS and AS.


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

Branch: refs/heads/develop
Commit: 910d4d9c7822ab4710087896acfaeff01eb40e49
Parents: eadf66c
Author: Peter Ent <p...@apache.org>
Authored: Fri Aug 8 11:16:44 2014 -0400
Committer: Peter Ent <p...@apache.org>
Committed: Fri Aug 8 11:16:44 2014 -0400

----------------------------------------------------------------------
 examples/DrawShapesTest/src/DrawShapesTest.mxml |  34 ---
 examples/DrawShapesTest/src/MyInitialView.mxml  |  63 ------
 .../src/org/apache/flex/core/IFormatBead.as     |  69 ------
 .../flex/html/accessories/NumberFormatter.as    | 210 +++++++++++++++++++
 .../flex/html/beads/FormatableTextInputView.as  |   4 +-
 .../as/projects/FlexJSUI/src/FlexJSUIClasses.as |   1 +
 .../src/org/apache/flex/core/FormatBase.as      | 115 ++++++++++
 .../src/org/apache/flex/core/IFormatBead.as     |  69 ++++++
 .../flex/html/accessories/TextPromptBead.as     |   2 +-
 .../apache/flex/html/beads/models/TextModel.as  |   5 +-
 .../src/org/apache/flex/core/FormatBase.js      | 144 +++++++++++++
 .../src/org/apache/flex/core/ITextModel.js      |  59 ++++++
 .../src/org/apache/flex/html/TextInput.js       |   2 +
 .../flex/html/beads/TextInputWithBorderView.js  |  44 ++++
 .../apache/flex/html/beads/models/TextModel.js  |  76 +++++++
 15 files changed, 727 insertions(+), 170 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/examples/DrawShapesTest/src/DrawShapesTest.mxml
----------------------------------------------------------------------
diff --git a/examples/DrawShapesTest/src/DrawShapesTest.mxml 
b/examples/DrawShapesTest/src/DrawShapesTest.mxml
deleted file mode 100644
index af18e70..0000000
--- a/examples/DrawShapesTest/src/DrawShapesTest.mxml
+++ /dev/null
@@ -1,34 +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.
-//
-////////////////////////////////////////////////////////////////////////////////
--->
-<basic:Application xmlns:fx="http://ns.adobe.com/mxml/2009";
-                                  xmlns:local="*"
-                                  xmlns:models="models.*"
-                                  
xmlns:basic="library://ns.apache.org/flexjs/basic" 
-                                  >
-       
-       <basic:valuesImpl>
-               <basic:SimpleCSSValuesImpl />
-       </basic:valuesImpl>
-       <basic:initialView>
-               <local:MyInitialView />
-       </basic:initialView>
-</basic:Application>
-

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/examples/DrawShapesTest/src/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/DrawShapesTest/src/MyInitialView.mxml 
b/examples/DrawShapesTest/src/MyInitialView.mxml
deleted file mode 100644
index c1a7753..0000000
--- a/examples/DrawShapesTest/src/MyInitialView.mxml
+++ /dev/null
@@ -1,63 +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.
-
--->
-<basic:ViewBase xmlns:fx="http://ns.adobe.com/mxml/2009";
-                               
xmlns:basic="library://ns.apache.org/flexjs/basic"
-                               xmlns:svg="library:"
-                               xmlns:local="*" 
-                               xmlns:models="models.*"
->
-       <fx:Script>
-               <![CDATA[
-                       
-                       
-               ]]>
-       </fx:Script>
-       
-       <basic:Label id="output" x="450" y="30" width="100" />
-       
-       <basic:BarChart id="barChart" x="20" y="20" width="400" height="200">
-               <basic:beads>
-                       <basic:ConstantBinding
-                               sourceID="applicationModel"
-                               sourcePropertyName="productList"
-                               destinationPropertyName="dataProvider" />
-                       <basic:XAxisBead labelField="title" />
-               </basic:beads>
-               <basic:series>
-                       <basic:BarChartSeries yField="sales" 
-                                                                 
fillColor="0xFF964D">
-                               <basic:itemRenderer>
-                    <fx:Component>
-                        <basic:BoxItemRenderer />                        
-                    </fx:Component>
-                               </basic:itemRenderer>
-                       </basic:BarChartSeries>
-                       <basic:BarChartSeries yField="detail" 
-                                                                 
fillColor="0x964DFF">
-                               <basic:itemRenderer>
-                    <fx:Component>
-                        <basic:BoxItemRenderer />                        
-                    </fx:Component>
-                               </basic:itemRenderer>
-                       </basic:BarChartSeries>
-               </basic:series>
-       </basic:BarChart>
-       
-</basic:ViewBase>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/as/projects/FlexJSJX/src/org/apache/flex/core/IFormatBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/core/IFormatBead.as 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/core/IFormatBead.as
deleted file mode 100644
index 3880f5a..0000000
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/core/IFormatBead.as
+++ /dev/null
@@ -1,69 +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 org.apache.flex.core
-{
-       import org.apache.flex.events.IEventDispatcher;
-
-       /**
-        *  The IFormatBead interface should be implemented by any bead that
-        *  provides a formatting service. When the bead instance is created it
-        *  should listen for change events and set its formattedString property
-        *  for later retrieveal. 
-        *  
-        *  @langversion 3.0
-        *  @playerversion Flash 10.2
-        *  @playerversion AIR 2.6
-        *  @productversion FlexJS 0.0
-        */
-       public interface IFormatBead extends IBead, IEventDispatcher
-       {
-               /**
-                *  The name of the property for the source to be formatted. 
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               function get propertyName():String;
-               function set propertyName(value:String):void;
-               
-               /**
-                *  The name of the event to listen for, indicating that 
propertyName
-                *  property has changed. The default event is 
propertyName+"Changed". 
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               function get eventName():String;
-               function set eventName(value:String):void;
-               
-               /**
-                *  The formatted result. 
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               function get formattedString():String;
-       }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/accessories/NumberFormatter.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/accessories/NumberFormatter.as
 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/accessories/NumberFormatter.as
new file mode 100644
index 0000000..0d1b613
--- /dev/null
+++ 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/accessories/NumberFormatter.as
@@ -0,0 +1,210 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.html.accessories
+{
+       import org.apache.flex.core.IBeadModel;
+       import org.apache.flex.core.IFormatBead;
+       import org.apache.flex.core.IStrand;
+       import org.apache.flex.events.Event;
+       import org.apache.flex.events.EventDispatcher;
+       import org.apache.flex.events.IEventDispatcher;
+       
+       /**
+        * The NumberFormatter class formats a value in separated groups. The 
formatter listens
+        * to a property on a model and when the property changes, formats it 
and dispatches a
+        * formatChanged event.
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class NumberFormatter extends EventDispatcher implements 
IFormatBead
+       {
+               /**
+                *  constructor
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function NumberFormatter()
+               {
+                       super();
+               }
+               
+               private var _strand:IStrand;
+               
+               /**
+                *  @copy org.apache.flex.core.IBead#strand
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function set strand(value:IStrand):void
+               {
+                       _strand = value;
+                       
+                       // Listen for the beadsAdded event which signals when 
all of a strand's
+                       // beads have been added.
+                       
IEventDispatcher(value).addEventListener("beadsAdded",handleBeadsAdded);
+               }
+               
+               /**
+                * @private
+                */
+               private function handleBeadsAdded(event:Event):void
+               {
+                       // Listen for the change in the model
+                       var model:IBeadModel = 
_strand.getBeadByType(IBeadModel) as IBeadModel;
+                       model.addEventListener(eventName,propertyChangeHandler);
+                       
model.addEventListener(propertyName+"Change",propertyChangeHandler);
+                       
+                       // format the current value of that property
+                       propertyChangeHandler(null);
+               }
+               
+               private var _propertyName:String;
+               private var _eventName:String;
+               private var _formattedResult:String;
+               private var _groupSize:Number = 3;
+               private var _thousandsSeparator:String = ",";
+               
+               /**
+                *  The name of the property on the model to format.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get propertyName():String
+               {
+                       if (_propertyName == null) {
+                               return "text";
+                       }
+                       return _propertyName;
+               }
+               public function set propertyName(value:String):void
+               {
+                       _propertyName = value;
+               }
+               
+               /**
+                *  The event dispatched by the model when the property 
changes. The
+                *  default is propertyName+"Changed".
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get eventName():String
+               {
+                       if (_eventName == null) {
+                               return _propertyName+"Changed";
+                       }
+                       return _eventName;
+               }
+               public function set eventName(value:String):void
+               {
+                       _eventName = value;
+               }
+               
+               /**
+                *  Character to use to separate thousands groups. The default 
is
+                *  the comma (,).
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get thousandsSeparator():String
+               {
+                       return _thousandsSeparator;
+               }
+               public function set thousandsSeparator(value:String):void
+               {
+                       _thousandsSeparator = value;
+               }
+               
+               /**
+                *  The formatted string.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get formattedString():String
+               {
+                       return _formattedResult;
+               }
+               
+               /**
+                * @private
+                */
+               private function propertyChangeHandler(event:Event):void
+               {
+                       // When the property changes, fetch it from the model 
and
+                       // format it, storing the result in _formattedResult.
+                       var model:IBeadModel = 
_strand.getBeadByType(IBeadModel) as IBeadModel;
+                       var value:Object = model[propertyName];
+                       _formattedResult = format(value);
+                       
+                       // Dispatch the formatChanged event so any bead that's 
interested in
+                       // the formatted string knows to use it.
+                       var newEvent:Event = new Event("formatChanged");
+                       this.dispatchEvent(newEvent);
+               }
+               
+               /**
+                * @private
+                */
+               private function format(value:Object):String
+               {
+                       if (value == null) return "";
+                       
+                       var num:Number = Number(value);
+                       var source:String = String(value);
+                       var parts:Array = source.split(thousandsSeparator);
+                       source = parts.join("");
+                       
+                       var l:int = source.length;
+                       var result:String = "";
+                       var group:int = 0;
+                       
+                       for(var i:int=l-1; i >= 0; i--)
+                       {
+                               if (group == _groupSize && result.length > 0) {
+                                       result = thousandsSeparator + result;
+                                       group = 0;
+                               }
+                               result = source.charAt(i) + result;
+                               group++;
+                       }
+                       
+                       return result;
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/FormatableTextInputView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/FormatableTextInputView.as
 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/FormatableTextInputView.as
index f6a5d57..d6d803d 100644
--- 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/FormatableTextInputView.as
+++ 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/FormatableTextInputView.as
@@ -71,7 +71,9 @@ package org.apache.flex.html.beads
                private function handleBeadsAdded(event:Event):void
                {
                        _formatter = strand.getBeadByType(IFormatBead) as 
IFormatBead;
-                       
_formatter.addEventListener("formatChanged",formatChangedHandler);
+                       if (_formatter) {
+                               
_formatter.addEventListener("formatChanged",formatChangedHandler);
+                       }
                }
                
                /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as 
b/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as
index b7c3627..b32e09d 100644
--- a/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as
+++ b/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as
@@ -103,6 +103,7 @@ internal class FlexJSUIClasses
        import org.apache.flex.html.supportClasses.NonVirtualDataGroup; 
NonVirtualDataGroup;
     import org.apache.flex.core.ItemRendererClassFactory; 
ItemRendererClassFactory;  
        import org.apache.flex.core.FilledRectangle; FilledRectangle;
+       import org.apache.flex.core.FormatBase; FormatBase;
        import org.apache.flex.events.CustomEvent; CustomEvent;
        import org.apache.flex.events.Event; Event;
        import org.apache.flex.events.ValueEvent; ValueEvent;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/FormatBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/FormatBase.as 
b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/FormatBase.as
new file mode 100644
index 0000000..1056978
--- /dev/null
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/FormatBase.as
@@ -0,0 +1,115 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.core
+{
+       import flash.events.Event;
+       
+       import org.apache.flex.events.Event;
+       import org.apache.flex.events.EventDispatcher;
+       import org.apache.flex.events.IEventDispatcher;
+       
+       public class FormatBase extends EventDispatcher implements IFormatBead
+       {
+               public function FormatBase()
+               {
+               }
+               
+               /**
+                *  Retrieves the current value of the property from the strand.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get propertyValue():Object
+               {
+                       var model:IBeadModel = 
_strand.getBeadByType(IBeadModel) as IBeadModel;
+                       var value:Object = model[propertyName];
+                       return value;
+               }
+               
+               private var _propertyName:String;
+               
+               /**
+                *  The name of the property in the model holding the value to 
be
+                *  formatted. The default is text.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get propertyName():String
+               {
+                       if (_propertyName == null) {
+                               _propertyName = "text";
+                       }
+                       return _propertyName;
+               }
+               public function set propertyName(value:String):void
+               {
+                       _propertyName = value;
+               }
+               
+               private var _eventName:String;
+               
+               /**
+                *  The name of the event dispatched when the property changes. 
The
+                *  default is propertyName + "Changed".
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get eventName():String
+               {
+                       if (_eventName == null) {
+                               return _propertyName+"Changed";
+                       }
+                       return _eventName;
+               }
+               public function set eventName(value:String):void
+               {
+                       _eventName = value;
+               }
+               
+               /**
+                *  The resulting formatted value as a string.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get formattedString():String
+               {
+                       // override to produce actual result
+                       return null;
+               }
+               
+               private var _strand:IStrand;
+               
+               public function set strand(value:IStrand):void
+               {
+                       _strand = value;
+               }
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IFormatBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IFormatBead.as 
b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IFormatBead.as
new file mode 100644
index 0000000..3880f5a
--- /dev/null
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IFormatBead.as
@@ -0,0 +1,69 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.core
+{
+       import org.apache.flex.events.IEventDispatcher;
+
+       /**
+        *  The IFormatBead interface should be implemented by any bead that
+        *  provides a formatting service. When the bead instance is created it
+        *  should listen for change events and set its formattedString property
+        *  for later retrieveal. 
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public interface IFormatBead extends IBead, IEventDispatcher
+       {
+               /**
+                *  The name of the property for the source to be formatted. 
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               function get propertyName():String;
+               function set propertyName(value:String):void;
+               
+               /**
+                *  The name of the event to listen for, indicating that 
propertyName
+                *  property has changed. The default event is 
propertyName+"Changed". 
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               function get eventName():String;
+               function set eventName(value:String):void;
+               
+               /**
+                *  The formatted result. 
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               function get formattedString():String;
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/accessories/TextPromptBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/accessories/TextPromptBead.as
 
b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/accessories/TextPromptBead.as
index 36bf732..b74eba7 100644
--- 
a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/accessories/TextPromptBead.as
+++ 
b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/accessories/TextPromptBead.as
@@ -89,7 +89,7 @@ package org.apache.flex.html.accessories
                        if (!model.hasOwnProperty("text")) {
                                throw new Error("Model requires a text property 
when used with TextPromptBead");
                        }
-                       
IEventDispatcher(model).addEventListener("textChange",handleTextChange);
+                       
IEventDispatcher(_strand).addEventListener("textChanged",handleTextChange);
                        
                        // create a TextField that displays the prompt - it 
shows
                        // and hides based on the model's content

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/models/TextModel.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/models/TextModel.as
 
b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/models/TextModel.as
index 65d4447..71cc55f 100644
--- 
a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/models/TextModel.as
+++ 
b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/models/TextModel.as
@@ -23,6 +23,7 @@ package org.apache.flex.html.beads.models
        import org.apache.flex.core.ITextModel;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.EventDispatcher;
+       import org.apache.flex.events.IEventDispatcher;
                
     /**
      *  The TextModel class is most basic data model for a
@@ -88,7 +89,7 @@ package org.apache.flex.html.beads.models
                        if (value != _text)
                        {
                                _text = value;
-                               dispatchEvent(new Event("textChange"));
+                               IEventDispatcher(_strand).dispatchEvent(new 
Event("textChanged"));
                        }
                }
                
@@ -115,7 +116,7 @@ package org.apache.flex.html.beads.models
                        if (value != _html)
                        {
                                _html = value;
-                               dispatchEvent(new Event("htmlChange"));
+                               IEventDispatcher(_strand).dispatchEvent(new 
Event("htmlChanged"));
                        }
                }
        }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/js/FlexJS/src/org/apache/flex/core/FormatBase.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/FormatBase.js 
b/frameworks/js/FlexJS/src/org/apache/flex/core/FormatBase.js
new file mode 100644
index 0000000..e80f0af
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/FormatBase.js
@@ -0,0 +1,144 @@
+/**
+ * Licensed 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.
+ */
+
+/**
+ * @fileoverview
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org.apache.flex.core.FormatBase');
+
+goog.require('org.apache.flex.core.IFormatBead');
+goog.require('org.apache.flex.events.EventDispatcher');
+
+
+
+/**
+ * @constructor
+ * @implements {org.apache.flex.core.IFormatBead}
+ * @extends {org.apache.flex.events.EventDispatcher}
+ */
+org.apache.flex.core.FormatBase = function() {
+  goog.base(this);
+};
+goog.inherits(org.apache.flex.core.FormatBase,
+    org.apache.flex.events.EventDispatcher);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.core.FormatBase.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'FormatBase',
+                qName: 'org.apache.flex.core.FormatBase' }],
+      interfaces: [org.apache.flex.core.IFormatBead] };
+
+
+/**
+ * @private
+ * @type {org.apache.flex.core.IStrand}
+ */
+org.apache.flex.core.FormatBase.prototype.strand_ = null;
+
+
+/**
+ * @expose
+ * @param {org.apache.flex.core.IStrand} value
+ */
+org.apache.flex.core.FormatBase.prototype.set_strand = function(value) {
+  this.strand_ = value;
+};
+
+
+/**
+ * @type {string}
+ */
+org.apache.flex.core.FormatBase.prototype._propertyName = 'text';
+
+
+/**
+ * @type {string}
+ */
+org.apache.flex.core.FormatBase.prototype._eventName = 'textChanged';
+
+
+/**
+ * @type {string}
+ */
+org.apache.flex.core.FormatBase.prototype._formattedResult = '';
+
+
+/**
+ * @expose
+ * @return {Object}
+ */
+org.apache.flex.core.FormatBase.prototype.get_propertyValue = function() {
+  var statement = 'this.strand_.get_' + this.get_propertyName() + '()';
+  var value = eval(statement);
+  return value;
+};
+
+
+/**
+ * @expose
+ * @return {string}
+ */
+org.apache.flex.core.FormatBase.prototype.get_propertyName = function() {
+  if (this._propertyName == null) {
+    this._propertyName = 'text';
+  }
+  return this._propertyName;
+};
+
+
+/**
+ * @expose
+ * @param {string} value
+ */
+org.apache.flex.core.FormatBase.prototype.set_propertyName = function(value) {
+  this._propertyName = value;
+};
+
+
+/**
+ * @expose
+ * @return {string}
+ */
+org.apache.flex.core.FormatBase.prototype.get_eventName = function() {
+  if (this._eventName == null) {
+    return this._propertyName + 'Changed';
+  }
+  return this._eventName;
+};
+
+
+/**
+ * @expose
+ * @param {string} value
+ */
+org.apache.flex.core.FormatBase.prototype.set_eventName = function(value) {
+  this._eventName = value;
+};
+
+
+/**
+ * @expose
+ * @return {string}
+ */
+org.apache.flex.core.FormatBase.prototype.get_formattedString = function() {
+  return null;
+};
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/js/FlexJS/src/org/apache/flex/core/ITextModel.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/ITextModel.js 
b/frameworks/js/FlexJS/src/org/apache/flex/core/ITextModel.js
new file mode 100644
index 0000000..85c1d97
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/ITextModel.js
@@ -0,0 +1,59 @@
+/**
+ * Licensed 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.
+ */
+
+/**
+ * org.apache.flex.core.ITextModel
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org.apache.flex.core.ITextModel');
+
+goog.require('org.apache.flex.core.IBeadModel');
+
+
+
+/**
+ * @interface
+ * @extends {org.apache.flex.events.IEventDispatcher}
+ * @extends {org.apache.flex.core.IBeadModel}
+ */
+org.apache.flex.core.ITextModel = function() {
+};
+
+
+/**
+ * @expose
+ * @param {Object} value The text content.
+ */
+org.apache.flex.core.ITextModel.prototype.set_text = function(value) {};
+
+
+/**
+ * @expose
+ * @return {Object} The text content.
+ */
+org.apache.flex.core.ITextModel.prototype.get_text = function() {};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.core.ITextModel.prototype.FLEXJS_CLASS_INFO =
+{ names: [{ name: 'ITextModel', qName: 'org.apache.flex.core.ITextModel'}],
+  interfaces: [org.apache.flex.events.IEventDispatcher, 
org.apache.flex.core.IBeadModel] };

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/js/FlexJS/src/org/apache/flex/html/TextInput.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/TextInput.js 
b/frameworks/js/FlexJS/src/org/apache/flex/html/TextInput.js
index 74eab24..91bebd6 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/TextInput.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/TextInput.js
@@ -72,6 +72,7 @@ org.apache.flex.html.TextInput.prototype.get_text = 
function() {
  */
 org.apache.flex.html.TextInput.prototype.set_text = function(value) {
   this.element.value = value;
+  this.dispatchEvent(new org.apache.flex.events.Event('textChanged'));
 };
 
 
@@ -92,4 +93,5 @@ org.apache.flex.html.TextInput.prototype.inputChangeHandler_ 
= function(event) {
   event.stopPropagation();
 
   this.dispatchEvent(new 
org.apache.flex.events.Event(org.apache.flex.events.Event.EventType.CHANGE));
+  this.dispatchEvent(new org.apache.flex.events.Event('textChanged'));
 };

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/js/FlexJS/src/org/apache/flex/html/beads/TextInputWithBorderView.js
----------------------------------------------------------------------
diff --git 
a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/TextInputWithBorderView.js
 
b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/TextInputWithBorderView.js
new file mode 100644
index 0000000..26109ee
--- /dev/null
+++ 
b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/TextInputWithBorderView.js
@@ -0,0 +1,44 @@
+/**
+ * Licensed 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.
+ */
+
+goog.provide('org.apache.flex.html.beads.TextInputWithBorderView');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.html.beads.TextInputWithBorderView = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.beads.TextInputWithBorderView
+  .prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'TextInputWithBorderView',
+                qName: 'org.apache.flex.html.beads.TextInputWithBorderView'}] 
};
+
+
+/**
+ * @expose
+ * @param {Object} value The strand.
+ */
+org.apache.flex.html.beads.TextInputWithBorderView.prototype.
+    set_strand = function(value) {
+  this.strand_ = value;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/910d4d9c/frameworks/js/FlexJS/src/org/apache/flex/html/beads/models/TextModel.js
----------------------------------------------------------------------
diff --git 
a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/models/TextModel.js 
b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/models/TextModel.js
new file mode 100644
index 0000000..d19386e
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/models/TextModel.js
@@ -0,0 +1,76 @@
+/**
+ * Licensed 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.
+ */
+
+goog.provide('org.apache.flex.html.beads.models.TextModel');
+
+goog.require('org.apache.flex.core.ITextModel');
+goog.require('org.apache.flex.events.EventDispatcher');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.events.EventDispatcher}
+ * @implements {org.apache.flex.core.ITextModel}
+ */
+org.apache.flex.html.beads.models.TextModel =
+    function() {
+  org.apache.flex.html.beads.models.TextModel.base(this, 'constructor');
+  this.className = 'TextModel';
+};
+goog.inherits(
+    org.apache.flex.html.beads.models.TextModel,
+    org.apache.flex.events.EventDispatcher);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.beads.models.TextModel.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'TextModel',
+                qName: 'org.apache.flex.html.beads.models.TextModel' }],
+      interfaces: [org.apache.flex.core.ITextModel] };
+
+
+/**
+ * @expose
+ * @param {Object} value The strand.
+ */
+org.apache.flex.html.beads.models.TextModel.prototype.
+    set_strand = function(value) {
+  this.strand_ = value;
+};
+
+
+/**
+ * @expose
+ * @return {Object} value The text.
+ */
+org.apache.flex.html.beads.models.TextModel.prototype.
+    get_text = function() {
+  return this.text_;
+};
+
+
+/**
+ * @expose
+ * @param {Object} value The text.
+ */
+org.apache.flex.html.beads.models.TextModel.prototype.
+    set_text = function(value) {
+  this.text_ = value;
+  this.dispatchEvent('textChanged');
+};

Reply via email to