1 17 18 package com.finalist.jag.util; 19 20 21 31 public class TreeItem { 32 33 34 private TreeItem up = null; 35 36 37 private TreeItem down = null; 38 39 40 private TreeItem right = null; 41 42 43 private TreeItem left = null; 44 45 46 private Object dataField = null; 47 48 49 54 public void addChild(TreeItem node) { 55 56 if (node == null) { 57 return; 58 } 59 60 TreeItem t = this.down; 61 62 if (t != null) { 63 while (t.right != null) t = t.right; 65 t.right = (TreeItem) node; 66 node.left = t; 67 node.up = null; 68 } 69 else { 70 this.down = (TreeItem) node; 72 node.left = null; 73 node.up = this; 74 } 75 } 76 77 78 83 public TreeItem getFirstChild() { 84 return down; 85 } 86 87 88 93 public TreeItem getNextSibling() { 94 return right; 95 } 96 97 98 103 public TreeItem getPrevSibling() { 104 return left; 105 } 106 107 108 public TreeItem getLastChild() { 109 TreeItem childItem = getFirstChild(); 110 while (childItem != null && childItem.getNextSibling() != null) 111 childItem = childItem.getNextSibling(); 112 return childItem; 113 } 114 115 116 public TreeItem getParent() { 117 TreeItem tmp = this; 118 while (tmp.getPrevSibling() != null) 119 tmp = tmp.getPrevSibling(); 120 return tmp.up; 121 } 122 123 124 public TreeItem getRoot() { 125 TreeItem tmp = this; 126 while (tmp.getParent() != null) 127 tmp = tmp.getParent(); 128 return tmp; 129 } 130 131 132 133 public TreeItem disconnectChildren() { 134 TreeItem treeitem = down; 135 if (down != null) { 136 treeitem.up = null; 137 down = null; 138 } 139 return treeitem; 140 } 141 142 143 public TreeItem disconnectLastChild() { 144 TreeItem child = this.getFirstChild(); 145 while (child != null) { 146 if (child.getNextSibling() == null) { 147 if (child.left == null) 148 return disconnectChildren(); 149 150 return child.left.disconnectSiblings(); 151 } 152 child = child.getNextSibling(); 153 } 154 return null; 155 } 156 157 158 159 public TreeItem disconnectSiblings() { 160 TreeItem treeitem = right; 161 if (right != null) { 162 right.left = null; 163 right = null; 164 } 165 return treeitem; 166 } 167 168 169 176 public TreeItem setFirstChild(TreeItem c) { 177 TreeItem oldChild = disconnectChildren(); 178 down = (TreeItem) c; 179 return oldChild; 180 } 181 182 183 188 public TreeItem setNextSibling(TreeItem n) { 189 TreeItem oldSibling = disconnectSiblings(); 190 right = n; 191 n.left = this; 192 return oldSibling; 193 } 194 195 196 203 public Object getDataItem() { 204 return dataField; 205 } 206 207 208 215 public void setDataItem(Object dataField) { 216 this.dataField = dataField; 217 } 218 219 220 public String toString() { 221 String buffer = new String (); 222 buffer += "up : "; 223 buffer += (up != null) ? "1" : "null"; 224 buffer += " down : "; 225 buffer += (down != null) ? "1" : "null"; 226 buffer += " right : "; 227 buffer += (right != null) ? "1" : "null"; 228 buffer += " left : "; 229 buffer += (left != null) ? "1" : "null"; 230 return buffer; 231 } 232 } 233 234 ; | Popular Tags |