src/share/classes/javax/swing/tree/DefaultMutableTreeNode.java

Print this page




1291             tValues[1] = userObject;
1292         }
1293         else
1294             tValues = new Object[0];
1295         s.writeObject(tValues);
1296     }
1297 
1298     private void readObject(ObjectInputStream s)
1299         throws IOException, ClassNotFoundException {
1300         Object[]      tValues;
1301 
1302         s.defaultReadObject();
1303 
1304         tValues = (Object[])s.readObject();
1305 
1306         if(tValues.length > 0 && tValues[0].equals("userObject"))
1307             userObject = tValues[1];
1308     }
1309 
1310     private final class PreorderEnumeration implements Enumeration<TreeNode> {
1311         private final Stack<Enumeration<TreeNode>> stack = new Stack<>();
1312 
1313         public PreorderEnumeration(TreeNode rootNode) {
1314             super();
1315             Vector<TreeNode> v = new Vector<TreeNode>(1);
1316             v.addElement(rootNode);     // PENDING: don't really need a vector
1317             stack.push(v.elements());
1318         }
1319 
1320         public boolean hasMoreElements() {
1321             return (!stack.empty() && stack.peek().hasMoreElements());
1322         }
1323 
1324         public TreeNode nextElement() {
1325             Enumeration<TreeNode> enumer = stack.peek();
1326             TreeNode    node = enumer.nextElement();
1327             @SuppressWarnings("unchecked")
1328             Enumeration<TreeNode> children = node.children();
1329 
1330             if (!enumer.hasMoreElements()) {
1331                 stack.pop();
1332             }
1333             if (children.hasMoreElements()) {
1334                 stack.push(children);
1335             }
1336             return node;
1337         }
1338 
1339     }  // End of class PreorderEnumeration
1340 
1341 
1342 
1343     final class PostorderEnumeration implements Enumeration<TreeNode> {
1344         protected TreeNode root;
1345         protected Enumeration<TreeNode> children;
1346         protected Enumeration<TreeNode> subtree;
1347 
1348         public PostorderEnumeration(TreeNode rootNode) {
1349             super();
1350             root = rootNode;
1351             children = root.children();
1352             subtree = EMPTY_ENUMERATION;
1353         }
1354 
1355         public boolean hasMoreElements() {
1356             return root != null;
1357         }
1358 
1359         public TreeNode nextElement() {
1360             TreeNode retval;
1361 
1362             if (subtree.hasMoreElements()) {
1363                 retval = subtree.nextElement();
1364             } else if (children.hasMoreElements()) {
1365                 subtree = new PostorderEnumeration(children.nextElement());




1291             tValues[1] = userObject;
1292         }
1293         else
1294             tValues = new Object[0];
1295         s.writeObject(tValues);
1296     }
1297 
1298     private void readObject(ObjectInputStream s)
1299         throws IOException, ClassNotFoundException {
1300         Object[]      tValues;
1301 
1302         s.defaultReadObject();
1303 
1304         tValues = (Object[])s.readObject();
1305 
1306         if(tValues.length > 0 && tValues[0].equals("userObject"))
1307             userObject = tValues[1];
1308     }
1309 
1310     private final class PreorderEnumeration implements Enumeration<TreeNode> {
1311         private final Stack<Enumeration<? extends TreeNode>> stack = new Stack<>();
1312 
1313         public PreorderEnumeration(TreeNode rootNode) {
1314             super();
1315             Vector<TreeNode> v = new Vector<TreeNode>(1);
1316             v.addElement(rootNode);     // PENDING: don't really need a vector
1317             stack.push(v.elements());
1318         }
1319 
1320         public boolean hasMoreElements() {
1321             return (!stack.empty() && stack.peek().hasMoreElements());
1322         }
1323 
1324         public TreeNode nextElement() {
1325             Enumeration<? extends TreeNode> enumer = stack.peek();
1326             TreeNode    node = enumer.nextElement();
1327             Enumeration<? extends TreeNode> children = node.children();

1328 
1329             if (!enumer.hasMoreElements()) {
1330                 stack.pop();
1331             }
1332             if (children.hasMoreElements()) {
1333                 stack.push(children);
1334             }
1335             return node;
1336         }
1337 
1338     }  // End of class PreorderEnumeration
1339 
1340 
1341 
1342     final class PostorderEnumeration implements Enumeration<TreeNode> {
1343         protected TreeNode root;
1344         protected Enumeration<? extends TreeNode> children;
1345         protected Enumeration<TreeNode> subtree;
1346 
1347         public PostorderEnumeration(TreeNode rootNode) {
1348             super();
1349             root = rootNode;
1350             children = root.children();
1351             subtree = EMPTY_ENUMERATION;
1352         }
1353 
1354         public boolean hasMoreElements() {
1355             return root != null;
1356         }
1357 
1358         public TreeNode nextElement() {
1359             TreeNode retval;
1360 
1361             if (subtree.hasMoreElements()) {
1362                 retval = subtree.nextElement();
1363             } else if (children.hasMoreElements()) {
1364                 subtree = new PostorderEnumeration(children.nextElement());