Text should know its Parent
Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/dom/ParentTest.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/dom/ParentTest.java
index 40e5837..cde2f74 100644
--- a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/dom/ParentTest.java
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/dom/ParentTest.java
@@ -179,6 +179,12 @@
assertEquals("Wo", childNodes.get(2).getText());
}
+ @Test
+ public void shouldSetParentOnTextNodes() throws Exception {
+ content.insertText(parent.getEndOffset(), "Hello World");
+ assertSame(parent, parent.getChildNodes().get(0).getParent());
+ }
+
private TestChild addTestChild() {
final int offset = parent.getEndOffset();
content.insertElementMarker(offset);
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Document.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Document.java
index 2c3b70a..2623b5d 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Document.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Document.java
@@ -326,14 +326,14 @@
for (int i = 0; i < elements.size(); i++) {
final int start = elements.get(i).getStartOffset();
if (offset < start) {
- nodes.add(new Text(content, offset, start));
+ nodes.add(new Text(null, content, offset, start));
}
nodes.add(elements.get(i));
offset = elements.get(i).getEndOffset() + 1;
}
if (offset < endOffset) {
- nodes.add(new Text(content, offset, endOffset));
+ nodes.add(new Text(null, content, offset, endOffset));
}
return nodes;
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Parent.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Parent.java
index 73b34f4..69de4f0 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Parent.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Parent.java
@@ -50,7 +50,7 @@
final int childEnd = child.getEndOffset();
if (offset < childStart) {
final int textEnd = Math.min(childStart, rangeEnd);
- result.add(new Text(getContent(), offset, textEnd));
+ result.add(new Text(this, getContent(), offset, textEnd));
offset = textEnd + 1;
}
if (childStart >= rangeStart && childStart <= rangeEnd && childEnd <= rangeEnd) {
@@ -65,7 +65,7 @@
}
if (offset < rangeEnd) {
- result.add(new Text(getContent(), offset, rangeEnd));
+ result.add(new Text(this, getContent(), offset, rangeEnd));
}
return Collections.unmodifiableList(result);
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Text.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Text.java
index 43dc8d2..e84e587 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Text.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Text.java
@@ -19,6 +19,8 @@
/**
* Class constructor.
*
+ * @param parent
+ * The parent node containing the text
* @param content
* Content object containing the text
* @param startOffset
@@ -26,7 +28,8 @@
* @param endOffset
* character offset of the end of the run
*/
- public Text(final Content content, final int startOffset, final int endOffset) {
+ public Text(final Parent parent, final Content content, final int startOffset, final int endOffset) {
+ setParent(parent);
associate(content, startOffset, endOffset);
}