You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xap-commits@incubator.apache.org by mt...@apache.org on 2006/10/30 16:57:02 UTC
svn commit: r469194 - in /incubator/xap/trunk/src/xap:
data/controller/Iterator.js xml/dom/XapElement.js
Author: mturyn
Date: Mon Oct 30 08:57:02 2006
New Revision: 469194
URL: http://svn.apache.org/viewvc?view=rev&rev=469194
Log:
Gave XapElement an insertChildAt() method so that Iterator could use it---handles odd cases.
Modified:
incubator/xap/trunk/src/xap/data/controller/Iterator.js
incubator/xap/trunk/src/xap/xml/dom/XapElement.js
Modified: incubator/xap/trunk/src/xap/data/controller/Iterator.js
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/src/xap/data/controller/Iterator.js?view=diff&rev=469194&r1=469193&r2=469194
==============================================================================
--- incubator/xap/trunk/src/xap/data/controller/Iterator.js (original)
+++ incubator/xap/trunk/src/xap/data/controller/Iterator.js Mon Oct 30 08:57:02 2006
@@ -414,8 +414,7 @@
location = new xap.data.controller.ElementLocation(childClone);
this._iteratedLocations.addElement(location);
}
-// this._parentElement.insertChildAt(insertIndex, childClone);
- this._parentElement.appendChild(childClone) ;
+ this._parentElement.insertChildAt(insertIndex, childClone);
} else {
if (child instanceof String) {
this._parentElement.insertChildAt(insertIndex, child);
Modified: incubator/xap/trunk/src/xap/xml/dom/XapElement.js
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/src/xap/xml/dom/XapElement.js?view=diff&rev=469194&r1=469193&r2=469194
==============================================================================
--- incubator/xap/trunk/src/xap/xml/dom/XapElement.js (original)
+++ incubator/xap/trunk/src/xap/xml/dom/XapElement.js Mon Oct 30 08:57:02 2006
@@ -287,6 +287,37 @@
return this._insertBefore( child );
}
+/**
+ * Inserts the new child newNode at the given index.
+ * @param {google.XNode} newChild The new child to insert.
+ * @param {int} index The index at which to insert the new child
+ */
+xap.xml.dom.XapElement.prototype.insertChildAt = function(index, newChild) {
+ var nChildren = this.childNodes.length ;
+ if(index > nChildren){
+ var event = new xap.xml.dom.events.StructureChangeEvent(this, newChild, index);
+ throw new xap.xml.dom.events.ChangeRejectedException(
+ xap.xml.dom.events.ChangeRejectedException.REJECTED_WITH_REASON_MSGID,
+ ["Attempted to insert at invalid index: "+index+"; last child is at nChildren"],
+ null,
+ event
+ );
+ }
+ // reduce to known cases:
+ var result = null ;
+ if( index == nChildren){
+ // At the end:
+ result = this.appendChild(newChild) ;
+ } else {
+ // This is a bit backwards, but at this
+ // point I'd rather not (e.g.) just copy
+ // most of the code from _insertBefore
+ result = this.insertBefore( newChild, this.childNodes[index] );
+ }
+ return result ;
+}
+
+
/**
* Removes the given child from this element.