|
Struts example source code file (html.js)
The Struts html.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.lfx.html"); dojo.require("dojo.gfx.color"); dojo.require("dojo.lfx.Animation"); dojo.require("dojo.lang.array"); dojo.require("dojo.html.display"); dojo.require("dojo.html.color"); dojo.require("dojo.html.layout"); dojo.lfx.html._byId = function (nodes) { if (!nodes) { return []; } if (dojo.lang.isArrayLike(nodes)) { if (!nodes.alreadyChecked) { var n = []; dojo.lang.forEach(nodes, function (node) { n.push(dojo.byId(node)); }); n.alreadyChecked = true; return n; } else { return nodes; } } else { var n = []; n.push(dojo.byId(nodes)); n.alreadyChecked = true; return n; } }; dojo.lfx.html.propertyAnimation = function (nodes, propertyMap, duration, easing, handlers) { nodes = dojo.lfx.html._byId(nodes); var targs = {"propertyMap":propertyMap, "nodes":nodes, "duration":duration, "easing":easing || dojo.lfx.easeDefault}; var setEmUp = function (args) { if (args.nodes.length == 1) { var pm = args.propertyMap; if (!dojo.lang.isArray(args.propertyMap)) { var parr = []; for (var pname in pm) { pm[pname].property = pname; parr.push(pm[pname]); } pm = args.propertyMap = parr; } dojo.lang.forEach(pm, function (prop) { if (dj_undef("start", prop)) { if (prop.property != "opacity") { prop.start = parseInt(dojo.html.getComputedStyle(args.nodes[0], prop.property)); } else { prop.start = dojo.html.getOpacity(args.nodes[0]); } } }); } }; var coordsAsInts = function (coords) { var cints = []; dojo.lang.forEach(coords, function (c) { cints.push(Math.round(c)); }); return cints; }; var setStyle = function (n, style) { n = dojo.byId(n); if (!n || !n.style) { return; } for (var s in style) { try { if (s == "opacity") { dojo.html.setOpacity(n, style[s]); } else { n.style[s] = style[s]; } } catch (e) { dojo.debug(e); } } }; var propLine = function (properties) { this._properties = properties; this.diffs = new Array(properties.length); dojo.lang.forEach(properties, function (prop, i) { if (dojo.lang.isFunction(prop.start)) { prop.start = prop.start(prop, i); } if (dojo.lang.isFunction(prop.end)) { prop.end = prop.end(prop, i); } if (dojo.lang.isArray(prop.start)) { this.diffs[i] = null; } else { if (prop.start instanceof dojo.gfx.color.Color) { prop.startRgb = prop.start.toRgb(); prop.endRgb = prop.end.toRgb(); } else { this.diffs[i] = prop.end - prop.start; } } }, this); this.getValue = function (n) { var ret = {}; dojo.lang.forEach(this._properties, function (prop, i) { var value = null; if (dojo.lang.isArray(prop.start)) { } else { if (prop.start instanceof dojo.gfx.color.Color) { value = (prop.units || "rgb") + "("; for (var j = 0; j < prop.startRgb.length; j++) { value += Math.round(((prop.endRgb[j] - prop.startRgb[j]) * n) + prop.startRgb[j]) + (j < prop.startRgb.length - 1 ? "," : ""); } value += ")"; } else { value = ((this.diffs[i]) * n) + prop.start + (prop.property != "opacity" ? prop.units || "px" : ""); } } ret[dojo.html.toCamelCase(prop.property)] = value; }, this); return ret; }; }; var anim = new dojo.lfx.Animation({beforeBegin:function () { setEmUp(targs); anim.curve = new propLine(targs.propertyMap); }, onAnimate:function (propValues) { dojo.lang.forEach(targs.nodes, function (node) { setStyle(node, propValues); }); }}, targs.duration, null, targs.easing); if (handlers) { for (var x in handlers) { if (dojo.lang.isFunction(handlers[x])) { anim.connect(x, anim, handlers[x]); } } } return anim; }; dojo.lfx.html._makeFadeable = function (nodes) { var makeFade = function (node) { if (dojo.render.html.ie) { if ((node.style.zoom.length == 0) && (dojo.html.getStyle(node, "zoom") == "normal")) { node.style.zoom = "1"; } if ((node.style.width.length == 0) && (dojo.html.getStyle(node, "width") == "auto")) { node.style.width = "auto"; } } }; if (dojo.lang.isArrayLike(nodes)) { dojo.lang.forEach(nodes, makeFade); } else { makeFade(nodes); } }; dojo.lfx.html.fade = function (nodes, values, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var props = {property:"opacity"}; if (!dj_undef("start", values)) { props.start = values.start; } else { props.start = function () { return dojo.html.getOpacity(nodes[0]); }; } if (!dj_undef("end", values)) { props.end = values.end; } else { dojo.raise("dojo.lfx.html.fade needs an end value"); } var anim = dojo.lfx.propertyAnimation(nodes, [props], duration, easing); anim.connect("beforeBegin", function () { dojo.lfx.html._makeFadeable(nodes); }); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } return anim; }; dojo.lfx.html.fadeIn = function (nodes, duration, easing, callback) { return dojo.lfx.html.fade(nodes, {end:1}, duration, easing, callback); }; dojo.lfx.html.fadeOut = function (nodes, duration, easing, callback) { return dojo.lfx.html.fade(nodes, {end:0}, duration, easing, callback); }; dojo.lfx.html.fadeShow = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); dojo.lang.forEach(nodes, function (node) { dojo.html.setOpacity(node, 0); }); var anim = dojo.lfx.html.fadeIn(nodes, duration, easing, callback); anim.connect("beforeBegin", function () { if (dojo.lang.isArrayLike(nodes)) { dojo.lang.forEach(nodes, dojo.html.show); } else { dojo.html.show(nodes); } }); return anim; }; dojo.lfx.html.fadeHide = function (nodes, duration, easing, callback) { var anim = dojo.lfx.html.fadeOut(nodes, duration, easing, function () { if (dojo.lang.isArrayLike(nodes)) { dojo.lang.forEach(nodes, dojo.html.hide); } else { dojo.html.hide(nodes); } if (callback) { callback(nodes, anim); } }); return anim; }; dojo.lfx.html.wipeIn = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var oprop = {}; var origTop, origLeft, origPosition; with (node.style) { origTop = top; origLeft = left; origPosition = position; top = "-9999px"; left = "-9999px"; position = "absolute"; display = ""; } var nodeHeight = dojo.html.getBorderBox(node).height; with (node.style) { top = origTop; left = origLeft; position = origPosition; display = "none"; } var anim = dojo.lfx.propertyAnimation(node, {"height":{start:1, end:function () { return nodeHeight; }}}, duration, easing); anim.connect("beforeBegin", function () { oprop.overflow = node.style.overflow; oprop.height = node.style.height; with (node.style) { overflow = "hidden"; height = "1px"; } dojo.html.show(node); }); anim.connect("onEnd", function () { with (node.style) { overflow = oprop.overflow; height = oprop.height; } if (callback) { callback(node, anim); } }); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.wipeOut = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var oprop = {}; var anim = dojo.lfx.propertyAnimation(node, {"height":{start:function () { return dojo.html.getContentBox(node).height; }, end:1}}, duration, easing, {"beforeBegin":function () { oprop.overflow = node.style.overflow; oprop.height = node.style.height; with (node.style) { overflow = "hidden"; } dojo.html.show(node); }, "onEnd":function () { dojo.html.hide(node); with (node.style) { overflow = oprop.overflow; height = oprop.height; } if (callback) { callback(node, anim); } }}); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.slideTo = function (nodes, coords, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; var compute = dojo.html.getComputedStyle; if (dojo.lang.isArray(coords)) { dojo.deprecated("dojo.lfx.html.slideTo(node, array)", "use dojo.lfx.html.slideTo(node, {top: value, left: value});", "0.5"); coords = {top:coords[0], left:coords[1]}; } dojo.lang.forEach(nodes, function (node) { var top = null; var left = null; var init = (function () { var innerNode = node; return function () { var pos = compute(innerNode, "position"); top = (pos == "absolute" ? node.offsetTop : parseInt(compute(node, "top")) || 0); left = (pos == "absolute" ? node.offsetLeft : parseInt(compute(node, "left")) || 0); if (!dojo.lang.inArray(["absolute", "relative"], pos)) { var ret = dojo.html.abs(innerNode, true); dojo.html.setStyleAttributes(innerNode, "position:absolute;top:" + ret.y + "px;left:" + ret.x + "px;"); top = ret.y; left = ret.x; } }; })(); init(); var anim = dojo.lfx.propertyAnimation(node, {"top":{start:top, end:(coords.top || 0)}, "left":{start:left, end:(coords.left || 0)}}, duration, easing, {"beforeBegin":init}); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.slideBy = function (nodes, coords, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; var compute = dojo.html.getComputedStyle; if (dojo.lang.isArray(coords)) { dojo.deprecated("dojo.lfx.html.slideBy(node, array)", "use dojo.lfx.html.slideBy(node, {top: value, left: value});", "0.5"); coords = {top:coords[0], left:coords[1]}; } dojo.lang.forEach(nodes, function (node) { var top = null; var left = null; var init = (function () { var innerNode = node; return function () { var pos = compute(innerNode, "position"); top = (pos == "absolute" ? node.offsetTop : parseInt(compute(node, "top")) || 0); left = (pos == "absolute" ? node.offsetLeft : parseInt(compute(node, "left")) || 0); if (!dojo.lang.inArray(["absolute", "relative"], pos)) { var ret = dojo.html.abs(innerNode, true); dojo.html.setStyleAttributes(innerNode, "position:absolute;top:" + ret.y + "px;left:" + ret.x + "px;"); top = ret.y; left = ret.x; } }; })(); init(); var anim = dojo.lfx.propertyAnimation(node, {"top":{start:top, end:top + (coords.top || 0)}, "left":{start:left, end:left + (coords.left || 0)}}, duration, easing).connect("beforeBegin", init); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.explode = function (start, endNode, duration, easing, callback) { var h = dojo.html; start = dojo.byId(start); endNode = dojo.byId(endNode); var startCoords = h.toCoordinateObject(start, true); var outline = document.createElement("div"); h.copyStyle(outline, endNode); if (endNode.explodeClassName) { outline.className = endNode.explodeClassName; } with (outline.style) { position = "absolute"; display = "none"; var backgroundStyle = h.getStyle(start, "background-color"); backgroundColor = backgroundStyle ? backgroundStyle.toLowerCase() : "transparent"; backgroundColor = (backgroundColor == "transparent") ? "rgb(221, 221, 221)" : backgroundColor; } dojo.body().appendChild(outline); with (endNode.style) { visibility = "hidden"; display = "block"; } var endCoords = h.toCoordinateObject(endNode, true); with (endNode.style) { display = "none"; visibility = "visible"; } var props = {opacity:{start:0.5, end:1}}; dojo.lang.forEach(["height", "width", "top", "left"], function (type) { props[type] = {start:startCoords[type], end:endCoords[type]}; }); var anim = new dojo.lfx.propertyAnimation(outline, props, duration, easing, {"beforeBegin":function () { h.setDisplay(outline, "block"); }, "onEnd":function () { h.setDisplay(endNode, "block"); outline.parentNode.removeChild(outline); }}); if (callback) { anim.connect("onEnd", function () { callback(endNode, anim); }); } return anim; }; dojo.lfx.html.implode = function (startNode, end, duration, easing, callback) { var h = dojo.html; startNode = dojo.byId(startNode); end = dojo.byId(end); var startCoords = dojo.html.toCoordinateObject(startNode, true); var endCoords = dojo.html.toCoordinateObject(end, true); var outline = document.createElement("div"); dojo.html.copyStyle(outline, startNode); if (startNode.explodeClassName) { outline.className = startNode.explodeClassName; } dojo.html.setOpacity(outline, 0.3); with (outline.style) { position = "absolute"; display = "none"; backgroundColor = h.getStyle(startNode, "background-color").toLowerCase(); } dojo.body().appendChild(outline); var props = {opacity:{start:1, end:0.5}}; dojo.lang.forEach(["height", "width", "top", "left"], function (type) { props[type] = {start:startCoords[type], end:endCoords[type]}; }); var anim = new dojo.lfx.propertyAnimation(outline, props, duration, easing, {"beforeBegin":function () { dojo.html.hide(startNode); dojo.html.show(outline); }, "onEnd":function () { outline.parentNode.removeChild(outline); }}); if (callback) { anim.connect("onEnd", function () { callback(startNode, anim); }); } return anim; }; dojo.lfx.html.highlight = function (nodes, startColor, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var color = dojo.html.getBackgroundColor(node); var bg = dojo.html.getStyle(node, "background-color").toLowerCase(); var bgImage = dojo.html.getStyle(node, "background-image"); var wasTransparent = (bg == "transparent" || bg == "rgba(0, 0, 0, 0)"); while (color.length > 3) { color.pop(); } var rgb = new dojo.gfx.color.Color(startColor); var endRgb = new dojo.gfx.color.Color(color); var anim = dojo.lfx.propertyAnimation(node, {"background-color":{start:rgb, end:endRgb}}, duration, easing, {"beforeBegin":function () { if (bgImage) { node.style.backgroundImage = "none"; } node.style.backgroundColor = "rgb(" + rgb.toRgb().join(",") + ")"; }, "onEnd":function () { if (bgImage) { node.style.backgroundImage = bgImage; } if (wasTransparent) { node.style.backgroundColor = "transparent"; } if (callback) { callback(node, anim); } }}); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.unhighlight = function (nodes, endColor, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var color = new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node)); var rgb = new dojo.gfx.color.Color(endColor); var bgImage = dojo.html.getStyle(node, "background-image"); var anim = dojo.lfx.propertyAnimation(node, {"background-color":{start:color, end:rgb}}, duration, easing, {"beforeBegin":function () { if (bgImage) { node.style.backgroundImage = "none"; } node.style.backgroundColor = "rgb(" + color.toRgb().join(",") + ")"; }, "onEnd":function () { if (callback) { callback(node, anim); } }}); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lang.mixin(dojo.lfx, dojo.lfx.html); Other Struts examples (source code examples)Here is a short list of links related to this Struts html.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.