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 / AbstractDocument$BranchElement.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.4 KB  |  155 lines

  1. package javax.swing.text;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Vector;
  5.  
  6. public class AbstractDocument$BranchElement extends AbstractDocument.AbstractElement {
  7.    private AbstractDocument.AbstractElement[] children;
  8.    private int nchildren;
  9.    private int lastIndex;
  10.    // $FF: synthetic field
  11.    private final AbstractDocument this$0;
  12.  
  13.    public AbstractDocument$BranchElement(AbstractDocument var1, Element var2, AttributeSet var3) {
  14.       super(var1, var2, var3);
  15.       this.this$0 = var1;
  16.       this.children = new AbstractDocument.AbstractElement[1];
  17.       this.nchildren = 0;
  18.       this.lastIndex = -1;
  19.    }
  20.  
  21.    public Element positionToElement(int var1) {
  22.       int var2 = this.getElementIndex(var1);
  23.       AbstractDocument.AbstractElement var3 = this.children[var2];
  24.       int var4 = var3.getStartOffset();
  25.       int var5 = var3.getEndOffset();
  26.       return var1 >= var4 && var1 < var5 ? var3 : null;
  27.    }
  28.  
  29.    public void replace(int var1, int var2, Element[] var3) {
  30.       int var4 = var3.length - var2;
  31.       int var5 = var1 + var2;
  32.       int var6 = this.nchildren - var5;
  33.       int var7 = var5 + var4;
  34.       if (this.nchildren + var4 >= this.children.length) {
  35.          int var8 = Math.max(2 * this.children.length, this.nchildren + var4);
  36.          AbstractDocument.AbstractElement[] var9 = new AbstractDocument.AbstractElement[var8];
  37.          System.arraycopy(this.children, 0, var9, 0, var1);
  38.          System.arraycopy(var3, 0, var9, var1, var3.length);
  39.          System.arraycopy(this.children, var5, var9, var7, var6);
  40.          this.children = var9;
  41.       } else {
  42.          System.arraycopy(this.children, var5, this.children, var7, var6);
  43.          System.arraycopy(var3, 0, this.children, var1, var3.length);
  44.       }
  45.  
  46.       this.nchildren += var4;
  47.    }
  48.  
  49.    public String toString() {
  50.       return "BranchElement(" + this.getName() + ") " + this.getStartOffset() + "," + this.getEndOffset() + "\n";
  51.    }
  52.  
  53.    public String getName() {
  54.       String var1 = super.getName();
  55.       if (var1 == null) {
  56.          var1 = "paragraph";
  57.       }
  58.  
  59.       return var1;
  60.    }
  61.  
  62.    public int getStartOffset() {
  63.       return this.children[0].getStartOffset();
  64.    }
  65.  
  66.    public int getEndOffset() {
  67.       AbstractDocument.AbstractElement var1 = this.children[this.nchildren - 1];
  68.       return var1.getEndOffset();
  69.    }
  70.  
  71.    public Element getElement(int var1) {
  72.       return var1 < this.nchildren ? this.children[var1] : null;
  73.    }
  74.  
  75.    public int getElementCount() {
  76.       return this.nchildren;
  77.    }
  78.  
  79.    public int getElementIndex(int var1) {
  80.       int var3 = 0;
  81.       int var4 = this.nchildren - 1;
  82.       int var5 = 0;
  83.       int var6 = this.getStartOffset();
  84.       if (this.nchildren == 0) {
  85.          return 0;
  86.       } else if (var1 >= this.getEndOffset()) {
  87.          return this.nchildren - 1;
  88.       } else {
  89.          if (this.lastIndex >= var3 && this.lastIndex <= var4) {
  90.             AbstractDocument.AbstractElement var8 = this.children[this.lastIndex];
  91.             var6 = var8.getStartOffset();
  92.             int var7 = var8.getEndOffset();
  93.             if (var1 >= var6 && var1 < var7) {
  94.                return this.lastIndex;
  95.             }
  96.  
  97.             if (var1 < var6) {
  98.                var4 = this.lastIndex;
  99.             } else {
  100.                var3 = this.lastIndex;
  101.             }
  102.          }
  103.  
  104.          while(var3 <= var4) {
  105.             var5 = var3 + (var4 - var3) / 2;
  106.             AbstractDocument.AbstractElement var10 = this.children[var5];
  107.             var6 = var10.getStartOffset();
  108.             int var9 = var10.getEndOffset();
  109.             if (var1 >= var6 && var1 < var9) {
  110.                this.lastIndex = var5;
  111.                return var5;
  112.             }
  113.  
  114.             if (var1 < var6) {
  115.                var4 = var5 - 1;
  116.             } else {
  117.                var3 = var5 + 1;
  118.             }
  119.          }
  120.  
  121.          int var2;
  122.          if (var1 < var6) {
  123.             var2 = var5;
  124.          } else {
  125.             var2 = var5 + 1;
  126.          }
  127.  
  128.          this.lastIndex = var2;
  129.          return var2;
  130.       }
  131.    }
  132.  
  133.    public boolean isLeaf() {
  134.       return false;
  135.    }
  136.  
  137.    public boolean getAllowsChildren() {
  138.       return true;
  139.    }
  140.  
  141.    public Enumeration children() {
  142.       if (this.nchildren == 0) {
  143.          return null;
  144.       } else {
  145.          Vector var1 = new Vector(this.nchildren);
  146.  
  147.          for(int var2 = 0; var2 < this.nchildren; ++var2) {
  148.             var1.addElement(this.children[var2]);
  149.          }
  150.  
  151.          return var1.elements();
  152.       }
  153.    }
  154. }
  155.