RE: [flexcoders] Re: Keydownhandler fires twice for each keystroke

2008-08-30 Thread Alex Harui
If you override keyDownHandler, you shouldn't need to call addEventListener 
since the base class will.

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of aceoohay
Sent: Saturday, August 30, 2008 12:07 PM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: Keydownhandler fires twice for each keystroke


I found a little more information.

This "undesireable feature", aka bug manifests itself only if you
make the combobox "editable."

I removed the editable="true" and the problem goes away.

Paul

--- In flexcoders@yahoogroups.com<mailto:flexcoders%40yahoogroups.com>, 
"aceoohay" <[EMAIL PROTECTED]> wrote:
>
> Since creating a test case would be challenging I am posting the
> component ValidatedComboBox.as. The problem I am having is that it
> appears to call the keyDownHandler(event:KeyboardEvent):void
function
> twice for each keystroke. I have commented out most of that
> function's code, as it used to handle all input there but now I
only
> handle the backspace there this is a patch to get it to function
> somewhat.
>
>
> package Classes.Input
> {
> import flash.events.Event;
> import mx.controls.ComboBox;
> import flash.events.KeyboardEvent;
> import flash.ui.Keyboard;
> import flash.events.FocusEvent;
> import flash.events.MouseEvent;
>
> /**
> * Create an extended version of the ComboBox that allows the
> definition of invalid indexes.
> *
> * The developer defines one or more invalid indexes in a
> comma separated list using the property badIndexes.
> * Most commonly the developer would specify "0" which is the
> first element in the list.
> *
> * New properties are;
> * badIndexes - A string that allows the developer to define
> a comma separated list of invalid indexes.
> * isVald - A boolean that defines whether the field is valid.
> *
> * New Methods are;
> * validateData() - This method checks if the data is valid
> and returns true if valid, false if invalid.
> *
> */
> public class ValidatedComboBox extends ComboBox
> {
> /** Bad indexes - A comma separated list of invalid
> indexes. */
> private var _badIndexes:String = "";
>
> /** Has this field passed validation */
> private var _isValid:Boolean = true;
>
> /** value */
> private var _value:Object;
>
> /** should we validate data */
> private var _doValidateData:Boolean = true;
>
> /** promptLabel */
> private var _promptLabel:String;
>
> /** toolTipField */
> private var _toolTipField:String = "";
>
> /** Default value A literal that represents the value
> that will replace the "value"
> * property when the method setDefault is executed */
> private var _defaultValue:String = "";
>
> private var _eventHandler:Function = this
> ["checkData"];
>
> private var _typedText:String = "";
>
> public function ValidatedComboBox()
> {
> //TODO: implement function
> super();
> this.addEventListener
> (Event.CHANGE,_eventHandler)
> }
>
> /**
> * Add a new inspectable property so the user can
> enter the Bad Indexesn
> * at authortime via the properties panel.
> *
> * @return the specified bad indexes
> */
> [Inspectable( type="String" , defaultValue="" )]
> public function get badIndexes():String
> {
> return this._badIndexes;
> }
> /**
> * Sets the the specified bad indexes
> */
> public function set badIndexes(
> badIndexes:String ):void
> {
> this._badIndexes = badIndexes;
> }
>
> /**
> * Add a new inspectable property so the user can
> enter the promptLabel for the field
> * at authortime via the properties panel.
> *
> * @return the specified promptLabel
> */
> [Inspectable( type="String" , defaultValue="" )]
> public function get promptLabel():String
> {
> return this._promptLabel;
> }
> /**
> * Sets the the specified promptLabel
> */
> public function set promptLabel(
> promptLabel:String ):void
> {
> this._promptLabel = promptLabel;
> }
>
> /**
> * Add a new inspectable property so the user can
> specify the whether this field should be validated
> * via the properties panel.
> *
> * @return the specified validate data flag.
> */
> [Inspectable( type="Boolean" , defaultValue=false,
> enumeration="true,false" )]
> public function get doValidateData():Boolean
> {
> return this._doValidateData;
> }
>
> /**
> * Sets the specified validate data flag.
> */
> public function set doValidateData(
> doValidateData:Boolean ):void
> {
> this._doValidateData = doValidateData;
> }
>
> /**
> * Add a new inspecta

[flexcoders] Re: Keydownhandler fires twice for each keystroke

2008-08-30 Thread aceoohay
I found a little more information.

This "undesireable feature", aka bug manifests itself only if you 
make the combobox "editable."

I removed the editable="true" and the problem goes away.

Paul

--- In flexcoders@yahoogroups.com, "aceoohay" <[EMAIL PROTECTED]> wrote:
>
> Since creating a test case would be challenging I am posting the 
> component ValidatedComboBox.as. The problem I am having is that it 
> appears to call the keyDownHandler(event:KeyboardEvent):void 
function 
> twice for each keystroke. I have commented out most of that 
> function's code, as it used to handle all input there but now I 
only 
> handle the backspace there this is a patch to get it to function 
> somewhat.
> 
> 
> package Classes.Input
> {
>   import flash.events.Event;
>   import mx.controls.ComboBox;
>   import flash.events.KeyboardEvent;
>   import flash.ui.Keyboard;
>   import flash.events.FocusEvent;
>   import flash.events.MouseEvent;
>   
>   /**
>* Create an extended version of the ComboBox that allows the 
> definition of invalid indexes.
>* 
>* The developer defines one or more invalid indexes in a 
> comma separated list using the property badIndexes.
>* Most commonly the developer would specify "0" which is the 
> first element in the list.
>* 
>* New properties are;
>* badIndexes - A string that allows the developer to define 
> a comma separated list of invalid indexes.
>* isVald - A boolean that defines whether the field is valid.
>* 
>* New Methods are;
>* validateData() - This method checks if the data is valid 
> and returns true if valid, false if invalid.
>* 
>*/
>   public class ValidatedComboBox extends ComboBox
>   {
>   /** Bad indexes - A comma separated list of invalid 
> indexes. */
>   private var _badIndexes:String = "";
>   
>   /** Has this field passed validation */
>   private var _isValid:Boolean = true;
>   
>   /** value */
>   private var _value:Object;
>   
>   /** should we validate data */
>   private var _doValidateData:Boolean = true;
>   
>   /** promptLabel */
>   private var _promptLabel:String;
>   
>   /** toolTipField */
>   private var _toolTipField:String = "";
>   
>   /** Default value A literal that represents the value 
> that will replace the "value"
>* property when the method setDefault is executed */
>   private var _defaultValue:String = "";
>   
>   private var _eventHandler:Function = this
> ["checkData"];
>   
>   private var _typedText:String = "";
>   
>   public function ValidatedComboBox()
>   {
>   //TODO: implement function
>   super();
>   this.addEventListener
> (Event.CHANGE,_eventHandler)
>   }
>   
>   /**
>* Add a new inspectable property so the user can 
> enter the Bad Indexesn 
>*  at authortime via the properties panel.
>* 
>* @return the specified bad indexes
>*/
>   [Inspectable( type="String" , defaultValue="" )]
>   public function get badIndexes():String 
>   {
>   return this._badIndexes;
>   } 
>   /**
>* Sets the the specified bad indexes
>*/
>   public function set badIndexes( 
> badIndexes:String ):void 
>   {
>   this._badIndexes = badIndexes;
>   }
>   
>   /**
>* Add a new inspectable property so the user can 
> enter the promptLabel for the field 
>*  at authortime via the properties panel.
>* 
>* @return the specified promptLabel
>*/
>   [Inspectable( type="String" , defaultValue="" )]
>   public function get promptLabel():String 
>   {
>   return this._promptLabel;
>   } 
>   /**
>* Sets the the specified promptLabel
>*/
>   public function set promptLabel( 
> promptLabel:String ):void 
>   {
>   this._promptLabel = promptLabel;
>   }
>   
>   /**
>* Add a new inspectable property so the user can 
> specify the whether this field should be validated 
>* via the properties panel.
>* 
>* @return the specified validate data flag.
>*/
>   [

[flexcoders] Re: Keydownhandler fires twice for each keystroke

2008-08-21 Thread aceoohay
Since creating a test case would be challenging I am posting the 
component ValidatedComboBox.as. The problem I am having is that it 
appears to call the keyDownHandler(event:KeyboardEvent):void function 
twice for each keystroke. I have commented out most of that 
function's code, as it used to handle all input there but now I only 
handle the backspace there this is a patch to get it to function 
somewhat.


package Classes.Input
{
import flash.events.Event;
import mx.controls.ComboBox;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.events.FocusEvent;
import flash.events.MouseEvent;

/**
 * Create an extended version of the ComboBox that allows the 
definition of invalid indexes.
 * 
 * The developer defines one or more invalid indexes in a 
comma separated list using the property badIndexes.
 * Most commonly the developer would specify "0" which is the 
first element in the list.
 * 
 * New properties are;
 * badIndexes - A string that allows the developer to define 
a comma separated list of invalid indexes.
 * isVald - A boolean that defines whether the field is valid.
 * 
 * New Methods are;
 * validateData() - This method checks if the data is valid 
and returns true if valid, false if invalid.
 * 
 */
public class ValidatedComboBox extends ComboBox
{
/** Bad indexes - A comma separated list of invalid 
indexes. */
private var _badIndexes:String = "";

/** Has this field passed validation */
private var _isValid:Boolean = true;

/** value */
private var _value:Object;

/** should we validate data */
private var _doValidateData:Boolean = true;

/** promptLabel */
private var _promptLabel:String;

/** toolTipField */
private var _toolTipField:String = "";

/** Default value A literal that represents the value 
that will replace the "value"
 * property when the method setDefault is executed */
private var _defaultValue:String = "";

private var _eventHandler:Function = this
["checkData"];

private var _typedText:String = "";

public function ValidatedComboBox()
{
//TODO: implement function
super();
this.addEventListener
(Event.CHANGE,_eventHandler)
}

/**
 * Add a new inspectable property so the user can 
enter the Bad Indexesn 
 *  at authortime via the properties panel.
 * 
 * @return the specified bad indexes
 */
[Inspectable( type="String" , defaultValue="" )]
public function get badIndexes():String 
{
return this._badIndexes;
} 
/**
 * Sets the the specified bad indexes
 */
public function set badIndexes( 
badIndexes:String ):void 
{
this._badIndexes = badIndexes;
}

/**
 * Add a new inspectable property so the user can 
enter the promptLabel for the field 
 *  at authortime via the properties panel.
 * 
 * @return the specified promptLabel
 */
[Inspectable( type="String" , defaultValue="" )]
public function get promptLabel():String 
{
return this._promptLabel;
} 
/**
 * Sets the the specified promptLabel
 */
public function set promptLabel( 
promptLabel:String ):void 
{
this._promptLabel = promptLabel;
}

/**
 * Add a new inspectable property so the user can 
specify the whether this field should be validated 
 * via the properties panel.
 * 
 * @return the specified validate data flag.
 */
[Inspectable( type="Boolean" , defaultValue=false, 
enumeration="true,false" )]
public function get doValidateData():Boolean 
{
return this._doValidateData;
}

/**
 * Sets the specified validate data flag.

[flexcoders] Re: Keydownhandler fires twice for each keystroke

2008-08-18 Thread arieljake
have you called addEventListener twice?

--- In flexcoders@yahoogroups.com, "aceoohay" <[EMAIL PROTECTED]> wrote:
>
> nope...
> 
> After you posted I inserted;
> 
> event.preventDefault();
> 
> At the beginning of the function with no effect.
> 
> Like I said it seems as though the keyDownHandler function is called 
> twice for each keystroke.
> 
> Paul
> --- In flexcoders@yahoogroups.com, "Tracy Spratt"  
> wrote:
> >
> > Event.preventDefault?
> > 
> > Tracy
> > 
> > 
> > 
> > From: flexcoders@yahoogroups.com 
> [mailto:[EMAIL PROTECTED] On
> > Behalf Of aceoohay
> > Sent: Monday, August 18, 2008 4:46 PM
> > To: flexcoders@yahoogroups.com
> > Subject: [flexcoders] Keydownhandler fires twice for each keystroke
> > 
> >  
> > 
> > Flex 2.0.1
> > 
> > I am trying to capture keystrokes in the keyDownHandler of a 
> > ComboBox and it appears to be firing twice for each keystroke.
> > 
> > Any ideas on what might cause this?
> > 
> > The code below works except that when the user strikes a 
>  
> > it removes two characters from _typedText.
> > 
> > Paul
> > 
> > override protected function textInput_changeHandler
> > (event:Event):void
> > {
> > _typedText += this.textInput.text;
> > if (!findFirstItem(_typedText))
> > {
> > _typedText = _typedText.substr
> > (0,_typedText.length -1);
> > findFirstItem(_typedText);
> > }
> > }
> > override protected function keyDownHandler
> > (event:KeyboardEvent):void
> > {
> > if(!event.ctrlKey)
> > {
> > if (event.keyCode == 
> > Keyboard.BACKSPACE || event.keyCode == Keyboard.DELETE)
> > {
> > _typedText = 
> > _typedText.substr(0,_typedText.length -1);
> > findFirstItem(_typedText);
> > }
> > }
> > }
> >
>




RE: [flexcoders] Re: Keydownhandler fires twice for each keystroke

2008-08-18 Thread Alex Harui
keyDown is not cancelable.

 

Post a test case so we can see how you wired it up.

 



From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of aceoohay
Sent: Monday, August 18, 2008 3:01 PM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: Keydownhandler fires twice for each keystroke

 

nope...

After you posted I inserted;

event.preventDefault();

At the beginning of the function with no effect.

Like I said it seems as though the keyDownHandler function is called 
twice for each keystroke.

Paul
--- In flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com>
, "Tracy Spratt" <[EMAIL PROTECTED]> 
wrote:
>
> Event.preventDefault?
> 
> Tracy
> 
> 
> 
> From: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com>

[mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com>
] On
> Behalf Of aceoohay
> Sent: Monday, August 18, 2008 4:46 PM
> To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> 
> Subject: [flexcoders] Keydownhandler fires twice for each keystroke
> 
> 
> 
> Flex 2.0.1
> 
> I am trying to capture keystrokes in the keyDownHandler of a 
> ComboBox and it appears to be firing twice for each keystroke.
> 
> Any ideas on what might cause this?
> 
> The code below works except that when the user strikes a 
 
> it removes two characters from _typedText.
> 
> Paul
> 
> override protected function textInput_changeHandler
> (event:Event):void
> {
> _typedText += this.textInput.text;
> if (!findFirstItem(_typedText))
> {
> _typedText = _typedText.substr
> (0,_typedText.length -1);
> findFirstItem(_typedText);
> }
> }
> override protected function keyDownHandler
> (event:KeyboardEvent):void
> {
> if(!event.ctrlKey)
> {
> if (event.keyCode == 
> Keyboard.BACKSPACE || event.keyCode == Keyboard.DELETE)
> {
> _typedText = 
> _typedText.substr(0,_typedText.length -1);
> findFirstItem(_typedText);
> }
> }
> }
>

 



[flexcoders] Re: Keydownhandler fires twice for each keystroke

2008-08-18 Thread aceoohay
nope...

After you posted I inserted;

event.preventDefault();

At the beginning of the function with no effect.

Like I said it seems as though the keyDownHandler function is called 
twice for each keystroke.

Paul
--- In flexcoders@yahoogroups.com, "Tracy Spratt" <[EMAIL PROTECTED]> 
wrote:
>
> Event.preventDefault?
> 
> Tracy
> 
> 
> 
> From: flexcoders@yahoogroups.com 
[mailto:[EMAIL PROTECTED] On
> Behalf Of aceoohay
> Sent: Monday, August 18, 2008 4:46 PM
> To: flexcoders@yahoogroups.com
> Subject: [flexcoders] Keydownhandler fires twice for each keystroke
> 
>  
> 
> Flex 2.0.1
> 
> I am trying to capture keystrokes in the keyDownHandler of a 
> ComboBox and it appears to be firing twice for each keystroke.
> 
> Any ideas on what might cause this?
> 
> The code below works except that when the user strikes a 
 
> it removes two characters from _typedText.
> 
> Paul
> 
> override protected function textInput_changeHandler
> (event:Event):void
> {
> _typedText += this.textInput.text;
> if (!findFirstItem(_typedText))
> {
> _typedText = _typedText.substr
> (0,_typedText.length -1);
> findFirstItem(_typedText);
> }
> }
> override protected function keyDownHandler
> (event:KeyboardEvent):void
> {
> if(!event.ctrlKey)
> {
> if (event.keyCode == 
> Keyboard.BACKSPACE || event.keyCode == Keyboard.DELETE)
> {
> _typedText = 
> _typedText.substr(0,_typedText.length -1);
> findFirstItem(_typedText);
> }
> }
> }
>