home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / text / AbstractDocument$BranchElement.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  3.0 KB  |  135 lines

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