|
Struts example source code file (Parse.js)
The Struts Parse.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.widget.Parse"); dojo.require("dojo.widget.Manager"); dojo.require("dojo.dom"); dojo.widget.Parse = function (fragment) { this.propertySetsList = []; this.fragment = fragment; this.createComponents = function (frag, parentComp) { var comps = []; var built = false; try { if (frag && frag.tagName && (frag != frag.nodeRef)) { var djTags = dojo.widget.tags; var tna = String(frag.tagName).split(";"); for (var x = 0; x < tna.length; x++) { var ltn = tna[x].replace(/^\s+|\s+$/g, "").toLowerCase(); frag.tagName = ltn; var ret; if (djTags[ltn]) { built = true; ret = djTags[ltn](frag, this, parentComp, frag.index); comps.push(ret); } else { if (ltn.indexOf(":") == -1) { ltn = "dojo:" + ltn; } ret = dojo.widget.buildWidgetFromParseTree(ltn, frag, this, parentComp, frag.index); if (ret) { built = true; comps.push(ret); } } } } } catch (e) { dojo.debug("dojo.widget.Parse: error:", e); } if (!built) { comps = comps.concat(this.createSubComponents(frag, parentComp)); } return comps; }; this.createSubComponents = function (fragment, parentComp) { var frag, comps = []; for (var item in fragment) { frag = fragment[item]; if (frag && typeof frag == "object" && (frag != fragment.nodeRef) && (frag != fragment.tagName) && (!dojo.dom.isNode(frag))) { comps = comps.concat(this.createComponents(frag, parentComp)); } } return comps; }; this.parsePropertySets = function (fragment) { return []; }; this.parseProperties = function (fragment) { var properties = {}; for (var item in fragment) { if ((fragment[item] == fragment.tagName) || (fragment[item] == fragment.nodeRef)) { } else { var frag = fragment[item]; if (frag.tagName && dojo.widget.tags[frag.tagName.toLowerCase()]) { } else { if (frag[0] && frag[0].value != "" && frag[0].value != null) { try { if (item.toLowerCase() == "dataprovider") { var _this = this; this.getDataProvider(_this, frag[0].value); properties.dataProvider = this.dataProvider; } properties[item] = frag[0].value; var nestedProperties = this.parseProperties(frag); for (var property in nestedProperties) { properties[property] = nestedProperties[property]; } } catch (e) { dojo.debug(e); } } } switch (item.toLowerCase()) { case "checked": case "disabled": if (typeof properties[item] != "boolean") { properties[item] = true; } break; } } } return properties; }; this.getDataProvider = function (objRef, dataUrl) { dojo.io.bind({url:dataUrl, load:function (type, evaldObj) { if (type == "load") { objRef.dataProvider = evaldObj; } }, mimetype:"text/javascript", sync:true}); }; this.getPropertySetById = function (propertySetId) { for (var x = 0; x < this.propertySetsList.length; x++) { if (propertySetId == this.propertySetsList[x]["id"][0].value) { return this.propertySetsList[x]; } } return ""; }; this.getPropertySetsByType = function (componentType) { var propertySets = []; for (var x = 0; x < this.propertySetsList.length; x++) { var cpl = this.propertySetsList[x]; var cpcc = cpl.componentClass || cpl.componentType || null; var propertySetId = this.propertySetsList[x]["id"][0].value; if (cpcc && (propertySetId == cpcc[0].value)) { propertySets.push(cpl); } } return propertySets; }; this.getPropertySets = function (fragment) { var ppl = "dojo:propertyproviderlist"; var propertySets = []; var tagname = fragment.tagName; if (fragment[ppl]) { var propertyProviderIds = fragment[ppl].value.split(" "); for (var propertySetId in propertyProviderIds) { if ((propertySetId.indexOf("..") == -1) && (propertySetId.indexOf("://") == -1)) { var propertySet = this.getPropertySetById(propertySetId); if (propertySet != "") { propertySets.push(propertySet); } } else { } } } return this.getPropertySetsByType(tagname).concat(propertySets); }; this.createComponentFromScript = function (nodeRef, componentName, properties, ns) { properties.fastMixIn = true; var ltn = (ns || "dojo") + ":" + componentName.toLowerCase(); if (dojo.widget.tags[ltn]) { return [dojo.widget.tags[ltn](properties, this, null, null, properties)]; } return [dojo.widget.buildWidgetFromParseTree(ltn, properties, this, null, null, properties)]; }; }; dojo.widget._parser_collection = {"dojo":new dojo.widget.Parse()}; dojo.widget.getParser = function (name) { if (!name) { name = "dojo"; } if (!this._parser_collection[name]) { this._parser_collection[name] = new dojo.widget.Parse(); } return this._parser_collection[name]; }; dojo.widget.createWidget = function (name, props, refNode, position) { var isNode = false; var isNameStr = (typeof name == "string"); if (isNameStr) { var pos = name.indexOf(":"); var ns = (pos > -1) ? name.substring(0, pos) : "dojo"; if (pos > -1) { name = name.substring(pos + 1); } var lowerCaseName = name.toLowerCase(); var namespacedName = ns + ":" + lowerCaseName; isNode = (dojo.byId(name) && !dojo.widget.tags[namespacedName]); } if ((arguments.length == 1) && (isNode || !isNameStr)) { var xp = new dojo.xml.Parse(); var tn = isNode ? dojo.byId(name) : name; return dojo.widget.getParser().createComponents(xp.parseElement(tn, null, true))[0]; } function fromScript(placeKeeperNode, name, props, ns) { props[namespacedName] = {dojotype:[{value:lowerCaseName}], nodeRef:placeKeeperNode, fastMixIn:true}; props.ns = ns; return dojo.widget.getParser().createComponentFromScript(placeKeeperNode, name, props, ns); } props = props || {}; var notRef = false; var tn = null; var h = dojo.render.html.capable; if (h) { tn = document.createElement("span"); } if (!refNode) { notRef = true; refNode = tn; if (h) { dojo.body().appendChild(refNode); } } else { if (position) { dojo.dom.insertAtPosition(tn, refNode, position); } else { tn = refNode; } } var widgetArray = fromScript(tn, name.toLowerCase(), props, ns); if ((!widgetArray) || (!widgetArray[0]) || (typeof widgetArray[0].widgetType == "undefined")) { throw new Error("createWidget: Creation of \"" + name + "\" widget failed."); } try { if (notRef && widgetArray[0].domNode.parentNode) { widgetArray[0].domNode.parentNode.removeChild(widgetArray[0].domNode); } } catch (e) { dojo.debug(e); } return widgetArray[0]; }; Other Struts examples (source code examples)Here is a short list of links related to this Struts Parse.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.