home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / text / ElementIterator.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.3 KB  |  160 lines

  1. package javax.swing.text;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Stack;
  5.  
  6. public class ElementIterator implements Cloneable {
  7.    private Element root;
  8.    private Stack elementStack = null;
  9.  
  10.    public ElementIterator(Document var1) {
  11.       this.root = var1.getDefaultRootElement();
  12.    }
  13.  
  14.    public ElementIterator(Element var1) {
  15.       this.root = var1;
  16.    }
  17.  
  18.    public synchronized Object clone() {
  19.       try {
  20.          ElementIterator var1 = new ElementIterator(this.root);
  21.          if (this.elementStack != null) {
  22.             var1.elementStack = new Stack();
  23.  
  24.             for(int var2 = 0; var2 < this.elementStack.size(); ++var2) {
  25.                StackItem var3 = (StackItem)this.elementStack.elementAt(var2);
  26.                StackItem var4 = (StackItem)var3.clone();
  27.                var1.elementStack.push(var4);
  28.             }
  29.          }
  30.  
  31.          return var1;
  32.       } catch (CloneNotSupportedException var5) {
  33.          throw new InternalError();
  34.       }
  35.    }
  36.  
  37.    public Element first() {
  38.       if (this.root == null) {
  39.          return null;
  40.       } else {
  41.          this.elementStack = new Stack();
  42.          if (this.root.getElementCount() != 0) {
  43.             this.elementStack.push(new StackItem(this, this.root, (1)null));
  44.          }
  45.  
  46.          return this.root;
  47.       }
  48.    }
  49.  
  50.    public int depth() {
  51.       return this.elementStack == null ? 0 : this.elementStack.size();
  52.    }
  53.  
  54.    public Element current() {
  55.       if (this.elementStack == null) {
  56.          return this.first();
  57.       } else if (!this.elementStack.empty()) {
  58.          StackItem var1 = (StackItem)this.elementStack.peek();
  59.          Element var2 = javax.swing.text.ElementIterator.StackItem.access$100(var1);
  60.          int var3 = javax.swing.text.ElementIterator.StackItem.access$200(var1);
  61.          return var3 == -1 ? var2 : var2.getElement(var3);
  62.       } else {
  63.          return null;
  64.       }
  65.    }
  66.  
  67.    public Element next() {
  68.       if (this.elementStack == null) {
  69.          return this.first();
  70.       } else if (this.elementStack.isEmpty()) {
  71.          return null;
  72.       } else {
  73.          StackItem var1 = (StackItem)this.elementStack.peek();
  74.          Element var2 = javax.swing.text.ElementIterator.StackItem.access$100(var1);
  75.          int var3 = javax.swing.text.ElementIterator.StackItem.access$200(var1);
  76.          if (var3 + 1 < var2.getElementCount()) {
  77.             Element var5 = var2.getElement(var3 + 1);
  78.             if (var5.isLeaf()) {
  79.                javax.swing.text.ElementIterator.StackItem.access$300(var1);
  80.             } else {
  81.                this.elementStack.push(new StackItem(this, var5, (1)null));
  82.             }
  83.  
  84.             return var5;
  85.          } else {
  86.             this.elementStack.pop();
  87.             if (!this.elementStack.isEmpty()) {
  88.                StackItem var4 = (StackItem)this.elementStack.peek();
  89.                javax.swing.text.ElementIterator.StackItem.access$300(var4);
  90.                return this.next();
  91.             } else {
  92.                return null;
  93.             }
  94.          }
  95.       }
  96.    }
  97.  
  98.    public Element previous() {
  99.       int var1;
  100.       if (this.elementStack != null && (var1 = this.elementStack.size()) != 0) {
  101.          StackItem var2 = (StackItem)this.elementStack.peek();
  102.          Element var3 = javax.swing.text.ElementIterator.StackItem.access$100(var2);
  103.          int var4 = javax.swing.text.ElementIterator.StackItem.access$200(var2);
  104.          if (var4 > 0) {
  105.             --var4;
  106.             return this.getDeepestLeaf(var3.getElement(var4));
  107.          } else if (var4 == 0) {
  108.             return var3;
  109.          } else if (var4 == -1) {
  110.             if (var1 == 1) {
  111.                return null;
  112.             } else {
  113.                Object var5 = this.elementStack.pop();
  114.                var2 = (StackItem)this.elementStack.peek();
  115.                this.elementStack.push(var5);
  116.                var3 = javax.swing.text.ElementIterator.StackItem.access$100(var2);
  117.                var4 = javax.swing.text.ElementIterator.StackItem.access$200(var2);
  118.                return var4 == -1 ? var3 : this.getDeepestLeaf(var3.getElement(var4));
  119.             }
  120.          } else {
  121.             return null;
  122.          }
  123.       } else {
  124.          return null;
  125.       }
  126.    }
  127.  
  128.    private Element getDeepestLeaf(Element var1) {
  129.       if (var1.isLeaf()) {
  130.          return var1;
  131.       } else {
  132.          int var2 = var1.getElementCount();
  133.          return var2 == 0 ? var1 : this.getDeepestLeaf(var1.getElement(var2 - 1));
  134.       }
  135.    }
  136.  
  137.    private void dumpTree() {
  138.       Element var1;
  139.       while((var1 = this.next()) != null) {
  140.          System.out.println("elem: " + var1.getName());
  141.          AttributeSet var2 = var1.getAttributes();
  142.          String var3 = "";
  143.          Enumeration var4 = var2.getAttributeNames();
  144.  
  145.          while(var4.hasMoreElements()) {
  146.             Object var5 = var4.nextElement();
  147.             Object var6 = var2.getAttribute(var5);
  148.             if (var6 instanceof AttributeSet) {
  149.                var3 = var3 + var5 + "=**AttributeSet** ";
  150.             } else {
  151.                var3 = var3 + var5 + "=" + var6 + " ";
  152.             }
  153.          }
  154.  
  155.          System.out.println("attributes: " + var3);
  156.       }
  157.  
  158.    }
  159. }
  160.