You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by gb...@apache.org on 2010/08/03 21:27:00 UTC

svn commit: r982009 - in /pivot/trunk/wtk/src/org/apache/pivot/wtk/content: TreeBranch.java TreeNode.java

Author: gbrown
Date: Tue Aug  3 19:26:59 2010
New Revision: 982009

URL: http://svn.apache.org/viewvc?rev=982009&view=rev
Log:
Resolve PIVOT-583.

Modified:
    pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeBranch.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeNode.java

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeBranch.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeBranch.java?rev=982009&r1=982008&r2=982009&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeBranch.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeBranch.java Tue Aug  3 19:26:59 2010
@@ -27,7 +27,6 @@ import org.apache.pivot.util.ImmutableIt
 import org.apache.pivot.util.ListenerList;
 import org.apache.pivot.wtk.media.Image;
 
-
 /**
  * Default tree branch implementation.
  */
@@ -69,20 +68,49 @@ public class TreeBranch extends TreeNode
 
     @Override
     public int add(TreeNode treeNode) {
+        if (treeNode == null) {
+            throw new IllegalArgumentException("treeNode is null.");
+        }
+
+        if (treeNode.getParent() != null) {
+            throw new IllegalArgumentException("treeNode already has a parent.");
+        }
+
         int index = treeNodes.add(treeNode);
+        treeNode.setParent(this);
         listListeners.itemInserted(this, index);
+
         return index;
     }
 
     @Override
     public void insert(TreeNode treeNode, int index) {
+        if (treeNode == null) {
+            throw new IllegalArgumentException("treeNode is null.");
+        }
+
+        if (treeNode.getParent() != null) {
+            throw new IllegalArgumentException("treeNode already has a parent.");
+        }
+
         treeNodes.insert(treeNode, index);
+        treeNode.setParent(this);
         listListeners.itemInserted(this, index);
     }
 
     @Override
     public TreeNode update(int index, TreeNode treeNode) {
+        if (treeNode == null) {
+            throw new IllegalArgumentException("treeNode is null.");
+        }
+
+        if (treeNode.getParent() != null) {
+            throw new IllegalArgumentException("treeNode already has a parent.");
+        }
+
         TreeNode previousTreeNode = treeNodes.update(index, treeNode);
+        previousTreeNode.setParent(null);
+        treeNode.setParent(this);
         listListeners.itemUpdated(this, index, previousTreeNode);
 
         return previousTreeNode;
@@ -102,6 +130,11 @@ public class TreeBranch extends TreeNode
     public Sequence<TreeNode> remove(int index, int count) {
         Sequence<TreeNode> removed = treeNodes.remove(index, count);
         if (count > 0) {
+            for (int i = 0, n = removed.getLength(); i < n; i++ ) {
+                TreeNode treeNode = removed.get(i);
+                treeNode.setParent(null);
+            }
+
             listListeners.itemsRemoved(this, index, removed);
         }
 
@@ -111,6 +144,11 @@ public class TreeBranch extends TreeNode
     @Override
     public void clear() {
         if (getLength() > 0) {
+            for (int i = 0, n = treeNodes.getLength(); i < n; i++) {
+                TreeNode treeNode = treeNodes.get(i);
+                treeNode.setParent(null);
+            }
+
             treeNodes.clear();
             listListeners.listCleared(this);
         }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeNode.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeNode.java?rev=982009&r1=982008&r2=982009&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeNode.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeNode.java Tue Aug  3 19:26:59 2010
@@ -26,6 +26,8 @@ import org.apache.pivot.wtk.media.Image;
  * Default tree node implementation.
  */
 public class TreeNode {
+    private TreeBranch parent = null;
+
     private Image icon = null;
     private String text = null;
 
@@ -46,6 +48,14 @@ public class TreeNode {
         this.text = text;
     }
 
+    public TreeBranch getParent() {
+        return parent;
+    }
+
+    protected void setParent(TreeBranch parent) {
+        this.parent = parent;
+    }
+
     public Image getIcon() {
         return icon;
     }