]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | /**\r |
2 | * @private\r | |
3 | */\r | |
4 | Ext.define('Ext.Evented', {\r | |
5 | \r | |
6 | alternateClassName: 'Ext.EventedBase',\r | |
7 | \r | |
8 | mixins: [\r | |
9 | 'Ext.mixin.Observable'\r | |
10 | ],\r | |
11 | \r | |
12 | initialized: false,\r | |
13 | \r | |
14 | constructor: function(config) {\r | |
15 | this.mixins.observable.constructor.call(this, config);\r | |
16 | this.initialized = true;\r | |
17 | },\r | |
18 | \r | |
19 | onClassExtended: function(cls, data) {\r | |
20 | if (!data.hasOwnProperty('eventedConfig')) {\r | |
21 | return;\r | |
22 | }\r | |
23 | \r | |
24 | var config = data.config,\r | |
25 | eventedConfig = data.eventedConfig,\r | |
26 | name, cfg;\r | |
27 | \r | |
28 | if (config) {\r | |
29 | Ext.applyIf(config, eventedConfig);\r | |
30 | } else {\r | |
31 | cls.addConfig(eventedConfig);\r | |
32 | }\r | |
33 | \r | |
34 | /*\r | |
35 | * These are generated setters for eventedConfig\r | |
36 | *\r | |
37 | * If the component is initialized, it invokes fireAction to fire the event as well,\r | |
38 | * which indicate something has changed. Otherwise, it just executes the action\r | |
39 | * (happens during initialization)\r | |
40 | *\r | |
41 | * This is helpful when we only want the event to be fired for subsequent changes.\r | |
42 | * Also it's a major performance improvement for instantiation when fired events\r | |
43 | * are mostly useless since there's no listeners\r | |
44 | */\r | |
45 | \r | |
46 | //TODO: Move this into Observable\r | |
47 | for (name in eventedConfig) {\r | |
48 | if (eventedConfig.hasOwnProperty(name)) {\r | |
49 | cfg = Ext.Config.get(name);\r | |
50 | data[cfg.names.set] = cfg.eventedSetter || cfg.getEventedSetter();\r | |
51 | }\r | |
52 | }\r | |
53 | }\r | |
54 | });\r |