/** * This is a base class for objects that can be managed by `Ext.util.Scheduler`. * @private */Ext.define('Ext.util.Schedulable', { 'abstract': true, isSchedulable: true, scheduled: false, constructor: function() { this.getScheduler().add(this); }, destroy: function() { var me = this, scheduler = me.getScheduler(); if (scheduler && !scheduler.destroyed) { scheduler.remove(me); } me.scheduler = null; me.schedule = me.react = Ext.emptyFn; me.callParent(); }, getFullName: function() { return this.name || this.id; }, privates: { /** * This method returns the `Scheduler` for this item. * @return {Ext.util.Scheduler} */ getScheduler: function() { return this.scheduler; }, /** * Schedules this item with the associated `Ext.util.Scheduler`. */ schedule: function() { var me = this, scheduler; if (!me.scheduled) { scheduler = me.getScheduler(); if (scheduler) { me.scheduled = true; if (me.onSchedule) { me.onSchedule(); } scheduler.scheduleItem(me); } } }, /** * Unschedules this item with the associated `Ext.util.Scheduler`. */ unschedule: function() { var me = this, scheduler; if (me.scheduled) { scheduler = me.getScheduler(); if (scheduler && !scheduler.destroyed) { scheduler.unscheduleItem(me); } me.scheduled = false; } }, /** * @method sort * This method should be overridden by items that have dependencies to insert. The * standard form would be: * * sort: function () { * this.getScheduler().sortItems(this.dependencies); * } * * This example assumes the item has a "dependencies" array to pass to the scheduler. */ // Can't use Ext.emptyFn here to avoid setting $private: true on it sort: function() {} }});