UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

135 lines (109 loc) 3.82 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2009 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Fabian Jakobs (fjakobs) ************************************************************************ */ /** * The part loader knows about all generated packages and parts. * * It contains functionality to load parts and to retrieve part instances. */ qx.Class.define("qx.io.PartLoader", { type : "singleton", extend : qx.core.Object, construct : function() { this.base(arguments); var loader = this._loader = qx.Part.getInstance(); var self = this; loader.onpart = function(part) { if (part.getReadyState() == "complete") { self.fireDataEvent("partLoaded", part); } else { self.fireDataEvent("partLoadingError", part.getName()); } }; }, events : { /** * Fired if a parts was loaded. The data of the event instance point to the * loaded part instance. */ "partLoaded" : "qx.event.type.Data", /** * Fired if a part could not be loaded. The event's * {@link qx.event.type.Data#getData} method returns the name of the failed * part. */ "partLoadingError" : "qx.event.type.Data" }, statics : { /** * Loads one or more parts asynchronously. The callback is called after all * parts and their dependencies are fully loaded. If the parts are already * loaded the callback is called immediately. * * @param partNames {String[]} List of parts names to load as defined in the * config file at compile time. * @param callback {Function} Function to execute on completion. * The function has one parameter which is an array of ready states of * the parts specified in the partNames argument. * @param self {Object?window} Context to execute the given function in */ require : function(partNames, callback, self) { this.getInstance().require(partNames, callback, self); } }, members : { /** * Loads one or more parts asynchronously. The callback is called after all * parts and their dependencies are fully loaded. If the parts are already * loaded the callback is called immediately. * * @param partNames {String|String[]} List of parts names to load as defined * in the config file at compile time. The method also accepts a single * string as parameter to only load one part. * @param callback {Function} Function to execute on completion * @param self {Object?window} Context to execute the given function in */ require : function(partNames, callback, self) { this._loader.require(partNames, callback, self); }, /** * Get the part instance of the part with the given name. * * @param name {String} Name of the part as defined in the config file at * compile time. * @return {qx.io.part.Part} The corresponding part instance */ getPart : function(name) { return this.getParts()[name]; }, /** * Checks if a part with the given name is available. * @param name {String} Name of the part as defined in the config file at * compile time. * @return {Boolean} <code>true</code>, if the part is available */ hasPart : function(name) { return this.getPart(name) !== undefined; }, /** * Returns a map of all known parts. * @return {Map} Map containing all parts. */ getParts : function() { return this._loader.getParts(); } } });