I am trying to decipher some of the sencha touch components so I can extend them. It looks like they make pretty extensive use of a capability in the class system that I can't find documented anywhere. Namely how Evented, eventedConfig, and fireAction work together to to provide common functionality to components.

From what I have been able to determine so far, If an object derived from Evented has a config for 'eventedConfig', it will define configuration settings that are treated differently from normal class configuration.

It appears to override the setters for properties to introduce:
* calls applier to get value to apply
* if value has changed from old to new (value to apply)
* If it has been initialized in past, fireAction [property]change
* Internally calls before and after listeners??
* Call doSet[Property] method to set the value

Is this accurate and is this documented more completely somewhere else? What else does it do beyond the capabilities of "normal" configuration properties?

What exactly does fireAction do and what does it cause the system to send out?

What can the user do with these capabilities? For example can we intercept some of the events sent by fireAction to change or abort setting values?

Sorry for all the questions, I am just trying to understand this area more completely so I can understand the base components better in the system.