|
Struts example source code file (style.js)
The Struts style.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.html.style"); dojo.require("dojo.html.common"); dojo.require("dojo.uri.Uri"); dojo.html.getClass = function (node) { node = dojo.byId(node); if (!node) { return ""; } var cs = ""; if (node.className) { cs = node.className; } else { if (dojo.html.hasAttribute(node, "class")) { cs = dojo.html.getAttribute(node, "class"); } } return cs.replace(/^\s+|\s+$/g, ""); }; dojo.html.getClasses = function (node) { var c = dojo.html.getClass(node); return (c == "") ? [] : c.split(/\s+/g); }; dojo.html.hasClass = function (node, classname) { return (new RegExp("(^|\\s+)" + classname + "(\\s+|$)")).test(dojo.html.getClass(node)); }; dojo.html.prependClass = function (node, classStr) { classStr += " " + dojo.html.getClass(node); return dojo.html.setClass(node, classStr); }; dojo.html.addClass = function (node, classStr) { if (dojo.html.hasClass(node, classStr)) { return false; } classStr = (dojo.html.getClass(node) + " " + classStr).replace(/^\s+|\s+$/g, ""); return dojo.html.setClass(node, classStr); }; dojo.html.setClass = function (node, classStr) { node = dojo.byId(node); var cs = new String(classStr); try { if (typeof node.className == "string") { node.className = cs; } else { if (node.setAttribute) { node.setAttribute("class", classStr); node.className = cs; } else { return false; } } } catch (e) { dojo.debug("dojo.html.setClass() failed", e); } return true; }; dojo.html.removeClass = function (node, classStr, allowPartialMatches) { try { if (!allowPartialMatches) { var newcs = dojo.html.getClass(node).replace(new RegExp("(^|\\s+)" + classStr + "(\\s+|$)"), "$1$2"); } else { var newcs = dojo.html.getClass(node).replace(classStr, ""); } dojo.html.setClass(node, newcs); } catch (e) { dojo.debug("dojo.html.removeClass() failed", e); } return true; }; dojo.html.replaceClass = function (node, newClass, oldClass) { dojo.html.removeClass(node, oldClass); dojo.html.addClass(node, newClass); }; dojo.html.classMatchType = {ContainsAll:0, ContainsAny:1, IsOnly:2}; dojo.html.getElementsByClass = function (classStr, parent, nodeType, classMatchType, useNonXpath) { useNonXpath = false; var _document = dojo.doc(); parent = dojo.byId(parent) || _document; var classes = classStr.split(/\s+/g); var nodes = []; if (classMatchType != 1 && classMatchType != 2) { classMatchType = 0; } var reClass = new RegExp("(\\s|^)((" + classes.join(")|(") + "))(\\s|$)"); var srtLength = classes.join(" ").length; var candidateNodes = []; if (!useNonXpath && _document.evaluate) { var xpath = ".//" + (nodeType || "*") + "[contains("; if (classMatchType != dojo.html.classMatchType.ContainsAny) { xpath += "concat(' ',@class,' '), ' " + classes.join(" ') and contains(concat(' ',@class,' '), ' ") + " ')"; if (classMatchType == 2) { xpath += " and string-length(@class)=" + srtLength + "]"; } else { xpath += "]"; } } else { xpath += "concat(' ',@class,' '), ' " + classes.join(" ') or contains(concat(' ',@class,' '), ' ") + " ')]"; } var xpathResult = _document.evaluate(xpath, parent, null, XPathResult.ANY_TYPE, null); var result = xpathResult.iterateNext(); while (result) { try { candidateNodes.push(result); result = xpathResult.iterateNext(); } catch (e) { break; } } return candidateNodes; } else { if (!nodeType) { nodeType = "*"; } candidateNodes = parent.getElementsByTagName(nodeType); var node, i = 0; outer: while (node = candidateNodes[i++]) { var nodeClasses = dojo.html.getClasses(node); if (nodeClasses.length == 0) { continue outer; } var matches = 0; for (var j = 0; j < nodeClasses.length; j++) { if (reClass.test(nodeClasses[j])) { if (classMatchType == dojo.html.classMatchType.ContainsAny) { nodes.push(node); continue outer; } else { matches++; } } else { if (classMatchType == dojo.html.classMatchType.IsOnly) { continue outer; } } } if (matches == classes.length) { if ((classMatchType == dojo.html.classMatchType.IsOnly) && (matches == nodeClasses.length)) { nodes.push(node); } else { if (classMatchType == dojo.html.classMatchType.ContainsAll) { nodes.push(node); } } } } return nodes; } }; dojo.html.getElementsByClassName = dojo.html.getElementsByClass; dojo.html.toCamelCase = function (selector) { var arr = selector.split("-"), cc = arr[0]; for (var i = 1; i < arr.length; i++) { cc += arr[i].charAt(0).toUpperCase() + arr[i].substring(1); } return cc; }; dojo.html.toSelectorCase = function (selector) { return selector.replace(/([A-Z])/g, "-$1").toLowerCase(); }; if (dojo.render.html.ie) { dojo.html.getComputedStyle = function (node, property, value) { node = dojo.byId(node); if (!node || !node.currentStyle) { return value; } return node.currentStyle[dojo.html.toCamelCase(property)]; }; dojo.html.getComputedStyles = function (node) { return node.currentStyle; }; } else { dojo.html.getComputedStyle = function (node, property, value) { node = dojo.byId(node); if (!node || !node.style) { return value; } var s = document.defaultView.getComputedStyle(node, null); return (s && s[dojo.html.toCamelCase(property)]) || ""; }; dojo.html.getComputedStyles = function (node) { return document.defaultView.getComputedStyle(node, null); }; } dojo.html.getStyleProperty = function (node, cssSelector) { node = dojo.byId(node); return (node && node.style ? node.style[dojo.html.toCamelCase(cssSelector)] : undefined); }; dojo.html.getStyle = function (node, cssSelector) { var value = dojo.html.getStyleProperty(node, cssSelector); return (value ? value : dojo.html.getComputedStyle(node, cssSelector)); }; dojo.html.setStyle = function (node, cssSelector, value) { node = dojo.byId(node); if (node && node.style) { var camelCased = dojo.html.toCamelCase(cssSelector); node.style[camelCased] = value; } }; dojo.html.setStyleText = function (target, text) { try { target.style.cssText = text; } catch (e) { target.setAttribute("style", text); } }; dojo.html.copyStyle = function (target, source) { if (!source.style.cssText) { target.setAttribute("style", source.getAttribute("style")); } else { target.style.cssText = source.style.cssText; } dojo.html.addClass(target, dojo.html.getClass(source)); }; dojo.html.getUnitValue = function (node, cssSelector, autoIsZero) { var s = dojo.html.getComputedStyle(node, cssSelector); if ((!s) || ((s == "auto") && (autoIsZero))) { return {value:0, units:"px"}; } var match = s.match(/(\-?[\d.]+)([a-z%]*)/i); if (!match) { return dojo.html.getUnitValue.bad; } return {value:Number(match[1]), units:match[2].toLowerCase()}; }; dojo.html.getUnitValue.bad = {value:NaN, units:""}; if (dojo.render.html.ie) { dojo.html.toPixelValue = function (element, styleValue) { if (!styleValue) { return 0; } if (styleValue.slice(-2) == "px") { return parseFloat(styleValue); } var pixelValue = 0; with (element) { var sLeft = style.left; var rsLeft = runtimeStyle.left; runtimeStyle.left = currentStyle.left; try { style.left = styleValue || 0; pixelValue = style.pixelLeft; style.left = sLeft; runtimeStyle.left = rsLeft; } catch (e) { } } return pixelValue; }; } else { dojo.html.toPixelValue = function (element, styleValue) { return (styleValue && (styleValue.slice(-2) == "px") ? parseFloat(styleValue) : 0); }; } dojo.html.getPixelValue = function (node, styleProperty, autoIsZero) { return dojo.html.toPixelValue(node, dojo.html.getComputedStyle(node, styleProperty)); }; dojo.html.setPositivePixelValue = function (node, selector, value) { if (isNaN(value)) { return false; } node.style[selector] = Math.max(0, value) + "px"; return true; }; dojo.html.styleSheet = null; dojo.html.insertCssRule = function (selector, declaration, index) { if (!dojo.html.styleSheet) { if (document.createStyleSheet) { dojo.html.styleSheet = document.createStyleSheet(); } else { if (document.styleSheets[0]) { dojo.html.styleSheet = document.styleSheets[0]; } else { return null; } } } if (arguments.length < 3) { if (dojo.html.styleSheet.cssRules) { index = dojo.html.styleSheet.cssRules.length; } else { if (dojo.html.styleSheet.rules) { index = dojo.html.styleSheet.rules.length; } else { return null; } } } if (dojo.html.styleSheet.insertRule) { var rule = selector + " { " + declaration + " }"; return dojo.html.styleSheet.insertRule(rule, index); } else { if (dojo.html.styleSheet.addRule) { return dojo.html.styleSheet.addRule(selector, declaration, index); } else { return null; } } }; dojo.html.removeCssRule = function (index) { if (!dojo.html.styleSheet) { dojo.debug("no stylesheet defined for removing rules"); return false; } if (dojo.render.html.ie) { if (!index) { index = dojo.html.styleSheet.rules.length; dojo.html.styleSheet.removeRule(index); } } else { if (document.styleSheets[0]) { if (!index) { index = dojo.html.styleSheet.cssRules.length; } dojo.html.styleSheet.deleteRule(index); } } return true; }; dojo.html._insertedCssFiles = []; dojo.html.insertCssFile = function (URI, doc, checkDuplicates, fail_ok) { if (!URI) { return; } if (!doc) { doc = document; } var cssStr = dojo.hostenv.getText(URI, false, fail_ok); if (cssStr === null) { return; } cssStr = dojo.html.fixPathsInCssText(cssStr, URI); if (checkDuplicates) { var idx = -1, node, ent = dojo.html._insertedCssFiles; for (var i = 0; i < ent.length; i++) { if ((ent[i].doc == doc) && (ent[i].cssText == cssStr)) { idx = i; node = ent[i].nodeRef; break; } } if (node) { var styles = doc.getElementsByTagName("style"); for (var i = 0; i < styles.length; i++) { if (styles[i] == node) { return; } } dojo.html._insertedCssFiles.shift(idx, 1); } } var style = dojo.html.insertCssText(cssStr, doc); dojo.html._insertedCssFiles.push({"doc":doc, "cssText":cssStr, "nodeRef":style}); if (style && djConfig.isDebug) { style.setAttribute("dbgHref", URI); } return style; }; dojo.html.insertCssText = function (cssStr, doc, URI) { if (!cssStr) { return; } if (!doc) { doc = document; } if (URI) { cssStr = dojo.html.fixPathsInCssText(cssStr, URI); } var style = doc.createElement("style"); style.setAttribute("type", "text/css"); var head = doc.getElementsByTagName("head")[0]; if (!head) { dojo.debug("No head tag in document, aborting styles"); return; } else { head.appendChild(style); } if (style.styleSheet) { var setFunc = function () { try { style.styleSheet.cssText = cssStr; } catch (e) { dojo.debug(e); } }; if (style.styleSheet.disabled) { setTimeout(setFunc, 10); } else { setFunc(); } } else { var cssText = doc.createTextNode(cssStr); style.appendChild(cssText); } return style; }; dojo.html.fixPathsInCssText = function (cssStr, URI) { if (!cssStr || !URI) { return; } var match, str = "", url = "", urlChrs = "[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+"; var regex = new RegExp("url\\(\\s*(" + urlChrs + ")\\s*\\)"); var regexProtocol = /(file|https?|ftps?):\/\//; regexTrim = new RegExp("^[\\s]*(['\"]?)(" + urlChrs + ")\\1[\\s]*?$"); if (dojo.render.html.ie55 || dojo.render.html.ie60) { var regexIe = new RegExp("AlphaImageLoader\\((.*)src=['\"](" + urlChrs + ")['\"]"); while (match = regexIe.exec(cssStr)) { url = match[2].replace(regexTrim, "$2"); if (!regexProtocol.exec(url)) { url = (new dojo.uri.Uri(URI, url).toString()); } str += cssStr.substring(0, match.index) + "AlphaImageLoader(" + match[1] + "src='" + url + "'"; cssStr = cssStr.substr(match.index + match[0].length); } cssStr = str + cssStr; str = ""; } while (match = regex.exec(cssStr)) { url = match[1].replace(regexTrim, "$2"); if (!regexProtocol.exec(url)) { url = (new dojo.uri.Uri(URI, url).toString()); } str += cssStr.substring(0, match.index) + "url(" + url + ")"; cssStr = cssStr.substr(match.index + match[0].length); } return str + cssStr; }; dojo.html.setActiveStyleSheet = function (title) { var i = 0, a, els = dojo.doc().getElementsByTagName("link"); while (a = els[i++]) { if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if (a.getAttribute("title") == title) { a.disabled = false; } } } }; dojo.html.getActiveStyleSheet = function () { var i = 0, a, els = dojo.doc().getElementsByTagName("link"); while (a = els[i++]) { if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) { return a.getAttribute("title"); } } return null; }; dojo.html.getPreferredStyleSheet = function () { var i = 0, a, els = dojo.doc().getElementsByTagName("link"); while (a = els[i++]) { if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title")) { return a.getAttribute("title"); } } return null; }; dojo.html.applyBrowserClass = function (node) { var drh = dojo.render.html; var classes = {dj_ie:drh.ie, dj_ie55:drh.ie55, dj_ie6:drh.ie60, dj_ie7:drh.ie70, dj_iequirks:drh.ie && drh.quirks, dj_opera:drh.opera, dj_opera8:drh.opera && (Math.floor(dojo.render.version) == 8), dj_opera9:drh.opera && (Math.floor(dojo.render.version) == 9), dj_khtml:drh.khtml, dj_safari:drh.safari, dj_gecko:drh.mozilla}; for (var p in classes) { if (classes[p]) { dojo.html.addClass(node, p); } } }; Other Struts examples (source code examples)Here is a short list of links related to this Struts style.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.