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

  1. package com.sun.java.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 StringContent());
  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.       this.getClass();
  30.       AbstractDocument.BranchElement var1 = new AbstractDocument.BranchElement(this, (Element)null, (AttributeSet)null);
  31.       this.getClass();
  32.       AbstractDocument.LeafElement var2 = new AbstractDocument.LeafElement(this, var1, (AttributeSet)null, 0, 1);
  33.       Element[] var3 = new Element[]{var2};
  34.       var1.replace(0, 0, var3);
  35.       return var1;
  36.    }
  37.  
  38.    protected void insertUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
  39.       this.removed.removeAllElements();
  40.       this.added.removeAllElements();
  41.       AbstractDocument.BranchElement var3 = (AbstractDocument.BranchElement)this.getDefaultRootElement();
  42.       int var4 = var1.getOffset();
  43.       int var5 = var1.getLength();
  44.       if (var4 > 0) {
  45.          --var4;
  46.          ++var5;
  47.       }
  48.  
  49.       int var6 = var3.getElementIndex(var4);
  50.       Element var7 = var3.getElement(var6);
  51.       int var8 = var7.getStartOffset();
  52.       int var9 = var7.getEndOffset();
  53.       int var10 = var8;
  54.  
  55.       try {
  56.          String var11 = ((AbstractDocument)this).getText(var4, var5);
  57.          boolean var12 = false;
  58.  
  59.          for(int var13 = 0; var13 < var5; ++var13) {
  60.             char var14 = var11.charAt(var13);
  61.             if (var14 == '\n') {
  62.                int var15 = var4 + var13 + 1;
  63.                Vector var10000 = this.added;
  64.                this.getClass();
  65.                var10000.addElement(new AbstractDocument.LeafElement(this, var3, (AttributeSet)null, var10, var15));
  66.                var10 = var15;
  67.                var12 = true;
  68.             }
  69.          }
  70.  
  71.          if (var12) {
  72.             int var19 = 1;
  73.             this.removed.addElement(var7);
  74.             if (var4 + var5 == var9 && var10 != var9 && var6 + 1 < var3.getElementCount()) {
  75.                ++var19;
  76.                Element var21 = var3.getElement(var6 + 1);
  77.                this.removed.addElement(var21);
  78.                var9 = var21.getEndOffset();
  79.             }
  80.  
  81.             if (var10 < var9) {
  82.                Vector var23 = this.added;
  83.                this.getClass();
  84.                var23.addElement(new AbstractDocument.LeafElement(this, var3, (AttributeSet)null, var10, var9));
  85.             }
  86.  
  87.             Element[] var22 = new Element[this.added.size()];
  88.             this.added.copyInto(var22);
  89.             Element[] var16 = new Element[this.removed.size()];
  90.             this.removed.copyInto(var16);
  91.             AbstractDocument.ElementEdit var17 = new AbstractDocument.ElementEdit(var3, var6, var16, var22);
  92.             var1.addEdit(var17);
  93.             var3.replace(var6, var16.length, var22);
  94.          }
  95.       } catch (BadLocationException var18) {
  96.          throw new Error("Internal error: " + ((Throwable)var18).toString());
  97.       }
  98.    }
  99.  
  100.    protected void removeUpdate(AbstractDocument.DefaultDocumentEvent var1) {
  101.       this.removed.removeAllElements();
  102.       AbstractDocument.BranchElement var2 = (AbstractDocument.BranchElement)this.getDefaultRootElement();
  103.       int var3 = var1.getOffset();
  104.       int var4 = var1.getLength();
  105.       int var5 = var2.getElementIndex(var3);
  106.       int var6 = var2.getElementIndex(var3 + var4);
  107.       if (var5 != var6) {
  108.          for(int var7 = var5; var7 <= var6; ++var7) {
  109.             this.removed.addElement(var2.getElement(var7));
  110.          }
  111.  
  112.          int var8 = var2.getElement(var5).getStartOffset();
  113.          int var9 = var2.getElement(var6).getEndOffset();
  114.          Element[] var10 = new Element[1];
  115.          this.getClass();
  116.          var10[0] = new AbstractDocument.LeafElement(this, var2, (AttributeSet)null, var8, var9);
  117.          Element[] var11 = new Element[this.removed.size()];
  118.          this.removed.copyInto(var11);
  119.          AbstractDocument.ElementEdit var12 = new AbstractDocument.ElementEdit(var2, var5, var11, var10);
  120.          var1.addEdit(var12);
  121.          var2.replace(var5, var11.length, var10);
  122.       }
  123.  
  124.    }
  125. }
  126.