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'; - } -};