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 / PlainDocument.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.1 KB  |  170 lines

  1. package javax.swing.text;
  2.  
  3. import java.util.Vector;
  4.  
  5. public class PlainDocument extends AbstractDocument {
  6.    public static final String tabSizeAttribute = "tabSize";
  7.    public static final String lineLimitAttribute = "lineLimit";
  8.    private AbstractDocument.AbstractElement defaultRoot;
  9.    private Vector added;
  10.    private Vector removed;
  11.  
  12.    public PlainDocument() {
  13.       this(new GapContent());
  14.    }
  15.  
  16.    protected PlainDocument(AbstractDocument.Content var1) {
  17.       super(var1);
  18.       this.added = new Vector();
  19.       this.removed = new Vector();
  20.       ((AbstractDocument)this).putProperty("tabSize", new Integer(8));
  21.       this.defaultRoot = this.createDefaultRoot();
  22.    }
  23.  
  24.    public Element getDefaultRootElement() {
  25.       return this.defaultRoot;
  26.    }
  27.  
  28.    protected AbstractDocument.AbstractElement createDefaultRoot() {
  29.       AbstractDocument.BranchElement var1 = (AbstractDocument.BranchElement)((AbstractDocument)this).createBranchElement((Element)null, (AttributeSet)null);
  30.       Element var2 = ((AbstractDocument)this).createLeafElement(var1, (AttributeSet)null, 0, 1);
  31.       Element[] var3 = new Element[]{var2};
  32.       var1.replace(0, 0, var3);
  33.       return var1;
  34.    }
  35.  
  36.    public Element getParagraphElement(int var1) {
  37.       Element var2 = this.getDefaultRootElement();
  38.       return var2.getElement(var2.getElementIndex(var1));
  39.    }
  40.  
  41.    protected void insertUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
  42.       this.removed.removeAllElements();
  43.       this.added.removeAllElements();
  44.       AbstractDocument.BranchElement var3 = (AbstractDocument.BranchElement)this.getDefaultRootElement();
  45.       int var4 = var1.getOffset();
  46.       int var5 = var1.getLength();
  47.       if (var4 > 0) {
  48.          --var4;
  49.          ++var5;
  50.       }
  51.  
  52.       int var6 = var3.getElementIndex(var4);
  53.       Element var7 = var3.getElement(var6);
  54.       int var8 = var7.getStartOffset();
  55.       int var9 = var7.getEndOffset();
  56.       int var10 = var8;
  57.  
  58.       try {
  59.          String var11 = ((AbstractDocument)this).getText(var4, var5);
  60.          boolean var12 = false;
  61.  
  62.          for(int var13 = 0; var13 < var5; ++var13) {
  63.             char var14 = var11.charAt(var13);
  64.             if (var14 == '\n') {
  65.                int var15 = var4 + var13 + 1;
  66.                this.added.addElement(((AbstractDocument)this).createLeafElement(var3, (AttributeSet)null, var10, var15));
  67.                var10 = var15;
  68.                var12 = true;
  69.             }
  70.          }
  71.  
  72.          if (var12) {
  73.             int var19 = 1;
  74.             this.removed.addElement(var7);
  75.             if (var4 + var5 == var9 && var10 != var9 && var6 + 1 < var3.getElementCount()) {
  76.                ++var19;
  77.                Element var21 = var3.getElement(var6 + 1);
  78.                this.removed.addElement(var21);
  79.                var9 = var21.getEndOffset();
  80.             }
  81.  
  82.             if (var10 < var9) {
  83.                this.added.addElement(((AbstractDocument)this).createLeafElement(var3, (AttributeSet)null, var10, var9));
  84.             }
  85.  
  86.             Element[] var22 = new Element[this.added.size()];
  87.             this.added.copyInto(var22);
  88.             Element[] var16 = new Element[this.removed.size()];
  89.             this.removed.copyInto(var16);
  90.             AbstractDocument.ElementEdit var17 = new AbstractDocument.ElementEdit(var3, var6, var16, var22);
  91.             var1.addEdit(var17);
  92.             var3.replace(var6, var16.length, var22);
  93.          }
  94.  
  95.          if (Utilities.isComposedTextAttributeDefined(var2)) {
  96.             this.insertComposedTextUpdate(var1, var2);
  97.          }
  98.       } catch (BadLocationException var18) {
  99.          throw new Error("Internal error: " + ((Throwable)var18).toString());
  100.       }
  101.  
  102.       super.insertUpdate(var1, var2);
  103.    }
  104.  
  105.    protected void removeUpdate(AbstractDocument.DefaultDocumentEvent var1) {
  106.       this.removed.removeAllElements();
  107.       AbstractDocument.BranchElement var2 = (AbstractDocument.BranchElement)this.getDefaultRootElement();
  108.       int var3 = var1.getOffset();
  109.       int var4 = var1.getLength();
  110.       int var5 = var2.getElementIndex(var3);
  111.       int var6 = var2.getElementIndex(var3 + var4);
  112.       if (var5 != var6) {
  113.          for(int var7 = var5; var7 <= var6; ++var7) {
  114.             this.removed.addElement(var2.getElement(var7));
  115.          }
  116.  
  117.          int var8 = var2.getElement(var5).getStartOffset();
  118.          int var9 = var2.getElement(var6).getEndOffset();
  119.          Element[] var10 = new Element[]{((AbstractDocument)this).createLeafElement(var2, (AttributeSet)null, var8, var9)};
  120.          Element[] var11 = new Element[this.removed.size()];
  121.          this.removed.copyInto(var11);
  122.          AbstractDocument.ElementEdit var12 = new AbstractDocument.ElementEdit(var2, var5, var11, var10);
  123.          var1.addEdit(var12);
  124.          var2.replace(var5, var11.length, var10);
  125.       } else {
  126.          Element var13 = var2.getElement(var5);
  127.          if (!var13.isLeaf()) {
  128.             Element var14 = var13.getElement(var13.getElementIndex(var3));
  129.             if (Utilities.isComposedTextElement(var14)) {
  130.                Element[] var15 = new Element[]{((AbstractDocument)this).createLeafElement(var2, (AttributeSet)null, var13.getStartOffset(), var13.getEndOffset())};
  131.                Element[] var16 = new Element[]{var13};
  132.                AbstractDocument.ElementEdit var17 = new AbstractDocument.ElementEdit(var2, var5, var16, var15);
  133.                var1.addEdit(var17);
  134.                var2.replace(var5, 1, var15);
  135.             }
  136.          }
  137.       }
  138.  
  139.       super.removeUpdate(var1);
  140.    }
  141.  
  142.    private void insertComposedTextUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
  143.       this.added.removeAllElements();
  144.       AbstractDocument.BranchElement var3 = (AbstractDocument.BranchElement)this.getDefaultRootElement();
  145.       int var4 = var1.getOffset();
  146.       int var5 = var1.getLength();
  147.       int var6 = var3.getElementIndex(var4);
  148.       Element var7 = var3.getElement(var6);
  149.       int var8 = var7.getStartOffset();
  150.       int var9 = var7.getEndOffset();
  151.       AbstractDocument.BranchElement[] var10 = new AbstractDocument.BranchElement[]{(AbstractDocument.BranchElement)((AbstractDocument)this).createBranchElement(var3, (AttributeSet)null)};
  152.       Element[] var11 = new Element[]{var7};
  153.       if (var8 != var4) {
  154.          this.added.addElement(((AbstractDocument)this).createLeafElement(var10[0], (AttributeSet)null, var8, var4));
  155.       }
  156.  
  157.       this.added.addElement(((AbstractDocument)this).createLeafElement(var10[0], var2, var4, var4 + var5));
  158.       if (var9 != var4 + var5) {
  159.          this.added.addElement(((AbstractDocument)this).createLeafElement(var10[0], (AttributeSet)null, var4 + var5, var9));
  160.       }
  161.  
  162.       Element[] var12 = new Element[this.added.size()];
  163.       this.added.copyInto(var12);
  164.       AbstractDocument.ElementEdit var13 = new AbstractDocument.ElementEdit(var3, var6, var11, var10);
  165.       var1.addEdit(var13);
  166.       var10[0].replace(0, 0, var12);
  167.       var3.replace(var6, 1, var10);
  168.    }
  169. }
  170.