init repo

This commit is contained in:
nikolay ivanov
2014-07-05 18:22:49 +00:00
commit a8be6b9e72
17348 changed files with 9229832 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
/**
* @private
*/
Ext.define('Ext.event.publisher.ComponentSize', {
extend: 'Ext.event.publisher.Publisher',
requires: [
'Ext.ComponentManager'
],
targetType: 'component',
handledEvents: ['resize', 'innerresize'],
constructor: function() {
this.callParent(arguments);
this.sizeMonitors = {};
},
getSubscribers: function(target, createIfNotExist) {
var subscribers = this.subscribers;
if (!subscribers.hasOwnProperty(target)) {
if (!createIfNotExist) {
return null;
}
subscribers[target] = {
$length: 0
};
}
return subscribers[target];
},
subscribe: function(target, eventName) {
var match = target.match(this.idSelectorRegex),
sizeMonitors = this.sizeMonitors,
dispatcher = this.dispatcher,
targetType = this.targetType,
subscribers, component, id;
if (!match) {
return false;
}
id = match[1];
subscribers = this.getSubscribers(target, true);
subscribers.$length++;
if (subscribers.hasOwnProperty(eventName)) {
subscribers[eventName]++;
return true;
}
if (subscribers.$length === 1) {
dispatcher.addListener(targetType, target, 'painted', 'onComponentPainted', this, null, 'before');
}
component = Ext.ComponentManager.get(id);
//<debug error>
if (!component) {
Ext.Logger.error("Adding a listener to the 'resize' event of a non-existing component");
}
//</debug>
if (!sizeMonitors[target]) {
sizeMonitors[target] = {};
}
sizeMonitors[target][eventName] = new Ext.util.SizeMonitor({
element: eventName === 'resize' ? component.element : component.innerElement,
callback: this.onComponentSizeChange,
scope: this,
args: [this, target, eventName]
});
subscribers[eventName] = 1;
return true;
},
unsubscribe: function(target, eventName, all) {
var match = target.match(this.idSelectorRegex),
dispatcher = this.dispatcher,
targetType = this.targetType,
sizeMonitors = this.sizeMonitors,
subscribers,
id;
if (!match || !(subscribers = this.getSubscribers(target))) {
return false;
}
id = match[1];
if (!subscribers.hasOwnProperty(eventName) || (!all && --subscribers[eventName] > 0)) {
return true;
}
delete subscribers[eventName];
sizeMonitors[target][eventName].destroy();
delete sizeMonitors[target][eventName];
if (--subscribers.$length === 0) {
delete sizeMonitors[target];
delete this.subscribers[target];
dispatcher.removeListener(targetType, target, 'painted', 'onComponentPainted', this, 'before');
}
return true;
},
onComponentPainted: function(component) {
var target = component.getObservableId(),
sizeMonitors = this.sizeMonitors[target];
if (sizeMonitors.resize) {
sizeMonitors.resize.refresh();
}
if (sizeMonitors.innerresize) {
sizeMonitors.innerresize.refresh();
}
},
onComponentSizeChange: function(component, observableId, eventName) {
this.dispatcher.doDispatchEvent(this.targetType, observableId, eventName, [component]);
}
});