X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/6e39d509471fe9b4e2660e0d1631b350d0c66f40..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/docs/source/PluginManager.html diff --git a/docs/source/PluginManager.html b/docs/source/PluginManager.html new file mode 100644 index 00000000..00686cc7 --- /dev/null +++ b/docs/source/PluginManager.html @@ -0,0 +1,97 @@ +
\ No newline at end of file/** + * @class Ext.PluginManager + * @extends Ext.AbstractManager + * <p>Provides a registry of available Plugin <i>classes</i> indexed by a mnemonic code known as the Plugin's ptype. + * The <code>{@link Ext.Component#xtype xtype}</code> provides a way to avoid instantiating child Components + * when creating a full, nested config object for a complete Ext page.</p> + * <p>A child Component may be specified simply as a <i>config object</i> + * as long as the correct <code>{@link Ext.Component#xtype xtype}</code> is specified so that if and when the Component + * needs rendering, the correct type can be looked up for lazy instantiation.</p> + * <p>For a list of all available <code>{@link Ext.Component#xtype xtypes}</code>, see {@link Ext.Component}.</p> + * @singleton + */ +Ext.define('Ext.PluginManager', { + extend: 'Ext.AbstractManager', + alternateClassName: 'Ext.PluginMgr', + singleton: true, + typeName: 'ptype', + + /** + * Creates a new Plugin from the specified config object using the + * config object's ptype to determine the class to instantiate. + * @param {Object} config A configuration object for the Plugin you wish to create. + * @param {Constructor} defaultType The constructor to provide the default Plugin type if + * the config object does not contain a <code>ptype</code>. (Optional if the config contains a <code>ptype</code>). + * @return {Ext.Component} The newly instantiated Plugin. + */ + //create: function(plugin, defaultType) { + // if (plugin instanceof this) { + // return plugin; + // } else { + // var type, config = {}; + // + // if (Ext.isString(plugin)) { + // type = plugin; + // } + // else { + // type = plugin[this.typeName] || defaultType; + // config = plugin; + // } + // + // return Ext.createByAlias('plugin.' + type, config); + // } + //}, + + create : function(config, defaultType){ + if (config.init) { + return config; + } else { + return Ext.createByAlias('plugin.' + (config.ptype || defaultType), config); + } + + // Prior system supported Singleton plugins. + //var PluginCls = this.types[config.ptype || defaultType]; + //if (PluginCls.init) { + // return PluginCls; + //} else { + // return new PluginCls(config); + //} + }, + + /** + * Returns all plugins registered with the given type. Here, 'type' refers to the type of plugin, not its ptype. + * @param {String} type The type to search for + * @param {Boolean} defaultsOnly True to only return plugins of this type where the plugin's isDefault property is truthy + * @return {Array} All matching plugins + */ + findByType: function(type, defaultsOnly) { + var matches = [], + types = this.types; + + for (var name in types) { + if (!types.hasOwnProperty(name)) { + continue; + } + var item = types[name]; + + if (item.type == type && (!defaultsOnly || (defaultsOnly === true && item.isDefault))) { + matches.push(item); + } + } + + return matches; + } +}, function() { + /** + * Shorthand for {@link Ext.PluginManager#registerType} + * @param {String} ptype The ptype mnemonic string by which the Plugin class + * may be looked up. + * @param {Constructor} cls The new Plugin class. + * @member Ext + * @method preg + */ + Ext.preg = function() { + return Ext.PluginManager.registerType.apply(Ext.PluginManager, arguments); + }; +}); +