]> git.proxmox.com Git - extjs.git/blame - extjs/packages/core/src/util/Schedulable.js
add extjs 6.0.1 sources
[extjs.git] / extjs / packages / core / src / util / Schedulable.js
CommitLineData
6527f429
DM
1/**\r
2 * This is a base class for objects that can be managed by `Ext.util.Scheduler`.\r
3 * @private\r
4 */\r
5Ext.define('Ext.util.Schedulable', {\r
6 'abstract': true,\r
7\r
8 isSchedulable: true,\r
9\r
10 scheduled: false,\r
11\r
12 constructor: function () {\r
13 this.getScheduler().add(this);\r
14 },\r
15\r
16 destroy: function () {\r
17 var me = this,\r
18 scheduler = me.getScheduler();\r
19\r
20 if (scheduler) {\r
21 scheduler.remove(me);\r
22 }\r
23\r
24 me.scheduler = null;\r
25\r
26 me.schedule = me.react = Ext.emptyFn;\r
27 me.callParent();\r
28 },\r
29\r
30 getFullName: function () {\r
31 return this.name || this.id;\r
32 },\r
33\r
34 privates: {\r
35 /**\r
36 * This method returns the `Scheduler` for this item.\r
37 * @return {Ext.util.Scheduler}\r
38 */\r
39 getScheduler: function () {\r
40 return this.scheduler;\r
41 },\r
42\r
43 /**\r
44 * Schedules this item with the associated `Ext.util.Scheduler`.\r
45 */\r
46 schedule: function () {\r
47 var me = this,\r
48 scheduler;\r
49\r
50 if (!me.scheduled) {\r
51 scheduler = me.getScheduler();\r
52\r
53 if (scheduler) {\r
54 me.scheduled = true;\r
55\r
56 if (me.onSchedule) {\r
57 me.onSchedule();\r
58 }\r
59\r
60 scheduler.scheduleItem(me);\r
61 }\r
62 }\r
63 },\r
64 \r
65 /**\r
66 * Unschedules this item with the associated `Ext.util.Scheduler`.\r
67 */\r
68 unschedule: function () {\r
69 var me = this,\r
70 scheduler;\r
71\r
72 if (me.scheduled) {\r
73 scheduler = me.getScheduler();\r
74 if (scheduler) {\r
75 scheduler.unscheduleItem(me);\r
76 }\r
77\r
78 me.scheduled = false;\r
79 }\r
80 },\r
81 \r
82 /**\r
83 * @method sort\r
84 * This method should be overridden by items that have dependencies to insert. The\r
85 * standard form would be:\r
86 *\r
87 * sort: function () {\r
88 * this.getScheduler().sortItems(this.dependencies);\r
89 * }\r
90 *\r
91 * This example assumes the item has a "dependencies" array to pass to the scheduler.\r
92 */\r
93 // Can't use Ext.emptyFn here to avoid setting $private: true on it\r
94 sort: function() {}\r
95 }\r
96});\r