some minor cleanup to code in how widgets are loaded.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3943 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Ariel Backenroth
2006-09-26 17:56:03 +00:00
parent 8b3e6b01a0
commit 5fdef3896a

View File

@@ -251,18 +251,8 @@ dojo.declare("alfresco.xforms.TextArea",
this.domNode.setAttribute("style", "height: 200px; border: solid 1px black;"); this.domNode.setAttribute("style", "height: 200px; border: solid 1px black;");
this.domNode.setAttribute("id", this.id); this.domNode.setAttribute("id", this.id);
this.domNode.innerHTML = this.getInitialValue() || ""; this.domNode.innerHTML = this.getInitialValue() || "";
// dojo.event.connect(this.domNode, "onclick", this, this._clickHandler);
// dojo.event.connect(this.domNode, "onblur", this, this._blurHandler);
tinyMCE.addMCEControl(this.domNode, this.id); tinyMCE.addMCEControl(this.domNode, this.id);
}, },
_clickHandler: function(event)
{
},
_blurHandler: function(event)
{
alert('blurry');
}
}); });
dojo.declare("alfresco.xforms.Select1", dojo.declare("alfresco.xforms.Select1",
@@ -735,32 +725,32 @@ dojo.declare("alfresco.xforms.Repeat",
this._updateDisplay(); this._updateDisplay();
}, },
handlePrototypeCloned: function(prototypeId) handlePrototypeCloned: function(prototypeId)
{ {
dojo.debug(this.id + ".handlePrototypeCloned("+ prototypeId +")"); dojo.debug(this.id + ".handlePrototypeCloned("+ prototypeId +")");
var chibaData = this.node.getElementsByTagName("data"); var chibaData = this.node.getElementsByTagName("data");
dojo.debug("repeat node == " +dojo.dom.innerXML(this.node)); dojo.debug("repeat node == " +dojo.dom.innerXML(this.node));
dojo.debug(chibaData + " l = " + chibaData.length); dojo.debug(chibaData + " l = " + chibaData.length);
chibaData = chibaData[chibaData.length - 1]; chibaData = chibaData[chibaData.length - 1];
dojo.debug("chiba:data == " + dojo.dom.innerXML(chibaData)); dojo.debug("chiba:data == " + dojo.dom.innerXML(chibaData));
var prototypeToClone = dojo.dom.firstElement(chibaData); var prototypeToClone = dojo.dom.firstElement(chibaData);
if (prototypeToClone.getAttribute("id") != prototypeId) if (prototypeToClone.getAttribute("id") != prototypeId)
throw new Error("unable to locate " + prototypeId + throw new Error("unable to locate " + prototypeId +
" in " + this.id); " in " + this.id);
return prototypeToClone.cloneNode(true); return prototypeToClone.cloneNode(true);
}, },
handleItemInserted: function(clonedPrototype, position) handleItemInserted: function(clonedPrototype, position)
{ {
dojo.debug(this.id + ".handleItemInserted(" + clonedPrototype.nodeName + dojo.debug(this.id + ".handleItemInserted(" + clonedPrototype.nodeName +
", " + position + ")"); ", " + position + ")");
var w = create_widget(this.xform, clonedPrototype); var w = this.xform.createWidget(clonedPrototype);
this.insertChildAt(w, position); this.insertChildAt(w, position);
load_body(this.xform, w.node, w); this.xform.loadWidgets(w.node, w);
}, },
handleItemDeleted: function(position) handleItemDeleted: function(position)
{ {
dojo.debug(this.id + ".handleItemDeleted(" + position + ")"); dojo.debug(this.id + ".handleItemDeleted(" + position + ")");
this.removeChildAt(position); this.removeChildAt(position);
} }
}); });
dojo.declare("alfresco.xforms.Trigger", dojo.declare("alfresco.xforms.Trigger",
@@ -865,12 +855,79 @@ dojo.declare("alfresco.xforms.XForm",
var root = new alfresco.xforms.Group(this, alfUI); var root = new alfresco.xforms.Group(this, alfUI);
root.render(alfUI); root.render(alfUI);
load_body(this, this.getBody(), root); this.loadWidgets(this.getBody(), root);
}, },
addLoadHandler: function(handler) createWidget: function(node)
{ {
this.load_handlers.push(handler); switch (node.nodeName.toLowerCase())
{
case "xforms:group":
return new alfresco.xforms.Group(this, node);
case "xforms:repeat":
return new alfresco.xforms.Repeat(this, node);
case "xforms:textarea":
return new alfresco.xforms.TextArea(this, node);
case "xforms:input":
var type = this.getType(node);
switch (type)
{
case "date":
return new alfresco.xforms.DatePicker(this, node);
case "byte":
case "double":
case "float":
case "int":
case "integer":
case "long":
case "negativeInteger":
case "nonNegativeInteger":
case "nonPositiveInteger":
case "short":
case "unsignedByte":
case "unsignedInt":
case "unsignedLong":
case "unsignedShort":
case "positiveInteger":
return new alfresco.xforms.NumericStepper(this, node, type);
case "string":
default:
return new alfresco.xforms.TextField(this, node);
}
case "xforms:select1":
return (this.getType(node) == "boolean"
? new alfresco.xforms.Checkbox(this, node)
: new alfresco.xforms.Select1(this, node));
case "xforms:submit":
return new alfresco.xforms.Submit(this, node);
case "xforms:trigger":
return new alfresco.xforms.Trigger(this, node);
case "chiba:data":
case "xforms:label":
case "xforms:alert":
return null;
default:
throw new Error("unknown type " + node.nodeName);
}
}, },
loadWidgets: function(modelNode, parentWidget)
{
for (var i = 0; i < modelNode.childNodes.length; i++)
{
if (modelNode.childNodes[i].nodeType == dojo.dom.ELEMENT_NODE)
{
dojo.debug("loading " + modelNode.childNodes[i] +
" nodeName " + modelNode.childNodes[i].nodeName +
" into " + parentWidget);
var w = this.createWidget(modelNode.childNodes[i]);
if (w != null)
{
parentWidget.addChild(w);
if (w instanceof alfresco.xforms.Group)
this.loadWidgets(modelNode.childNodes[i], w);
}
}
}
},
getModel: function() getModel: function()
{ {
return this.node.getElementsByTagName("model")[0]; return this.node.getElementsByTagName("model")[0];
@@ -1034,77 +1091,6 @@ dojo.declare("alfresco.xforms.XForm",
} }
}); });
function create_widget(xform, node)
{
switch (node.nodeName.toLowerCase())
{
case "xforms:group":
return new alfresco.xforms.Group(xform, node);
case "xforms:repeat":
return new alfresco.xforms.Repeat(xform, node);
case "xforms:textarea":
return new alfresco.xforms.TextArea(xform, node);
case "xforms:input":
var type = xform.getType(node);
switch (type)
{
case "date":
return new alfresco.xforms.DatePicker(xform, node);
case "byte":
case "double":
case "float":
case "int":
case "integer":
case "long":
case "negativeInteger":
case "nonNegativeInteger":
case "nonPositiveInteger":
case "short":
case "unsignedByte":
case "unsignedInt":
case "unsignedLong":
case "unsignedShort":
case "positiveInteger":
return new alfresco.xforms.NumericStepper(xform, node, type);
case "string":
default:
return new alfresco.xforms.TextField(xform, node);
}
case "xforms:select1":
return (xform.getType(node) == "boolean"
? new alfresco.xforms.Checkbox(xform, node)
: new alfresco.xforms.Select1(xform, node));
case "xforms:submit":
return new alfresco.xforms.Submit(xform, node);
case "xforms:trigger":
return new alfresco.xforms.Trigger(xform, node);
case "chiba:data":
case "xforms:label":
case "xforms:alert":
return null;
default:
throw new Error("unknown type " + node.nodeName);
}
}
function load_body(xform, currentNode, parentWidget)
{
dojo.lang.forEach(currentNode.childNodes, function(o)
{
if (o.nodeType == dojo.dom.ELEMENT_NODE)
{
dojo.debug("loading " + o + " NN " + o.nodeName + " into " + parentWidget);
var w = create_widget(xform, o);
if (w != null)
{
parentWidget.addChild(w);
if (w instanceof alfresco.xforms.Group)
load_body(xform, o, w);
}
}
});
}
function addSubmitHandlerToButton(b) function addSubmitHandlerToButton(b)
{ {
var baseOnClick = b.onclick; var baseOnClick = b.onclick;
@@ -1231,27 +1217,13 @@ function ajax_loader_update_display()
? " (" + _ajax_requests.length + ")" ? " (" + _ajax_requests.length + ")"
: "...")); : "..."));
dojo.debug(ajaxLoader.innerHTML); dojo.debug(ajaxLoader.innerHTML);
if (/*dojo.style.isVisible(ajaxLoader) && */ _ajax_requests.length == 0) if (/* djConfig.isDebug && */ _ajax_requests.length != 0)
{ {
// dojo.fx.html.fadeOut(ajaxLoader, dojo.style.show(ajaxLoader);
// 200,
// function(node)
// {
dojo.style.hide(ajaxLoader);
// });
}
else if (/*!dojo.style.isVisible(ajaxLoader) && */ _ajax_requests.length != 0)
{
// dojo.fx.html.fadeIn(ajaxLoader,
// 100,
// function(node)
// {
dojo.style.show(ajaxLoader);
// });
} }
else else
{ {
alert("v " + dojo.style.isVisible(ajaxLoader) + " l " + _ajax_requests.length); dojo.style.hide(ajaxLoader);
} }
} }