|
Struts example source code file (behavior.js)
The Struts behavior.js source code/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml */ dojo.provide("dojo.behavior"); dojo.require("dojo.event.*"); dojo.require("dojo.experimental"); dojo.experimental("dojo.behavior"); dojo.behavior = new function () { function arrIn(obj, name) { if (!obj[name]) { obj[name] = []; } return obj[name]; } function forIn(obj, scope, func) { var tmpObj = {}; for (var x in obj) { if (typeof tmpObj[x] == "undefined") { if (!func) { scope(obj[x], x); } else { func.call(scope, obj[x], x); } } } } this.behaviors = {}; this.add = function (behaviorObj) { var tmpObj = {}; forIn(behaviorObj, this, function (behavior, name) { var tBehavior = arrIn(this.behaviors, name); if ((dojo.lang.isString(behavior)) || (dojo.lang.isFunction(behavior))) { behavior = {found:behavior}; } forIn(behavior, function (rule, ruleName) { arrIn(tBehavior, ruleName).push(rule); }); }); }; this.apply = function () { dojo.profile.start("dojo.behavior.apply"); var r = dojo.render.html; var safariGoodEnough = (!r.safari); if (r.safari) { var uas = r.UA.split("AppleWebKit/")[1]; if (parseInt(uas.match(/[0-9.]{3,}/)) >= 420) { safariGoodEnough = true; } } if ((dj_undef("behaviorFastParse", djConfig) ? (safariGoodEnough) : djConfig["behaviorFastParse"])) { this.applyFast(); } else { this.applySlow(); } dojo.profile.end("dojo.behavior.apply"); }; this.matchCache = {}; this.elementsById = function (id, handleRemoved) { var removed = []; var added = []; arrIn(this.matchCache, id); if (handleRemoved) { var nodes = this.matchCache[id]; for (var x = 0; x < nodes.length; x++) { if (nodes[x].id != "") { removed.push(nodes[x]); nodes.splice(x, 1); x--; } } } var tElem = dojo.byId(id); while (tElem) { if (!tElem["idcached"]) { added.push(tElem); } tElem.id = ""; tElem = dojo.byId(id); } this.matchCache[id] = this.matchCache[id].concat(added); dojo.lang.forEach(this.matchCache[id], function (node) { node.id = id; node.idcached = true; }); return {"removed":removed, "added":added, "match":this.matchCache[id]}; }; this.applyToNode = function (node, action, ruleSetName) { if (typeof action == "string") { dojo.event.topic.registerPublisher(action, node, ruleSetName); } else { if (typeof action == "function") { if (ruleSetName == "found") { action(node); } else { dojo.event.connect(node, ruleSetName, action); } } else { action.srcObj = node; action.srcFunc = ruleSetName; dojo.event.kwConnect(action); } } }; this.applyFast = function () { dojo.profile.start("dojo.behavior.applyFast"); forIn(this.behaviors, function (tBehavior, id) { var elems = dojo.behavior.elementsById(id); dojo.lang.forEach(elems.added, function (elem) { forIn(tBehavior, function (ruleSet, ruleSetName) { if (dojo.lang.isArray(ruleSet)) { dojo.lang.forEach(ruleSet, function (action) { dojo.behavior.applyToNode(elem, action, ruleSetName); }); } }); }); }); dojo.profile.end("dojo.behavior.applyFast"); }; this.applySlow = function () { dojo.profile.start("dojo.behavior.applySlow"); var all = document.getElementsByTagName("*"); var allLen = all.length; for (var x = 0; x < allLen; x++) { var elem = all[x]; if ((elem.id) && (!elem["behaviorAdded"]) && (this.behaviors[elem.id])) { elem["behaviorAdded"] = true; forIn(this.behaviors[elem.id], function (ruleSet, ruleSetName) { if (dojo.lang.isArray(ruleSet)) { dojo.lang.forEach(ruleSet, function (action) { dojo.behavior.applyToNode(elem, action, ruleSetName); }); } }); } } dojo.profile.end("dojo.behavior.applySlow"); }; }; dojo.addOnLoad(dojo.behavior, "apply"); Other Struts examples (source code examples)Here is a short list of links related to this Struts behavior.js source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.