1 17 18 package com.finalist.jag.template; 19 20 21 import java.util.*; 22 23 import com.finalist.jag.util.*; 24 25 26 33 public class TemplateStructure implements Cloneable { 34 35 36 private TemplateTreeItem rootNode = null; 37 38 39 44 public TemplateStructure() { 45 } 46 47 48 55 public TemplateStructure(TemplateStructure n) { 56 rootNode = new TemplateTreeItem(n.getRoot()); 57 } 58 59 60 67 public void setRoot(TemplateTreeItem rootNode) { 68 this.rootNode = rootNode; 69 } 70 71 72 79 public final TemplateTreeItem getRoot() { 80 81 if (rootNode == null) { 82 rootNode = new TemplateTreeItem(); 83 } 84 85 return rootNode; 86 } 87 88 89 96 public final TemplateTextBlockList getTextBlockList() { 97 98 TemplateTextBlockList list = new TemplateTextBlockList(); 99 100 getTextBlockList(list, getRoot()); 101 102 return list; 103 } 104 105 106 117 public TemplateStructure cut(TemplateTreeItem first, 118 TemplateTreeItem last) { 119 120 TemplateStructure returnValue = new TemplateStructure(); 121 TemplateTreeItem tmp = first; 122 123 if (((first == null) || (last == null)) 124 || (first.getParent() != last.getParent())) { 125 return returnValue; 126 } 127 128 if (first.getPrevSibling() != null) { 131 TreeItem prevItem = first.getPrevSibling(); 132 133 prevItem.setNextSibling(last.getNextSibling()); 134 } 135 else if (first.getParent() != null) { 136 TreeItem parentItem = first.getParent(); 137 138 parentItem.setFirstChild(last.getNextSibling()); 139 } 140 141 last.disconnectSiblings(); 142 143 returnValue.getRoot().setFirstChild(first); 145 146 return returnValue; 147 } 148 149 150 158 private void getTextBlockList(TemplateTextBlockList list, 159 TemplateTreeItem item) { 160 161 if (item.getTextBlock() != null) { 162 list.add(item.getTextBlock()); 163 } 164 165 TreeItem childItem = item.getFirstChild(); 166 167 while (childItem != null) { 168 getTextBlockList(list, (TemplateTreeItem) childItem); 169 170 childItem = childItem.getNextSibling(); 171 } 172 } 173 174 175 184 public TemplateTreeItem getTemplateTreeItem(TemplateTextBlock textBlock) { 185 186 Iterator iterator = getCollection().iterator(); 187 188 while (iterator.hasNext()) { 189 TemplateTreeItem item = (TemplateTreeItem) iterator.next(); 190 191 if (item.getTextBlock() == textBlock) { 192 return item; 193 } 194 } 195 196 return null; 197 } 198 199 200 207 public Collection getCollection() { 208 209 LinkedList list = new LinkedList(); 210 211 getCollection(list, getRoot()); 212 213 return list; 214 } 215 216 217 225 private void getCollection(LinkedList list, TemplateTreeItem item) { 226 227 list.add(item); 228 229 TreeItem childItem = item.getFirstChild(); 230 231 while (childItem != null) { 232 getCollection(list, (TemplateTreeItem) childItem); 233 234 childItem = childItem.getNextSibling(); 235 } 236 } 237 238 239 245 public void clearBodyText() { 246 clearBodyText(rootNode); 247 } 248 249 250 256 private void clearBodyText(TemplateTreeItem parentItem) { 257 258 if (parentItem == null) { 259 return; 260 } 261 parentItem.getTextBlock().set(); 262 263 TemplateTreeItem templateItem = 264 (TemplateTreeItem) parentItem.getFirstChild(); 265 266 while (templateItem != null) { 267 clearBodyText(templateItem); 268 templateItem = (TemplateTreeItem) templateItem.getNextSibling(); 269 } 270 } 271 } 272 | Popular Tags |