home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- import java.util.Vector;
-
- public class PlainDocument extends AbstractDocument {
- public static final String tabSizeAttribute = "tabSize";
- public static final String lineLimitAttribute = "lineLimit";
- private AbstractDocument.AbstractElement defaultRoot;
- private Vector added;
- private Vector removed;
-
- public PlainDocument() {
- this(new GapContent());
- }
-
- protected PlainDocument(AbstractDocument.Content var1) {
- super(var1);
- this.added = new Vector();
- this.removed = new Vector();
- ((AbstractDocument)this).putProperty("tabSize", new Integer(8));
- this.defaultRoot = this.createDefaultRoot();
- }
-
- public Element getDefaultRootElement() {
- return this.defaultRoot;
- }
-
- protected AbstractDocument.AbstractElement createDefaultRoot() {
- AbstractDocument.BranchElement var1 = (AbstractDocument.BranchElement)((AbstractDocument)this).createBranchElement((Element)null, (AttributeSet)null);
- Element var2 = ((AbstractDocument)this).createLeafElement(var1, (AttributeSet)null, 0, 1);
- Element[] var3 = new Element[]{var2};
- var1.replace(0, 0, var3);
- return var1;
- }
-
- public Element getParagraphElement(int var1) {
- Element var2 = this.getDefaultRootElement();
- return var2.getElement(var2.getElementIndex(var1));
- }
-
- protected void insertUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
- this.removed.removeAllElements();
- this.added.removeAllElements();
- AbstractDocument.BranchElement var3 = (AbstractDocument.BranchElement)this.getDefaultRootElement();
- int var4 = var1.getOffset();
- int var5 = var1.getLength();
- if (var4 > 0) {
- --var4;
- ++var5;
- }
-
- int var6 = var3.getElementIndex(var4);
- Element var7 = var3.getElement(var6);
- int var8 = var7.getStartOffset();
- int var9 = var7.getEndOffset();
- int var10 = var8;
-
- try {
- String var11 = ((AbstractDocument)this).getText(var4, var5);
- boolean var12 = false;
-
- for(int var13 = 0; var13 < var5; ++var13) {
- char var14 = var11.charAt(var13);
- if (var14 == '\n') {
- int var15 = var4 + var13 + 1;
- this.added.addElement(((AbstractDocument)this).createLeafElement(var3, (AttributeSet)null, var10, var15));
- var10 = var15;
- var12 = true;
- }
- }
-
- if (var12) {
- int var19 = 1;
- this.removed.addElement(var7);
- if (var4 + var5 == var9 && var10 != var9 && var6 + 1 < var3.getElementCount()) {
- ++var19;
- Element var21 = var3.getElement(var6 + 1);
- this.removed.addElement(var21);
- var9 = var21.getEndOffset();
- }
-
- if (var10 < var9) {
- this.added.addElement(((AbstractDocument)this).createLeafElement(var3, (AttributeSet)null, var10, var9));
- }
-
- Element[] var22 = new Element[this.added.size()];
- this.added.copyInto(var22);
- Element[] var16 = new Element[this.removed.size()];
- this.removed.copyInto(var16);
- AbstractDocument.ElementEdit var17 = new AbstractDocument.ElementEdit(var3, var6, var16, var22);
- var1.addEdit(var17);
- var3.replace(var6, var16.length, var22);
- }
-
- if (Utilities.isComposedTextAttributeDefined(var2)) {
- this.insertComposedTextUpdate(var1, var2);
- }
- } catch (BadLocationException var18) {
- throw new Error("Internal error: " + ((Throwable)var18).toString());
- }
-
- super.insertUpdate(var1, var2);
- }
-
- protected void removeUpdate(AbstractDocument.DefaultDocumentEvent var1) {
- this.removed.removeAllElements();
- AbstractDocument.BranchElement var2 = (AbstractDocument.BranchElement)this.getDefaultRootElement();
- int var3 = var1.getOffset();
- int var4 = var1.getLength();
- int var5 = var2.getElementIndex(var3);
- int var6 = var2.getElementIndex(var3 + var4);
- if (var5 != var6) {
- for(int var7 = var5; var7 <= var6; ++var7) {
- this.removed.addElement(var2.getElement(var7));
- }
-
- int var8 = var2.getElement(var5).getStartOffset();
- int var9 = var2.getElement(var6).getEndOffset();
- Element[] var10 = new Element[]{((AbstractDocument)this).createLeafElement(var2, (AttributeSet)null, var8, var9)};
- Element[] var11 = new Element[this.removed.size()];
- this.removed.copyInto(var11);
- AbstractDocument.ElementEdit var12 = new AbstractDocument.ElementEdit(var2, var5, var11, var10);
- var1.addEdit(var12);
- var2.replace(var5, var11.length, var10);
- } else {
- Element var13 = var2.getElement(var5);
- if (!var13.isLeaf()) {
- Element var14 = var13.getElement(var13.getElementIndex(var3));
- if (Utilities.isComposedTextElement(var14)) {
- Element[] var15 = new Element[]{((AbstractDocument)this).createLeafElement(var2, (AttributeSet)null, var13.getStartOffset(), var13.getEndOffset())};
- Element[] var16 = new Element[]{var13};
- AbstractDocument.ElementEdit var17 = new AbstractDocument.ElementEdit(var2, var5, var16, var15);
- var1.addEdit(var17);
- var2.replace(var5, 1, var15);
- }
- }
- }
-
- super.removeUpdate(var1);
- }
-
- private void insertComposedTextUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
- this.added.removeAllElements();
- AbstractDocument.BranchElement var3 = (AbstractDocument.BranchElement)this.getDefaultRootElement();
- int var4 = var1.getOffset();
- int var5 = var1.getLength();
- int var6 = var3.getElementIndex(var4);
- Element var7 = var3.getElement(var6);
- int var8 = var7.getStartOffset();
- int var9 = var7.getEndOffset();
- AbstractDocument.BranchElement[] var10 = new AbstractDocument.BranchElement[]{(AbstractDocument.BranchElement)((AbstractDocument)this).createBranchElement(var3, (AttributeSet)null)};
- Element[] var11 = new Element[]{var7};
- if (var8 != var4) {
- this.added.addElement(((AbstractDocument)this).createLeafElement(var10[0], (AttributeSet)null, var8, var4));
- }
-
- this.added.addElement(((AbstractDocument)this).createLeafElement(var10[0], var2, var4, var4 + var5));
- if (var9 != var4 + var5) {
- this.added.addElement(((AbstractDocument)this).createLeafElement(var10[0], (AttributeSet)null, var4 + var5, var9));
- }
-
- Element[] var12 = new Element[this.added.size()];
- this.added.copyInto(var12);
- AbstractDocument.ElementEdit var13 = new AbstractDocument.ElementEdit(var3, var6, var11, var10);
- var1.addEdit(var13);
- var10[0].replace(0, 0, var12);
- var3.replace(var6, 1, var10);
- }
- }
-