Updated Branches:
  refs/heads/develop 2cb1c1e57 -> 54fb8d261

Created package, accessories, for additional beads. Added 
NumericOnlyTextInputBead as a new accessory.


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

Branch: refs/heads/develop
Commit: 54fb8d261009959596298b0ed349711a5b13920c
Parents: 2cb1c1e
Author: Peter Ent <p...@apache.org>
Authored: Tue Aug 27 10:49:11 2013 -0400
Committer: Peter Ent <p...@apache.org>
Committed: Tue Aug 27 10:49:11 2013 -0400

----------------------------------------------------------------------
 frameworks/as/basic-manifest.xml                |  3 +-
 frameworks/as/src/FlexJSUIClasses.as            |  4 +-
 .../accessories/NumericOnlyTextInputBead.as     | 84 ++++++++++++++++++++
 .../accessories/PasswordInputBead.as            | 56 +++++++++++++
 .../staticControls/beads/PasswordInputBead.as   | 55 -------------
 .../accessories/NumericOnlyTextInputBead.js     | 76 ++++++++++++++++++
 .../accessories/PasswordInputBead.js            | 43 ++++++++++
 .../staticControls/beads/PasswordInputBead.js   | 42 ----------
 8 files changed, 263 insertions(+), 100 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/54fb8d26/frameworks/as/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/as/basic-manifest.xml b/frameworks/as/basic-manifest.xml
index c7d1dfa..1eb0098 100644
--- a/frameworks/as/basic-manifest.xml
+++ b/frameworks/as/basic-manifest.xml
@@ -60,6 +60,7 @@
     <component id="TextFieldItemRenderer" 
class="org.apache.flex.html.staticControls.supportClasses.TextFieldItemRenderer"/>
     <component id="ScrollBar" 
class="org.apache.flex.html.staticControls.supportClasses.ScrollBar"/>
     <component id="TextPromptBead" 
class="org.apache.flex.html.staticControls.beads.TextPromptBead" />
-    <component id="PasswordInputBead" 
class="org.apache.flex.html.staticControls.beads.PasswordInputBead" />
+    <component id="NumericOnlyTextInputBead" 
class="org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead"
 />
+    <component id="PasswordInputBead" 
class="org.apache.flex.html.staticControls.accessories.PasswordInputBead" />
 
 </componentPackage>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/54fb8d26/frameworks/as/src/FlexJSUIClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/as/src/FlexJSUIClasses.as 
b/frameworks/as/src/FlexJSUIClasses.as
index a34d8ff..b5e0f5c 100644
--- a/frameworks/as/src/FlexJSUIClasses.as
+++ b/frameworks/as/src/FlexJSUIClasses.as
@@ -18,7 +18,6 @@
 
////////////////////////////////////////////////////////////////////////////////
 package
 {
-
 /**
  *  @private
  *  This class is used to link additional classes into rpc.swc
@@ -27,6 +26,8 @@ package
  */
 internal class FlexJSUIClasses
 {
+       import 
org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead; 
NumericOnlyTextInputBead;
+       import 
org.apache.flex.html.staticControls.accessories.PasswordInputBead; 
PasswordInputBead;
     import org.apache.flex.html.staticControls.beads.AlertView; AlertView;
     import org.apache.flex.html.staticControls.beads.CheckBoxView; 
CheckBoxView;
     import org.apache.flex.html.staticControls.beads.ComboBoxView; 
ComboBoxView;
@@ -52,7 +53,6 @@ internal class FlexJSUIClasses
     import org.apache.flex.html.staticControls.beads.TextInputView; 
TextInputView;
     import org.apache.flex.html.staticControls.beads.TextInputWithBorderView; 
TextInputWithBorderView;
        import org.apache.flex.html.staticControls.beads.TextPromptBead; 
TextPromptBead;
-       import org.apache.flex.html.staticControls.beads.PasswordInputBead; 
PasswordInputBead;
     import org.apache.flex.html.staticControls.beads.TitleBarMeasurementBead; 
TitleBarMeasurementBead;
     import org.apache.flex.html.staticControls.beads.models.AlertModel; 
AlertModel;
     import 
org.apache.flex.html.staticControls.beads.models.ArraySelectionModel; 
ArraySelectionModel;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/54fb8d26/frameworks/as/src/org/apache/flex/html/staticControls/accessories/NumericOnlyTextInputBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/src/org/apache/flex/html/staticControls/accessories/NumericOnlyTextInputBead.as
 
b/frameworks/as/src/org/apache/flex/html/staticControls/accessories/NumericOnlyTextInputBead.as
new file mode 100644
index 0000000..b92a317
--- /dev/null
+++ 
b/frameworks/as/src/org/apache/flex/html/staticControls/accessories/NumericOnlyTextInputBead.as
@@ -0,0 +1,84 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.staticControls.accessories
+{
+       import flash.events.TextEvent;
+       
+       import org.apache.flex.core.CSSTextField;
+       import org.apache.flex.core.IBead;
+       import org.apache.flex.core.IStrand;
+       import org.apache.flex.events.Event;
+       import org.apache.flex.events.IEventDispatcher;
+       import org.apache.flex.html.staticControls.beads.ITextFieldView;
+       
+       public class NumericOnlyTextInputBead implements IBead
+       {
+               public function NumericOnlyTextInputBead()
+               {
+               }
+               
+               private var _strand:IStrand;
+               
+               public function set strand(value:IStrand):void
+               {
+                       _strand = value;
+                       
+                       
IEventDispatcher(value).addEventListener("viewChanged",viewChangeHandler);
+               }
+               
+               private var _decimalSeparator:String = ".";
+               public function get decimalSeparator():String
+               {
+                       return _decimalSeparator;
+               }
+               public function set decimalSeparator(value:String):void
+               {
+                       if (_decimalSeparator != value) {
+                               _decimalSeparator = value;
+                       }
+               }
+               
+               private function viewChangeHandler(event:Event):void
+               {                       
+                       // get the ITextFieldView bead, which is required for 
this bead to work
+                       var textView:ITextFieldView = 
_strand.getBeadByType(ITextFieldView) as ITextFieldView;
+                       if (textView) {
+                               var textField:CSSTextField = textView.textField;
+                               textField.restrict = "0-9" + decimalSeparator;
+                               
+                               // listen for changes to this textField and 
prevent non-numeric values, such
+                               // as 34.09.94
+                               
textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput);
+                       }
+                       else {
+                               throw new Error("NumericOnlyTextInputBead 
requires strand to have an ITextFieldView bead");
+                       }
+               }
+               
+               private function handleTextInput(event:TextEvent):void
+               {
+                       var insert:String = event.text;
+                       var caretIndex:int = (event.target as 
CSSTextField).caretIndex;
+                       var current:String = (event.target as 
CSSTextField).text;
+                       var value:String = current.substring(0,caretIndex) + 
insert + current.substr(caretIndex);
+                       var n:Number = Number(value);
+                       if (isNaN(n)) event.preventDefault();
+               }
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/54fb8d26/frameworks/as/src/org/apache/flex/html/staticControls/accessories/PasswordInputBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/src/org/apache/flex/html/staticControls/accessories/PasswordInputBead.as
 
b/frameworks/as/src/org/apache/flex/html/staticControls/accessories/PasswordInputBead.as
new file mode 100644
index 0000000..9280317
--- /dev/null
+++ 
b/frameworks/as/src/org/apache/flex/html/staticControls/accessories/PasswordInputBead.as
@@ -0,0 +1,56 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.staticControls.accessories
+{
+       import org.apache.flex.core.CSSTextField;
+       import org.apache.flex.core.IBead;
+       import org.apache.flex.core.IStrand;
+       import org.apache.flex.events.Event;
+       import org.apache.flex.events.IEventDispatcher;
+       import org.apache.flex.html.staticControls.beads.ITextFieldView;
+       
+       public class PasswordInputBead implements IBead
+       {
+               public function PasswordInputBead()
+               {
+               }
+               
+               private var _strand:IStrand;
+               
+               public function set strand(value:IStrand):void
+               {
+                       _strand = value;
+                       
+                       
IEventDispatcher(value).addEventListener("viewChanged",viewChangeHandler);
+               }
+               
+               private function viewChangeHandler(event:Event):void
+               {                       
+                       // get the ITextFieldView bead, which is required for 
this bead to work
+                       var textView:ITextFieldView = 
_strand.getBeadByType(ITextFieldView) as ITextFieldView;
+                       if (textView) {
+                               var textField:CSSTextField = textView.textField;
+                               textField.displayAsPassword = true;
+                       }
+                       else {
+                               throw new Error("PasswordInputBead requires 
strand to have a TextInputView bead");
+                       }
+               }
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/54fb8d26/frameworks/as/src/org/apache/flex/html/staticControls/beads/PasswordInputBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/src/org/apache/flex/html/staticControls/beads/PasswordInputBead.as
 
b/frameworks/as/src/org/apache/flex/html/staticControls/beads/PasswordInputBead.as
deleted file mode 100644
index 4b27840..0000000
--- 
a/frameworks/as/src/org/apache/flex/html/staticControls/beads/PasswordInputBead.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 org.apache.flex.html.staticControls.beads
-{
-       import org.apache.flex.core.CSSTextField;
-       import org.apache.flex.core.IBead;
-       import org.apache.flex.core.IStrand;
-       import org.apache.flex.events.Event;
-       import org.apache.flex.events.IEventDispatcher;
-       
-       public class PasswordInputBead implements IBead
-       {
-               public function PasswordInputBead()
-               {
-               }
-               
-               private var _strand:IStrand;
-               
-               public function set strand(value:IStrand):void
-               {
-                       _strand = value;
-                       
-                       
IEventDispatcher(value).addEventListener("viewChanged",viewChangeHandler);
-               }
-               
-               private function viewChangeHandler(event:Event):void
-               {                       
-                       // get the ITextFieldView bead, which is required for 
this bead to work
-                       var textView:ITextFieldView = 
_strand.getBeadByType(ITextFieldView) as ITextFieldView;
-                       if (textView) {
-                               var textField:CSSTextField = textView.textField;
-                               textField.displayAsPassword = true;
-                       }
-                       else {
-                               throw new Error("PasswordInputBead requires 
strand to have a TextInputView bead");
-                       }
-               }
-       }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/54fb8d26/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/accessories/NumericOnlyTextInputBead.js
----------------------------------------------------------------------
diff --git 
a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/accessories/NumericOnlyTextInputBead.js
 
b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/accessories/NumericOnlyTextInputBead.js
new file mode 100644
index 0000000..278bf33
--- /dev/null
+++ 
b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/accessories/NumericOnlyTextInputBead.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.staticControls.accessories.NumericOnlyTextInputBead');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead =
+function() {
+
+  /**
+   * @private
+   * @type {Object}
+   */
+  this.promptElement;
+};
+
+/**
+ * @expose
+ * @this 
{org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead}
+ * @param {Object} value The new host.
+ */
+org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead.
+prototype.set_strand = function(value) {
+  if (this.strand_ !== value) {
+    this.strand_ = value;
+    value.addEventListener('keypress',goog.bind(this.validateInput, this));
+  }
+};
+
+org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead.
+prototype.validateInput = function(event) {
+
+  var code = event.charCode;
+  
+  // backspace or delete
+  if (event.keyCode == 8 || event.keyCode == 46) return;
+  
+  // tab or return/enter
+  if (event.keyCode == 9 || event.keyCode == 13) return;
+  
+  // left or right cursor arrow
+  if (event.keyCode == 37 || event.keyCode == 39) return;
+  
+  var key = String.fromCharCode( code );
+
+  var regex = /[0-9]|\./;
+  if( !regex.test(key) ) {
+    event.returnValue = false;
+    if(event.preventDefault) event.preventDefault();
+    return;
+  }
+  var cursorStart = event.target.selectionStart;
+  var cursorEnd   = event.target.selectionEnd;
+  var left = event.target.value.substring(0,cursorStart);
+  var right = event.target.value.substr(cursorEnd);
+  var complete = left + key + right;
+  if (isNaN(complete)) {
+    event.returnValue = false;
+    if(event.preventDefault) event.preventDefault();
+  }
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/54fb8d26/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/accessories/PasswordInputBead.js
----------------------------------------------------------------------
diff --git 
a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/accessories/PasswordInputBead.js
 
b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/accessories/PasswordInputBead.js
new file mode 100644
index 0000000..85779d2
--- /dev/null
+++ 
b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/accessories/PasswordInputBead.js
@@ -0,0 +1,43 @@
+/**
+ * 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.staticControls.accessories.PasswordInputBead');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.html.staticControls.accessories.PasswordInputBead =
+function() {
+
+  /**
+   * @private
+   * @type {Object}
+   */
+  this.promptElement;
+};
+
+/**
+ * @expose
+ * @this {org.apache.flex.html.staticControls.accessories.PasswordInputBead}
+ * @param {Object} value The new host.
+ */
+org.apache.flex.html.staticControls.accessories.PasswordInputBead.
+prototype.set_strand = function(value) {
+  if (this.strand_ !== value) {
+    this.strand_ = value;
+    value.element.type = 'password';
+  }
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/54fb8d26/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/PasswordInputBead.js
----------------------------------------------------------------------
diff --git 
a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/PasswordInputBead.js
 
b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/PasswordInputBead.js
deleted file mode 100644
index f29acb8..0000000
--- 
a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/PasswordInputBead.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * 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.staticControls.beads.PasswordInputBead');
-
-
-
-/**
- * @constructor
- */
-org.apache.flex.html.staticControls.beads.PasswordInputBead = function() {
-
-  /**
-   * @private
-   * @type {Object}
-   */
-  this.promptElement;
-};
-
-/**
- * @expose
- * @this {org.apache.flex.html.staticControls.beads.PasswordInputBead}
- * @param {Object} value The new host.
- */
-org.apache.flex.html.staticControls.beads.PasswordInputBead.prototype.set_strand
 =
-    function(value) {
-  if (this.strand_ !== value) {
-    this.strand_ = value;
-    value.element.type = 'password';
-  }
-};

Reply via email to