Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/display.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/display.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/html/display.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/html/display.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,196 @@ +/* + 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.display"); +dojo.require("dojo.html.style"); + +dojo.html._toggle = function(node, tester, setter){ + node = dojo.byId(node); + setter(node, !tester(node)); + return tester(node); +} + +dojo.html.show = function(/* HTMLElement */node){ + // summary + // Show the passed element by reverting display property set by dojo.html.hide + node = dojo.byId(node); + if(dojo.html.getStyleProperty(node, 'display')=='none'){ + dojo.html.setStyle(node, 'display', (node.dojoDisplayCache||'')); + node.dojoDisplayCache = undefined; // cannot use delete on a node in IE6 + } +} + +dojo.html.hide = function(/* HTMLElement */node){ + // summary + // Hide the passed element by setting display:none + node = dojo.byId(node); + if(typeof node["dojoDisplayCache"] == "undefined"){ // it could == '', so we cannot say !node.dojoDisplayCount + var d = dojo.html.getStyleProperty(node, 'display') + if(d!='none'){ + node.dojoDisplayCache = d; + } + } + dojo.html.setStyle(node, 'display', 'none'); +} + +dojo.html.setShowing = function(/* HTMLElement */node, /* boolean? */showing){ + // summary + // Calls show() if showing is true, hide() otherwise + dojo.html[(showing ? 'show' : 'hide')](node); +} + +dojo.html.isShowing = function(/* HTMLElement */node){ + // summary + // Returns whether the element is displayed or not. + // FIXME: returns true if node is bad, isHidden would be easier to make correct + return (dojo.html.getStyleProperty(node, 'display') != 'none'); // boolean +} + +dojo.html.toggleShowing = function(/* HTMLElement */node){ + // summary + // Call setShowing() on node with the complement of isShowing(), then return the new value of isShowing() + return dojo.html._toggle(node, dojo.html.isShowing, dojo.html.setShowing); // boolean +} + +// Simple mapping of tag names to display values +// FIXME: simplistic +dojo.html.displayMap = { tr: '', td: '', th: '', img: 'inline', span: 'inline', input: 'inline', button: 'inline' }; + +dojo.html.suggestDisplayByTagName = function(/* HTMLElement */node){ + // summary + // Suggest a value for the display property that will show 'node' based on it's tag + node = dojo.byId(node); + if(node && node.tagName){ + var tag = node.tagName.toLowerCase(); + return (tag in dojo.html.displayMap ? dojo.html.displayMap[tag] : 'block'); // string + } +} + +dojo.html.setDisplay = function(/* HTMLElement */node, /* string */display){ + // summary + // Sets the value of style.display to value of 'display' parameter if it is a string. + // Otherwise, if 'display' is false, set style.display to 'none'. + // Finally, set 'display' to a suggested display value based on the node's tag + dojo.html.setStyle(node, 'display', ((display instanceof String || typeof display == "string") ? display : (display ? dojo.html.suggestDisplayByTagName(node) : 'none'))); +} + +dojo.html.isDisplayed = function(/* HTMLElement */node){ + // summary + // Is true if the the computed display style for node is not 'none' + // FIXME: returns true if node is bad, isNotDisplayed would be easier to make correct + return (dojo.html.getComputedStyle(node, 'display') != 'none'); // boolean +} + +dojo.html.toggleDisplay = function(/* HTMLElement */node){ + // summary + // Call setDisplay() on node with the complement of isDisplayed(), then + // return the new value of isDisplayed() + return dojo.html._toggle(node, dojo.html.isDisplayed, dojo.html.setDisplay); // boolean +} + +dojo.html.setVisibility = function(/* HTMLElement */node, /* string */visibility){ + // summary + // Sets the value of style.visibility to value of 'visibility' parameter if it is a string. + // Otherwise, if 'visibility' is false, set style.visibility to 'hidden'. Finally, set style.visibility to 'visible'. + dojo.html.setStyle(node, 'visibility', ((visibility instanceof String || typeof visibility == "string") ? visibility : (visibility ? 'visible' : 'hidden'))); +} + +dojo.html.isVisible = function(/* HTMLElement */node){ + // summary + // Returns true if the the computed visibility style for node is not 'hidden' + // FIXME: returns true if node is bad, isInvisible would be easier to make correct + return (dojo.html.getComputedStyle(node, 'visibility') != 'hidden'); // boolean +} + +dojo.html.toggleVisibility = function(node){ + // summary + // Call setVisibility() on node with the complement of isVisible(), then return the new value of isVisible() + return dojo.html._toggle(node, dojo.html.isVisible, dojo.html.setVisibility); // boolean +} + +dojo.html.setOpacity = function(/* HTMLElement */node, /* float */opacity, /* boolean? */dontFixOpacity){ + // summary + // Sets the opacity of node in a cross-browser way. + // float between 0.0 (transparent) and 1.0 (opaque) + node = dojo.byId(node); + var h = dojo.render.html; + if(!dontFixOpacity){ + if( opacity >= 1.0){ + if(h.ie){ + dojo.html.clearOpacity(node); + return; + }else{ + opacity = 0.999999; + } + }else if( opacity < 0.0){ opacity = 0; } + } + if(h.ie){ + if(node.nodeName.toLowerCase() == "tr"){ + // FIXME: is this too naive? will we get more than we want? + var tds = node.getElementsByTagName("td"); + for(var x=0; x<tds.length; x++){ + tds[x].style.filter = "Alpha(Opacity="+opacity*100+")"; + } + } + node.style.filter = "Alpha(Opacity="+opacity*100+")"; + }else if(h.moz){ + node.style.opacity = opacity; // ffox 1.0 directly supports "opacity" + node.style.MozOpacity = opacity; + }else if(h.safari){ + node.style.opacity = opacity; // 1.3 directly supports "opacity" + node.style.KhtmlOpacity = opacity; + }else{ + node.style.opacity = opacity; + } +} + +dojo.html.clearOpacity = function(/* HTMLElement */node){ + // summary + // Clears any opacity setting on the passed element. + node = dojo.byId(node); + var ns = node.style; + var h = dojo.render.html; + if(h.ie){ + try { + if( node.filters && node.filters.alpha ){ + ns.filter = ""; // FIXME: may get rid of other filter effects + } + } catch(e) { + /* + * IE7 gives error if node.filters not set; + * don't know why or how to workaround (other than this) + */ + } + }else if(h.moz){ + ns.opacity = 1; + ns.MozOpacity = 1; + }else if(h.safari){ + ns.opacity = 1; + ns.KhtmlOpacity = 1; + }else{ + ns.opacity = 1; + } +} + +dojo.html.getOpacity = function(/* HTMLElement */node){ + // summary + // Returns the opacity of the passed element + node = dojo.byId(node); + var h = dojo.render.html; + if(h.ie){ + var opac = (node.filters && node.filters.alpha && + typeof node.filters.alpha.opacity == "number" + ? node.filters.alpha.opacity : 100) / 100; + }else{ + var opac = node.style.opacity || node.style.MozOpacity || + node.style.KhtmlOpacity || 1; + } + return opac >= 0.999999 ? 1.0 : Number(opac); // float +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/display.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/display.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/display.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/iframe.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/iframe.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/html/iframe.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/html/iframe.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,128 @@ +/* + 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.iframe"); +dojo.require("dojo.html.util"); + +// thanks burstlib! +dojo.html.iframeContentWindow = function(/* HTMLIFrameElement */iframe_el) { + // summary + // returns the window reference of the passed iframe + var win = dojo.html.getDocumentWindow(dojo.html.iframeContentDocument(iframe_el)) || + // Moz. TODO: is this available when defaultView isn't? + dojo.html.iframeContentDocument(iframe_el).__parent__ || + (iframe_el.name && document.frames[iframe_el.name]) || null; + return win; // Window +} + +dojo.html.iframeContentDocument = function(/* HTMLIFrameElement */iframe_el){ + // summary + // returns a reference to the document object inside iframe_el + var doc = iframe_el.contentDocument // W3 + || ((iframe_el.contentWindow)&&(iframe_el.contentWindow.document)) // IE + || ((iframe_el.name)&&(document.frames[iframe_el.name])&&(document.frames[iframe_el.name].document)) + || null; + return doc; // HTMLDocument +} + +dojo.html.BackgroundIframe = function(/* HTMLElement */node) { + // summary + // For IE z-index schenanigans + // Two possible uses: + // 1. new dojo.html.BackgroundIframe(node) + // Makes a background iframe as a child of node, that fills area (and position) of node + // 2. new dojo.html.BackgroundIframe() + // Attaches frame to dojo.body(). User must call size() to set size. + if(dojo.render.html.ie55 || dojo.render.html.ie60) { + var html="<iframe src='javascript:false'" + + " style='position: absolute; left: 0px; top: 0px; width: 100%; height: 100%;" + + "z-index: -1; filter:Alpha(Opacity=\"0\");' " + + ">"; + this.iframe = dojo.doc().createElement(html); + this.iframe.tabIndex = -1; // Magic to prevent iframe from getting focus on tab keypress - as style didnt work. + if(node){ + node.appendChild(this.iframe); + this.domNode=node; + }else{ + dojo.body().appendChild(this.iframe); + this.iframe.style.display="none"; + } + } +} +dojo.lang.extend(dojo.html.BackgroundIframe, { + iframe: null, + onResized: function(){ + // summary + // Resize event handler. + // TODO: this function shouldn't be necessary but setting width=height=100% doesn't work! + if(this.iframe && this.domNode && this.domNode.parentNode){ // No parentElement if onResized() timeout event occurs on a removed domnode + var outer = dojo.html.getMarginBox(this.domNode); + if (outer.width == 0 || outer.height == 0 ){ + dojo.lang.setTimeout(this, this.onResized, 100); + return; + } + this.iframe.style.width = outer.width + "px"; + this.iframe.style.height = outer.height + "px"; + } + }, + + size: function(/* HTMLElement */node) { + // summary: + // Call this function if the iframe is connected to dojo.body() + // rather than the node being shadowed + + // (TODO: erase) + if(!this.iframe){ return; } + var coords = dojo.html.toCoordinateObject(node, true, dojo.html.boxSizing.BORDER_BOX); + with(this.iframe.style){ + width = coords.width + "px"; + height = coords.height + "px"; + left = coords.left + "px"; + top = coords.top + "px"; + } + }, + + setZIndex: function(/* HTMLElement */node){ + // summary + // Sets the z-index of the background iframe. + if(!this.iframe){ return; } + if(dojo.dom.isNode(node)){ + this.iframe.style.zIndex = dojo.html.getStyle(node, "z-index") - 1; + }else if(!isNaN(node)){ + this.iframe.style.zIndex = node; + } + }, + + show: function(){ + // summary: + // show the iframe + if(this.iframe){ + this.iframe.style.display = "block"; + } + }, + + hide: function(){ + // summary: + // hide the iframe + if(this.iframe){ + this.iframe.style.display = "none"; + } + }, + + remove: function(){ + // summary: + // remove the iframe + if(this.iframe){ + dojo.html.removeNode(this.iframe, true); + delete this.iframe; + this.iframe=null; + } + } +}); Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/iframe.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/iframe.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/iframe.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowB.png URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowB.png?view=auto&rev=509273 ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowB.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowBL.png URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowBL.png?view=auto&rev=509273 ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowBL.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowBR.png URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowBR.png?view=auto&rev=509273 ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowBR.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowL.png URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowL.png?view=auto&rev=509273 ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowL.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowR.png URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowR.png?view=auto&rev=509273 ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowR.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowT.png URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowT.png?view=auto&rev=509273 ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowT.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowTL.png URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowTL.png?view=auto&rev=509273 ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowTL.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowTR.png URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowTR.png?view=auto&rev=509273 ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/images/shadowTR.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/layout.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/layout.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/html/layout.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/html/layout.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,487 @@ +/* + 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.layout"); + +dojo.require("dojo.html.common"); +dojo.require("dojo.html.style"); +dojo.require("dojo.html.display"); + +dojo.html.sumAncestorProperties = function(/* HTMLElement */node, /* string */prop){ + // summary + // Returns the sum of the passed property on all ancestors of node. + node = dojo.byId(node); + if(!node){ return 0; } // FIXME: throw an error? + + var retVal = 0; + while(node){ + if(dojo.html.getComputedStyle(node, 'position') == 'fixed'){ + return 0; + } + var val = node[prop]; + if(val){ + retVal += val - 0; + if(node==dojo.body()){ break; }// opera and khtml #body & #html has the same values, we only need one value + } + node = node.parentNode; + } + return retVal; // integer +} + +dojo.html.setStyleAttributes = function(/* HTMLElement */node, /* string */attributes) { + // summary + // allows a dev to pass a string similar to what you'd pass in style="", and apply it to a node. + node = dojo.byId(node); + var splittedAttribs=attributes.replace(/(;)?\s*$/, "").split(";"); + for(var i=0; i<splittedAttribs.length; i++){ + var nameValue=splittedAttribs[i].split(":"); + var name=nameValue[0].replace(/\s*$/, "").replace(/^\s*/, "").toLowerCase(); + var value=nameValue[1].replace(/\s*$/, "").replace(/^\s*/, ""); + switch(name){ + case "opacity": + dojo.html.setOpacity(node, value); + break; + case "content-height": + dojo.html.setContentBox(node, {height: value}); + break; + case "content-width": + dojo.html.setContentBox(node, {width: value}); + break; + case "outer-height": + dojo.html.setMarginBox(node, {height: value}); + break; + case "outer-width": + dojo.html.setMarginBox(node, {width: value}); + break; + default: + node.style[dojo.html.toCamelCase(name)]=value; + } + } +} + +dojo.html.boxSizing = { + MARGIN_BOX: "margin-box", + BORDER_BOX: "border-box", + PADDING_BOX: "padding-box", + CONTENT_BOX: "content-box" +}; + +dojo.html.getAbsolutePosition = dojo.html.abs = function(/* HTMLElement */node, /* boolean? */includeScroll, /* string? */boxType){ + // summary + // Gets the absolute position of the passed element based on the document itself. + node = dojo.byId(node, node.ownerDocument); + var ret = { + x: 0, + y: 0 + }; + + var bs = dojo.html.boxSizing; + if(!boxType) { boxType = bs.CONTENT_BOX; } + var nativeBoxType = 2; //BORDER box + var targetBoxType; + switch(boxType){ + case bs.MARGIN_BOX: + targetBoxType = 3; + break; + case bs.BORDER_BOX: + targetBoxType = 2; + break; + case bs.PADDING_BOX: + default: + targetBoxType = 1; + break; + case bs.CONTENT_BOX: + targetBoxType = 0; + break; + } + + var h = dojo.render.html; + var db = document["body"]||document["documentElement"]; + + if(h.ie){ + with(node.getBoundingClientRect()){ + ret.x = left-2; + ret.y = top-2; + } + }else if(document.getBoxObjectFor){ + // mozilla + nativeBoxType = 1; //getBoxObjectFor return padding box coordinate + try{ + var bo = document.getBoxObjectFor(node); + ret.x = bo.x - dojo.html.sumAncestorProperties(node, "scrollLeft"); + ret.y = bo.y - dojo.html.sumAncestorProperties(node, "scrollTop"); + }catch(e){ + // squelch + } + }else{ + if(node["offsetParent"]){ + var endNode; + // in Safari, if the node is an absolutely positioned child of + // the body and the body has a margin the offset of the child + // and the body contain the body's margins, so we need to end + // at the body + if( (h.safari)&& + (node.style.getPropertyValue("position") == "absolute")&& + (node.parentNode == db)){ + endNode = db; + }else{ + endNode = db.parentNode; + } + + //TODO: set correct nativeBoxType for safari/konqueror + + if(node.parentNode != db){ + var nd = node; + if(dojo.render.html.opera){ nd = db; } + ret.x -= dojo.html.sumAncestorProperties(nd, "scrollLeft"); + ret.y -= dojo.html.sumAncestorProperties(nd, "scrollTop"); + } + var curnode = node; + do{ + var n = curnode["offsetLeft"]; + //FIXME: ugly hack to workaround the submenu in + //popupmenu2 does not shown up correctly in opera. + //Someone have a better workaround? + if(!h.opera || n>0){ + ret.x += isNaN(n) ? 0 : n; + } + var m = curnode["offsetTop"]; + ret.y += isNaN(m) ? 0 : m; + curnode = curnode.offsetParent; + }while((curnode != endNode)&&(curnode != null)); + }else if(node["x"]&&node["y"]){ + ret.x += isNaN(node.x) ? 0 : node.x; + ret.y += isNaN(node.y) ? 0 : node.y; + } + } + + // account for document scrolling! + if(includeScroll){ + var scroll = dojo.html.getScroll(); + ret.y += scroll.top; + ret.x += scroll.left; + } + + var extentFuncArray=[dojo.html.getPaddingExtent, dojo.html.getBorderExtent, dojo.html.getMarginExtent]; + if(nativeBoxType > targetBoxType){ + for(var i=targetBoxType;i<nativeBoxType;++i){ + ret.y += extentFuncArray[i](node, 'top'); + ret.x += extentFuncArray[i](node, 'left'); + } + }else if(nativeBoxType < targetBoxType){ + for(var i=targetBoxType;i>nativeBoxType;--i){ + ret.y -= extentFuncArray[i-1](node, 'top'); + ret.x -= extentFuncArray[i-1](node, 'left'); + } + } + ret.top = ret.y; + ret.left = ret.x; + return ret; // object +} + +dojo.html.isPositionAbsolute = function(/* HTMLElement */node){ + // summary + // Returns true if the element is absolutely positioned. + return (dojo.html.getComputedStyle(node, 'position') == 'absolute'); // boolean +} + +dojo.html._sumPixelValues = function(/* HTMLElement */node, selectors, autoIsZero){ + var total = 0; + for(var x=0; x<selectors.length; x++){ + total += dojo.html.getPixelValue(node, selectors[x], autoIsZero); + } + return total; +} + +dojo.html.getMargin = function(/* HTMLElement */node){ + // summary + // Returns the width and height of the passed node's margin + return { + width: dojo.html._sumPixelValues(node, ["margin-left", "margin-right"], (dojo.html.getComputedStyle(node, 'position') == 'absolute')), + height: dojo.html._sumPixelValues(node, ["margin-top", "margin-bottom"], (dojo.html.getComputedStyle(node, 'position') == 'absolute')) + }; // object +} + +dojo.html.getBorder = function(/* HTMLElement */node){ + // summary + // Returns the width and height of the passed node's border + return { + width: dojo.html.getBorderExtent(node, 'left') + dojo.html.getBorderExtent(node, 'right'), + height: dojo.html.getBorderExtent(node, 'top') + dojo.html.getBorderExtent(node, 'bottom') + }; // object +} + +dojo.html.getBorderExtent = function(/* HTMLElement */node, /* string */side){ + // summary + // returns the width of the requested border + return (dojo.html.getStyle(node, 'border-' + side + '-style') == 'none' ? 0 : dojo.html.getPixelValue(node, 'border-' + side + '-width')); // integer +} + +dojo.html.getMarginExtent = function(/* HTMLElement */node, /* string */side){ + // summary + // returns the width of the requested margin + return dojo.html._sumPixelValues(node, ["margin-" + side], dojo.html.isPositionAbsolute(node)); // integer +} + +dojo.html.getPaddingExtent = function(/* HTMLElement */node, /* string */side){ + // summary + // Returns the width of the requested padding + return dojo.html._sumPixelValues(node, ["padding-" + side], true); // integer +} + +dojo.html.getPadding = function(/* HTMLElement */node){ + // summary + // Returns the width and height of the passed node's padding + return { + width: dojo.html._sumPixelValues(node, ["padding-left", "padding-right"], true), + height: dojo.html._sumPixelValues(node, ["padding-top", "padding-bottom"], true) + }; // object +} + +dojo.html.getPadBorder = function(/* HTMLElement */node){ + // summary + // Returns the width and height of the passed node's padding and border + var pad = dojo.html.getPadding(node); + var border = dojo.html.getBorder(node); + return { width: pad.width + border.width, height: pad.height + border.height }; // object +} + +dojo.html.getBoxSizing = function(/* HTMLElement */node){ + // summary + // Returns which box model the passed element is working with + var h = dojo.render.html; + var bs = dojo.html.boxSizing; + if(((h.ie)||(h.opera)) && node.nodeName!="IMG"){ + var cm = document["compatMode"]; + if((cm == "BackCompat")||(cm == "QuirksMode")){ + return bs.BORDER_BOX; // string + }else{ + return bs.CONTENT_BOX; // string + } + }else{ + if(arguments.length == 0){ node = document.documentElement; } + var sizing = dojo.html.getStyle(node, "-moz-box-sizing"); + if(!sizing){ sizing = dojo.html.getStyle(node, "box-sizing"); } + return (sizing ? sizing : bs.CONTENT_BOX); // string + } +} + +dojo.html.isBorderBox = function(/* HTMLElement */node){ + // summary + // returns whether the passed element is using border box sizing or not. + return (dojo.html.getBoxSizing(node) == dojo.html.boxSizing.BORDER_BOX); // boolean +} + +dojo.html.getBorderBox = function(/* HTMLElement */node){ + // summary + // Returns the dimensions of the passed element based on border-box sizing. + node = dojo.byId(node); + return { width: node.offsetWidth, height: node.offsetHeight }; // object +} + +dojo.html.getPaddingBox = function(/* HTMLElement */node){ + // summary + // Returns the dimensions of the padding box (see http://www.w3.org/TR/CSS21/box.html) + var box = dojo.html.getBorderBox(node); + var border = dojo.html.getBorder(node); + return { + width: box.width - border.width, + height:box.height - border.height + }; // object +} + +dojo.html.getContentBox = function(/* HTMLElement */node){ + // summary + // Returns the dimensions of the content box (see http://www.w3.org/TR/CSS21/box.html) + node = dojo.byId(node); + var padborder = dojo.html.getPadBorder(node); + return { + width: node.offsetWidth - padborder.width, + height: node.offsetHeight - padborder.height + }; // object +} + +dojo.html.setContentBox = function(/* HTMLElement */node, /* object */args){ + // summary + // Sets the dimensions of the passed node according to content sizing. + node = dojo.byId(node); + var width = 0; var height = 0; + var isbb = dojo.html.isBorderBox(node); + var padborder = (isbb ? dojo.html.getPadBorder(node) : { width: 0, height: 0}); + var ret = {}; + if(typeof args.width != "undefined"){ + width = args.width + padborder.width; + ret.width = dojo.html.setPositivePixelValue(node, "width", width); + } + if(typeof args.height != "undefined"){ + height = args.height + padborder.height; + ret.height = dojo.html.setPositivePixelValue(node, "height", height); + } + return ret; // object +} + +dojo.html.getMarginBox = function(/* HTMLElement */node){ + // summary + // returns the dimensions of the passed node including any margins. + var borderbox = dojo.html.getBorderBox(node); + var margin = dojo.html.getMargin(node); + return { width: borderbox.width + margin.width, height: borderbox.height + margin.height }; // object +} + +dojo.html.setMarginBox = function(/* HTMLElement */node, /* object */args){ + // summary + // Sets the dimensions of the passed node using margin box calcs. + node = dojo.byId(node); + var width = 0; var height = 0; + var isbb = dojo.html.isBorderBox(node); + var padborder = (!isbb ? dojo.html.getPadBorder(node) : { width: 0, height: 0 }); + var margin = dojo.html.getMargin(node); + var ret = {}; + if(typeof args.width != "undefined"){ + width = args.width - padborder.width; + width -= margin.width; + ret.width = dojo.html.setPositivePixelValue(node, "width", width); + } + if(typeof args.height != "undefined"){ + height = args.height - padborder.height; + height -= margin.height; + ret.height = dojo.html.setPositivePixelValue(node, "height", height); + } + return ret; // object +} + +dojo.html.getElementBox = function(/* HTMLElement */node, /* string */type){ + // summary + // return dimesions of a node based on the passed box model type. + var bs = dojo.html.boxSizing; + switch(type){ + case bs.MARGIN_BOX: + return dojo.html.getMarginBox(node); // object + case bs.BORDER_BOX: + return dojo.html.getBorderBox(node); // object + case bs.PADDING_BOX: + return dojo.html.getPaddingBox(node); // object + case bs.CONTENT_BOX: + default: + return dojo.html.getContentBox(node); // object + } +} +// in: coordinate array [x,y,w,h] or dom node +// return: coordinate object +dojo.html.toCoordinateObject = dojo.html.toCoordinateArray = function(/* array */coords, /* boolean? */includeScroll, /* string? */boxtype) { + // summary + // Converts an array of coordinates into an object of named arguments. + if(coords instanceof Array || typeof coords == "array"){ + dojo.deprecated("dojo.html.toCoordinateArray", "use dojo.html.toCoordinateObject({left: , top: , width: , height: }) instead", "0.5"); + // coords is already an array (of format [x,y,w,h]), just return it + while ( coords.length < 4 ) { coords.push(0); } + while ( coords.length > 4 ) { coords.pop(); } + var ret = { + left: coords[0], + top: coords[1], + width: coords[2], + height: coords[3] + }; + }else if(!coords.nodeType && !(coords instanceof String || typeof coords == "string") && + ('width' in coords || 'height' in coords || 'left' in coords || + 'x' in coords || 'top' in coords || 'y' in coords)){ + // coords is a coordinate object or at least part of one + var ret = { + left: coords.left||coords.x||0, + top: coords.top||coords.y||0, + width: coords.width||0, + height: coords.height||0 + }; + }else{ + // coords is an dom object (or dom object id); return it's coordinates + var node = dojo.byId(coords); + var pos = dojo.html.abs(node, includeScroll, boxtype); + var marginbox = dojo.html.getMarginBox(node); + var ret = { + left: pos.left, + top: pos.top, + width: marginbox.width, + height: marginbox.height + }; + } + ret.x = ret.left; + ret.y = ret.top; + return ret; // object +} + +dojo.html.setMarginBoxWidth = dojo.html.setOuterWidth = function(node, width){ + return dojo.html._callDeprecated("setMarginBoxWidth", "setMarginBox", arguments, "width"); +} +dojo.html.setMarginBoxHeight = dojo.html.setOuterHeight = function(){ + return dojo.html._callDeprecated("setMarginBoxHeight", "setMarginBox", arguments, "height"); +} +dojo.html.getMarginBoxWidth = dojo.html.getOuterWidth = function(){ + return dojo.html._callDeprecated("getMarginBoxWidth", "getMarginBox", arguments, null, "width"); +} +dojo.html.getMarginBoxHeight = dojo.html.getOuterHeight = function(){ + return dojo.html._callDeprecated("getMarginBoxHeight", "getMarginBox", arguments, null, "height"); +} +dojo.html.getTotalOffset = function(node, type, includeScroll){ + return dojo.html._callDeprecated("getTotalOffset", "getAbsolutePosition", arguments, null, type); +} +dojo.html.getAbsoluteX = function(node, includeScroll){ + return dojo.html._callDeprecated("getAbsoluteX", "getAbsolutePosition", arguments, null, "x"); +} +dojo.html.getAbsoluteY = function(node, includeScroll){ + return dojo.html._callDeprecated("getAbsoluteY", "getAbsolutePosition", arguments, null, "y"); +} +dojo.html.totalOffsetLeft = function(node, includeScroll){ + return dojo.html._callDeprecated("totalOffsetLeft", "getAbsolutePosition", arguments, null, "left"); +} +dojo.html.totalOffsetTop = function(node, includeScroll){ + return dojo.html._callDeprecated("totalOffsetTop", "getAbsolutePosition", arguments, null, "top"); +} +dojo.html.getMarginWidth = function(node){ + return dojo.html._callDeprecated("getMarginWidth", "getMargin", arguments, null, "width"); +} +dojo.html.getMarginHeight = function(node){ + return dojo.html._callDeprecated("getMarginHeight", "getMargin", arguments, null, "height"); +} +dojo.html.getBorderWidth = function(node){ + return dojo.html._callDeprecated("getBorderWidth", "getBorder", arguments, null, "width"); +} +dojo.html.getBorderHeight = function(node){ + return dojo.html._callDeprecated("getBorderHeight", "getBorder", arguments, null, "height"); +} +dojo.html.getPaddingWidth = function(node){ + return dojo.html._callDeprecated("getPaddingWidth", "getPadding", arguments, null, "width"); +} +dojo.html.getPaddingHeight = function(node){ + return dojo.html._callDeprecated("getPaddingHeight", "getPadding", arguments, null, "height"); +} +dojo.html.getPadBorderWidth = function(node){ + return dojo.html._callDeprecated("getPadBorderWidth", "getPadBorder", arguments, null, "width"); +} +dojo.html.getPadBorderHeight = function(node){ + return dojo.html._callDeprecated("getPadBorderHeight", "getPadBorder", arguments, null, "height"); +} +dojo.html.getBorderBoxWidth = dojo.html.getInnerWidth = function(){ + return dojo.html._callDeprecated("getBorderBoxWidth", "getBorderBox", arguments, null, "width"); +} +dojo.html.getBorderBoxHeight = dojo.html.getInnerHeight = function(){ + return dojo.html._callDeprecated("getBorderBoxHeight", "getBorderBox", arguments, null, "height"); +} +dojo.html.getContentBoxWidth = dojo.html.getContentWidth = function(){ + return dojo.html._callDeprecated("getContentBoxWidth", "getContentBox", arguments, null, "width"); +} +dojo.html.getContentBoxHeight = dojo.html.getContentHeight = function(){ + return dojo.html._callDeprecated("getContentBoxHeight", "getContentBox", arguments, null, "height"); +} +dojo.html.setContentBoxWidth = dojo.html.setContentWidth = function(node, width){ + return dojo.html._callDeprecated("setContentBoxWidth", "setContentBox", arguments, "width"); +} +dojo.html.setContentBoxHeight = dojo.html.setContentHeight = function(node, height){ + return dojo.html._callDeprecated("setContentBoxHeight", "setContentBox", arguments, "height"); +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/layout.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/layout.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/layout.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/metrics.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/metrics.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/html/metrics.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/html/metrics.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,266 @@ +/* + 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.metrics"); +dojo.require("dojo.html.layout"); + +/* dojo.html.metrics + * Methods to help determine font metrics, including things like + * how much of a string will fit inside a certain width, what size + * something might be if you were to place it in a certain node, etc. + * + * Based partially on a submitted patch by Morris Johns, and work + * done with 13th Parallel and f( m ) (the 13th columns and the + * unreleased f( m ) layout manager. + */ + +// derived from Morris John's scrollbar measurer. +dojo.html.getScrollbar=function(){ + // summary + // returns the width of a scrollbar. + + // set up the test nodes. + var scroll = document.createElement("div"); + scroll.style.width="100px"; + scroll.style.height="100px"; + scroll.style.overflow="scroll"; + scroll.style.position="absolute"; + scroll.style.top="-300px"; + scroll.style.left="0px" + + var test = document.createElement("div"); + test.style.width="400px"; + test.style.height="400px"; + scroll.appendChild(test); + dojo.body().appendChild(scroll); + + var width=scroll.offsetWidth - scroll.clientWidth; + + dojo.body().removeChild(scroll); + scroll.removeChild(test); + scroll=test=null; + + // we return an object because we may add additional info in the future. + return { width: width }; // object +}; + +// derived from Morris John's emResized measurer +dojo.html.getFontMeasurements = function(){ + // summary + // Returns an object that has pixel equivilents of standard font size values. + var heights = { + '1em':0, '1ex':0, '100%':0, '12pt':0, '16px':0, 'xx-small':0, 'x-small':0, + 'small':0, 'medium':0, 'large':0, 'x-large':0, 'xx-large':0 + }; + + if(dojo.render.html.ie){ + // we do a font-size fix if and only if one isn't applied already. + // NOTE: If someone set the fontSize on the HTML Element, this will kill it. + document.documentElement.style.fontSize="100%"; + } + + // set up the measuring node. + var div=document.createElement("div"); + div.style.position="absolute"; + div.style.left="-100px"; + div.style.top="0"; + div.style.width="30px"; + div.style.height="1000em"; + div.style.border="0"; + div.style.margin="0"; + div.style.padding="0"; + div.style.outline="0"; + div.style.lineHeight="1"; + div.style.overflow="hidden"; + dojo.body().appendChild(div); + + // do the measurements. + for(var p in heights){ + div.style.fontSize = p; + heights[p] = Math.round(div.offsetHeight * 12/16) * 16/12 / 1000; + } + + dojo.body().removeChild(div); + div = null; + return heights; // object +}; + +dojo.html._fontMeasurements = null; + +dojo.html.getCachedFontMeasurements = function(recalculate){ + if(recalculate || !dojo.html._fontMeasurements){ + dojo.html._fontMeasurements = dojo.html.getFontMeasurements(); + } + return dojo.html._fontMeasurements; +}; + +dojo.html.measureFragment = function(/* HTMLElement */node, /* string */html, /* string? */boxType){ + // summary + // get the dimensions of passed node if it were populated with passed html. + var clone = node.cloneNode(true); + clone.innerHTML = html; + node.parentNode.appendChild(clone); + var ret = dojo.html.getElementBox(clone, boxType); + node.parentNode.removeChild(clone); + clone=null; + return ret; // object +}; + +// the following are derived from the 13th Parallel Column script, as +// reinterpreted by trt. http://www.13thparallel.org/archive/column-script +// Original by Dan Pupius and Michael van Ouwerkerk. +dojo.html.getFittedFragment = function(/* HTMLElement */node, /* string */html){ + // summary + // Given html, return the fragment that will fit on one line of passed node. + function cl(node){ + var element = document.createElement(node.tagName); + element.id = node.id + "-clone"; + element.className = node.className; + for (var j = 0; j < node.attributes.length; j++) { + if (node.attributes[j].specified) { + if (node.attributes[j].nodeName.toLowerCase() != "style" + && node.attributes[j].nodeName.toLowerCase() != "edited" + && node.attributes[j].nodeName.toLowerCase() != "contenteditable" + && node.attributes[j].nodeName.toLowerCase() != "id" + && node.attributes[j].nodeName.toLowerCase() != "class" + ){ + element.setAttribute(node.attributes[j].nodeName.toLowerCase(), node.attributes[j].nodeValue); + } + } + } + return element; + } + var height = dojo.html.getFontMeasurements()["16px"]; + var n=cl(node); + n.style.width=dojo.html.getBorderBox(node).width+"px"; + n.style.height=(height+4)+"px"; + node.parentNode.appendChild(n); + var rem = dojo.html.fitToElement(n, html); + var ret = n.innerHTML; + n.parentNode.removeChild(n); + return ret; +}; + +dojo.html.fitToElement = function(/* HTMLElement */node, /* string */html){ + // summary + // will fit as much html as possible into node, and return the unused + // portion, with tag corrections. + function cl(node){ + var element = document.createElement(node.tagName); + element.id = node.id + "-clone"; + element.className = node.className; + for (var j = 0; j < node.attributes.length; j++) { + if (node.attributes[j].specified) { + if (node.attributes[j].nodeName.toLowerCase() != "style" + && node.attributes[j].nodeName.toLowerCase() != "edited" + && node.attributes[j].nodeName.toLowerCase() != "contenteditable" + && node.attributes[j].nodeName.toLowerCase() != "id" + && node.attributes[j].nodeName.toLowerCase() != "class" + ){ + element.setAttribute(node.attributes[j].nodeName.toLowerCase(), node.attributes[j].nodeValue); + } + } + } + return element; + } + + var clone = cl(node); + node.parentNode.appendChild(clone); + var t=dojo.html.getBorderBox(node); + clone.style.width = t.width+"px"; + + var singletons = ["br","img", "hr", "input", "!--"]; + var chop = ["<BR>","<br>","<br/>","<br />","<p></p>","<P></P>"]; + var openTags = []; + + var str = html; + var i = 0; + var limit = str.length; + var add = 0; + var doLoop = true; + clone.innerHTML = str; + while (doLoop) { + add = Math.round((limit - i) / 2); + if (add <= 1) doLoop = false; + i += add; + clone.innerHTML = str.substr(0, i); + if (clone.offsetHeight > t.height) { + limit = i; + i -= add; + } + } + if (str.substr(0, i) != str) { + var lastSpace = str.substr(0, i).lastIndexOf(" "); + var lastNewLine = str.substr(0, i).lastIndexOf("\n"); + var lastGreater = str.substr(0, i).lastIndexOf(">"); + var lastLess = str.substr(0, i).lastIndexOf("<"); + if (lastLess <= lastGreater && lastNewLine == i - 1) i = i; + else if (lastSpace != -1 && lastSpace > lastGreater && lastGreater > lastLess) i = lastSpace + 1; + else if (lastLess > lastGreater) i = lastLess; + else if (lastGreater != -1) i = lastGreater + 1; + } + + str = str.substr(0, i); + var ret = html.substr(str.length); // get the rest of the passed text. + + var doPush = true; + var tags = str.split("<"); + tags.shift(); + for (var j = 0; j < tags.length; j++) { + tags[j] = tags[j].split(">")[0]; + if (tags[j].charAt(tags[j].length - 1) == "/"){ continue; } + if (tags[j].charAt(0) != "/") { + for (var k = 0; k < singletons.length; k++) { + if (tags[j].split(" ")[0].toLowerCase() == singletons[k]){ + doPush = false; + } + } + if (doPush){ + openTags.push(tags[j]); + } + doPush = true; + } else { + openTags.pop(); + } + } + + // close any open tags and prepend them to ret as well. + for(var j=0; j<chop.length; j++){ + if(ret.charAt(0) == "\n"){ ret = ret.substr(1); } + while(ret.indexOf(chop[j]) == 0){ + ret = ret.substr(chop[j].length); + } + } + + for(var j=openTags.length-1; j>=0; j--){ + if(str.lastIndexOf(openTags[j]) == (str.length-openTags[j].length-1)){ + str = str.substring(0, str.lastIndexOf(openTags[j])); + } else { + str += "</"+openTags[j]+">"; + } + if(ret.length > 0){ + ret = "<"+openTags[j]+">"+ret; + } + } + + for(var j=0; j<chop.length; j++){ + if(ret.charAt(0) == "\n"){ ret = ret.substr(1); } + while(ret.indexOf(chop[j]) == 0){ + ret = ret.substr(chop[j].length); + } + } + // push it into the node and pull the temp one. + node.innerHTML = str; + clone.parentNode.removeChild(clone); + clone = null; + + // return the remainder. + return ret; // string +}; Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/metrics.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/metrics.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/selection.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/selection.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/html/selection.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/html/selection.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,376 @@ +/* + 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.require("dojo.html.common"); +dojo.provide("dojo.html.selection"); + +dojo.require("dojo.dom"); +dojo.require("dojo.lang.common"); + +/** + * type of selection +**/ +dojo.html.selectionType = { + NONE : 0, //selection is empty + TEXT : 1, //selection contains text (may also contains CONTROL objects) + CONTROL : 2 //only one element is selected (such as img, table etc) +}; + +dojo.html.clearSelection = function(){ + // summary: deselect the current selection to make it empty + var _window = dojo.global(); + var _document = dojo.doc(); + try{ + if(_window["getSelection"]){ + if(dojo.render.html.safari){ + // pulled from WebCore/ecma/kjs_window.cpp, line 2536 + _window.getSelection().collapse(); + }else{ + _window.getSelection().removeAllRanges(); + } + }else if(_document.selection){ + if(_document.selection.empty){ + _document.selection.empty(); + }else if(_document.selection.clear){ + _document.selection.clear(); + } + } + return true; + }catch(e){ + dojo.debug(e); + return false; + } +} + +dojo.html.disableSelection = function(/*DomNode*/element){ + // summary: disable selection on a node + element = dojo.byId(element)||dojo.body(); + var h = dojo.render.html; + + if(h.mozilla){ + element.style.MozUserSelect = "none"; + }else if(h.safari){ + element.style.KhtmlUserSelect = "none"; + }else if(h.ie){ + element.unselectable = "on"; + }else{ + return false; + } + return true; +} + +dojo.html.enableSelection = function(/*DomNode*/element){ + // summary: enable selection on a node + element = dojo.byId(element)||dojo.body(); + + var h = dojo.render.html; + if(h.mozilla){ + element.style.MozUserSelect = ""; + }else if(h.safari){ + element.style.KhtmlUserSelect = ""; + }else if(h.ie){ + element.unselectable = "off"; + }else{ + return false; + } + return true; +} + +dojo.html.selectElement = function(/*DomNode*/element){ + dojo.deprecated("dojo.html.selectElement", "replaced by dojo.html.selection.selectElementChildren", 0.5); +} + +dojo.html.selectInputText = function(/*DomNode*/element){ + // summary: select all the text in an input element + var _window = dojo.global(); + var _document = dojo.doc(); + element = dojo.byId(element); + if(_document["selection"] && dojo.body()["createTextRange"]){ // IE + var range = element.createTextRange(); + range.moveStart("character", 0); + range.moveEnd("character", element.value.length); + range.select(); + }else if(_window["getSelection"]){ + var selection = _window.getSelection(); + // FIXME: does this work on Safari? + element.setSelectionRange(0, element.value.length); + } + element.focus(); +} + + +dojo.html.isSelectionCollapsed = function(){ + dojo.deprecated("dojo.html.isSelectionCollapsed", "replaced by dojo.html.selection.isCollapsed", 0.5); + return dojo.html.selection.isCollapsed(); +} + +dojo.lang.mixin(dojo.html.selection, { + getType: function() { + // summary: Get the selection type (like document.select.type in IE). + if(dojo.doc()["selection"]){ //IE + return dojo.html.selectionType[dojo.doc().selection.type.toUpperCase()]; + }else{ + var stype = dojo.html.selectionType.TEXT; + + // Check if the actual selection is a CONTROL (IMG, TABLE, HR, etc...). + var oSel; + try {oSel = dojo.global().getSelection();} + catch (e) {} + + if(oSel && oSel.rangeCount==1){ + var oRange = oSel.getRangeAt(0); + if (oRange.startContainer == oRange.endContainer && (oRange.endOffset - oRange.startOffset) == 1 + && oRange.startContainer.nodeType != dojo.dom.TEXT_NODE) { + stype = dojo.html.selectionType.CONTROL; + } + } + return stype; + } + }, + isCollapsed: function() { + // summary: return whether the current selection is empty + var _window = dojo.global(); + var _document = dojo.doc(); + if(_document["selection"]){ // IE + return _document.selection.createRange().text == ""; + }else if(_window["getSelection"]){ + var selection = _window.getSelection(); + if(dojo.lang.isString(selection)){ // Safari + return selection == ""; + }else{ // Mozilla/W3 + return selection.isCollapsed || selection.toString() == ""; + } + } + }, + getSelectedElement: function() { + // summary: + // Retrieves the selected element (if any), just in the case that a single + // element (object like and image or a table) is selected. + if ( dojo.html.selection.getType() == dojo.html.selectionType.CONTROL ){ + if(dojo.doc()["selection"]){ //IE + var range = dojo.doc().selection.createRange(); + + if ( range && range.item ){ + return dojo.doc().selection.createRange().item(0); + } + }else{ + var selection = dojo.global().getSelection(); + return selection.anchorNode.childNodes[ selection.anchorOffset ]; + } + } + }, + getParentElement: function() { + // summary: + // Get the parent element of the current selection + if(dojo.html.selection.getType() == dojo.html.selectionType.CONTROL){ + var p = dojo.html.selection.getSelectedElement(); + if(p){ return p.parentNode; } + }else{ + if(dojo.doc()["selection"]){ //IE + return dojo.doc().selection.createRange().parentElement(); + }else{ + var selection = dojo.global().getSelection(); + if(selection){ + var node = selection.anchorNode; + + while ( node && node.nodeType != dojo.dom.ELEMENT_NODE ){ + node = node.parentNode; + } + + return node; + } + } + } + }, + getSelectedText: function(){ + // summary: + // Return the text (no html tags) included in the current selection or null if no text is selected + if(dojo.doc()["selection"]){ //IE + if(dojo.html.selection.getType() == dojo.html.selectionType.CONTROL){ + return null; + } + return dojo.doc().selection.createRange().text; + }else{ + var selection = dojo.global().getSelection(); + if(selection){ + return selection.toString(); + } + } + }, + getSelectedHtml: function(){ + // summary: + // Return the html of the current selection or null if unavailable + if(dojo.doc()["selection"]){ //IE + if(dojo.html.selection.getType() == dojo.html.selectionType.CONTROL){ + return null; + } + return dojo.doc().selection.createRange().htmlText; + }else{ + var selection = dojo.global().getSelection(); + if(selection && selection.rangeCount){ + var frag = selection.getRangeAt(0).cloneContents(); + var div = document.createElement("div"); + div.appendChild(frag); + return div.innerHTML; + } + return null; + } + }, + hasAncestorElement: function(/*String*/tagName /* ... */){ + // summary: + // Check whether current selection has a parent element which is of type tagName (or one of the other specified tagName) + return (dojo.html.selection.getAncestorElement.apply(this, arguments) != null); + }, + getAncestorElement: function(/*String*/tagName /* ... */){ + // summary: + // Return the parent element of the current selection which is of type tagName (or one of the other specified tagName) + var node = dojo.html.selection.getSelectedElement() || dojo.html.selection.getParentElement(); + while(node /*&& node.tagName.toLowerCase() != 'body'*/){ + if(dojo.html.selection.isTag(node, arguments).length>0){ + return node; + } + node = node.parentNode; + } + return null; + }, + //modified from dojo.html.isTag to take an array as second parameter + isTag: function(/*DomNode*/node, /*Array*/tags) { + if(node && node.tagName) { + for (var i=0; i<tags.length; i++){ + if (node.tagName.toLowerCase()==String(tags[i]).toLowerCase()){ + return String(tags[i]).toLowerCase(); + } + } + } + return ""; + }, + selectElement: function(/*DomNode*/element) { + // summary: clear previous selection and select element (including all its children) + var _window = dojo.global(); + var _document = dojo.doc(); + element = dojo.byId(element); + if(_document.selection && dojo.body().createTextRange){ // IE + try{ + var range = dojo.body().createControlRange(); + range.addElement(element); + range.select(); + }catch(e){ + dojo.html.selection.selectElementChildren(element); + } + }else if(_window["getSelection"]){ + var selection = _window.getSelection(); + // FIXME: does this work on Safari? + if(selection["removeAllRanges"]){ // Mozilla + var range = _document.createRange() ; + range.selectNode(element) ; + selection.removeAllRanges() ; + selection.addRange(range) ; + } + } + }, + selectElementChildren: function(/*DomNode*/element){ + // summary: clear previous selection and select the content of the node (excluding the node itself) + var _window = dojo.global(); + var _document = dojo.doc(); + element = dojo.byId(element); + if(_document.selection && dojo.body().createTextRange){ // IE + var range = dojo.body().createTextRange(); + range.moveToElementText(element); + range.select(); + }else if(_window["getSelection"]){ + var selection = _window.getSelection(); + if(selection["setBaseAndExtent"]){ // Safari + selection.setBaseAndExtent(element, 0, element, element.innerText.length - 1); + } else if(selection["selectAllChildren"]){ // Mozilla + selection.selectAllChildren(element); + } + } + }, + getBookmark: function(){ + // summary: Retrieves a bookmark that can be used with moveToBookmark to return to the same range + var bookmark; + var _document = dojo.doc(); + if(_document["selection"]){ // IE + var range = _document.selection.createRange(); + bookmark = range.getBookmark(); + }else{ + var selection; + try {selection = dojo.global().getSelection();} + catch (e) {} + if(selection){ + var range = selection.getRangeAt(0); + bookmark = range.cloneRange(); + }else{ + dojo.debug("No idea how to store the current selection for this browser!"); + } + } + return bookmark; + }, + moveToBookmark: function(/*Object*/bookmark){ + // summary: Moves current selection to a bookmark + // bookmark: this should be a returned object from dojo.html.selection.getBookmark() + var _document = dojo.doc(); + if(_document["selection"]){ // IE + var range = _document.selection.createRange(); + range.moveToBookmark(bookmark); + range.select(); + }else{ //Moz/W3C + var selection; + try {selection = dojo.global().getSelection();} + catch (e) {} + if(selection && selection['removeAllRanges']){ + selection.removeAllRanges() ; + selection.addRange(bookmark) ; + }else{ + dojo.debug("No idea how to restore selection for this browser!"); + } + } + }, + collapse: function(/*Boolean*/beginning) { + // summary: clear current selection + if(dojo.global()['getSelection']){ + var selection = dojo.global().getSelection(); + if(selection.removeAllRanges){ // Mozilla + if(beginning){ + selection.collapseToStart(); + }else{ + selection.collapseToEnd(); + } + }else{ // Safari + // pulled from WebCore/ecma/kjs_window.cpp, line 2536 + dojo.global().getSelection().collapse(beginning); + } + }else if(dojo.doc().selection){ // IE + var range = dojo.doc().selection.createRange(); + range.collapse(beginning); + range.select(); + } + }, + remove: function() { + // summary: delete current selection + if(dojo.doc().selection) { //IE + var selection = dojo.doc().selection; + + if ( selection.type.toUpperCase() != "NONE" ){ + selection.clear(); + } + + return selection; + }else{ + var selection = dojo.global().getSelection(); + + for ( var i = 0; i < selection.rangeCount; i++ ){ + selection.getRangeAt(i).deleteContents(); + } + + return selection; + } + } +}); Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/selection.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/selection.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/selection.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/shadow.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/shadow.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/html/shadow.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/html/shadow.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,16 @@ +/* + 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.shadow"); + +dojo.require("dojo.lfx.shadow"); +dojo.deprecated("dojo.html.shadow has been moved to dojo.lfx.", "0.5"); + +dojo.html.shadow = dojo.lfx.shadow; Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/shadow.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/shadow.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/shadow.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/html/style.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/html/style.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/html/style.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/html/style.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,587 @@ +/* + 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(/* HTMLElement */node){ + // summary + // Returns the string value of the list of CSS classes currently assigned directly + // to the node in question. Returns an empty string if no class attribute is found; + 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, ""); // string +} + +dojo.html.getClasses = function(/* HTMLElement */node) { + // summary + // Returns an array of CSS classes currently assigned directly to the node in question. + // Returns an empty array if no classes are found; + var c = dojo.html.getClass(node); + return (c == "") ? [] : c.split(/\s+/g); // array +} + +dojo.html.hasClass = function(/* HTMLElement */node, /* string */classname){ + // summar |
Free forum by Nabble | Edit this page |