Return to Snippet

Revision: 43897
at April 2, 2011 07:11 by jvandemerwe


Initial Code
/**
 * @class App.Quick
 * Special Class (Singleton)
 * This small singleton works like a kind of application telephone book.
 * A quick register to find critical and often used objects in the application.
 * This object is in NO WAY generic and always application DEPENDENT !!!
 *
 * What makes this small class useful is that it dynamically generates the functions for how the
 * values can be retrieved
 *
 * f.e.
 *
 * App.Quick.set('abba', this);
 *
 * Means that in the register entry abba the reference is set to "this", but in such a way that it
 * will be set by reference, not by value!.
 * 
 * You can retrieve this value simply by using: 
 * App.Quick.abba();
 *
 * App.Quick.check('abba');
 * looks for the existance of a function called 'abba', used for validating if object functions already
 * exist, before calling them.
 *
 * You can also create the entries directly (hard coded) in this class (sometimes good for overview)
 *
 * @namespace App
 *
 * @singleton
 * @author J.J. van de Merwe, Enovision GmbH
 * @version 1.0
 */

Ext.ns('App');

App.Quick = function(){

    return {

        settings : {},

        /**
         * function that checks if an entry already been created for this class (dynamically that is)
         * @params {string} set, which contains the label of the set item to be checked
         *
         * @return {boolean} exists?, true if exists, false if not exists
         */
        check : function(set) {
            return ((App.Quick[set] && typeof(App.Quick[set]) === 'function') === true) ? true : false;
        },

        /**
         * function that adds new entries to the App.Quick set in realtime
         * @params {string} set, which contains the label of the set item to be added
         * @params {mixed objec} Value, the reference value to be connected with the set
         * @params (boolean) forced, when set to true, it will override any existing one with the same label,
         * this is also the default value (false, will not override)
         *
         * @return {boolean} execution state (true is oké, false is no good)
         */
        set   : function(set, Value, forced) {

            if (typeof(set) === 'undefined' || typeof(Value) === 'undefined') {
                return false;
            }

            var is_forced = (typeof(forced) === 'undefined') ? true : forced;
            if (typeof(App.Quick[set]) !== 'undefined' && is_forced === false) return false;

            if (typeof(set) !== 'string') return false;

            App.Quick.settings[set] = Value;

            App.Quick[set] = function() {
                return App.Quick.settings[set];
            }
            return true;

        },

        /**
         *  hardcoded sample (please this sample assumes that App.Quick.StructureManager has 
         *  been set somewhere in the software) 
         *  THIS IS NOT VERY PRACTICAL, BUT FOR THE DEMO ITS OKÉ
         */
        TreeNodeSelectedSemester : function() {
            return App.Quick.StructureManager()._selectedSemester;
        }
   }

}();

Initial URL


Initial Description


Initial Title
Extjs - A smart registry to find objects easy

Initial Tags
object

Initial Language
JavaScript