home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.text;
-
- import com.sun.java.swing.event.UndoableEditEvent;
- import com.sun.java.swing.event.DocumentEvent.EventType;
- import com.sun.java.swing.undo.CompoundEdit;
- import java.awt.Color;
- import java.awt.Font;
- import java.util.Vector;
-
- public class DefaultStyledDocument extends AbstractDocument implements StyledDocument {
- public static final int BUFFER_SIZE_DEFAULT = 4096;
- private ElementBuffer buffer;
-
- public DefaultStyledDocument(AbstractDocument.Content var1, StyleContext var2) {
- super(var1, var2);
- this.buffer = new ElementBuffer(this, this.createDefaultRoot());
- Style var3 = var2.getStyle("default");
- this.setLogicalStyle(0, var3);
- }
-
- public DefaultStyledDocument(StyleContext var1) {
- this(new StringContent(4096), var1);
- }
-
- public DefaultStyledDocument() {
- this(new StringContent(4096), new StyleContext());
- }
-
- public Element getDefaultRootElement() {
- return this.buffer.getRootElement();
- }
-
- protected void insert(int var1, ElementSpec[] var2) throws BadLocationException {
- try {
- ((AbstractDocument)this).writeLock();
- AbstractDocument.Content var5 = ((AbstractDocument)this).getContent();
- int var6 = var2.length;
- int var7 = var1;
-
- for(int var8 = 0; var8 < var6; ++var8) {
- ElementSpec var9 = var2[var8];
- if (var9.getLength() > 0) {
- var5.insertString(var7, new String(var9.getArray(), var9.getOffset(), var9.getLength()));
- var7 += var9.getLength();
- }
- }
-
- int var13 = var7 - var1;
- this.getClass();
- AbstractDocument.DefaultDocumentEvent var10 = new AbstractDocument.DefaultDocumentEvent(this, var1, var13, EventType.CHANGE);
- this.buffer.insert(var1, var13, var2, var10);
- ((CompoundEdit)var10).end();
- ((AbstractDocument)this).fireInsertUpdate(var10);
- ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var10));
- } finally {
- ((AbstractDocument)this).writeUnlock();
- }
-
- }
-
- public Style addStyle(String var1, Style var2) {
- StyleContext var3 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- return var3.addStyle(var1, var2);
- }
-
- public void removeStyle(String var1) {
- StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- var2.removeStyle(var1);
- }
-
- public Style getStyle(String var1) {
- StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- return var2.getStyle(var1);
- }
-
- public void setLogicalStyle(int var1, Style var2) {
- Element var3 = this.getParagraphElement(var1);
- if (var3 != null && var3 instanceof AbstractDocument.AbstractElement) {
- try {
- ((AbstractDocument)this).writeLock();
- StyleChangeUndoableEdit var6 = new StyleChangeUndoableEdit((AbstractDocument.AbstractElement)var3, var2);
- ((AbstractDocument.AbstractElement)var3).setResolveParent(var2);
- int var7 = var3.getStartOffset();
- int var8 = var3.getEndOffset();
- this.getClass();
- AbstractDocument.DefaultDocumentEvent var9 = new AbstractDocument.DefaultDocumentEvent(this, var7, var8 - var7, EventType.CHANGE);
- var9.addEdit(var6);
- ((CompoundEdit)var9).end();
- ((AbstractDocument)this).fireChangedUpdate(var9);
- ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var9));
- } finally {
- ((AbstractDocument)this).writeUnlock();
- }
-
- }
- }
-
- public Style getLogicalStyle(int var1) {
- Style var2 = null;
- Element var3 = this.getParagraphElement(var1);
- if (var3 != null) {
- AttributeSet var4 = var3.getAttributes();
- var2 = (Style)var4.getResolveParent();
- }
-
- return var2;
- }
-
- public void setCharacterAttributes(int var1, int var2, AttributeSet var3, boolean var4) {
- try {
- ((AbstractDocument)this).writeLock();
- this.getClass();
- AbstractDocument.DefaultDocumentEvent var7 = new AbstractDocument.DefaultDocumentEvent(this, var1, var2, EventType.CHANGE);
- this.buffer.change(var1, var2, var7);
- AttributeSet var8 = var3.copyAttributes();
- int var9 = Integer.MAX_VALUE;
-
- for(int var10 = var1; var10 < var1 + var2; var10 = var9) {
- Element var11 = this.getCharacterElement(var10);
- var9 = var11.getEndOffset();
- MutableAttributeSet var12 = (MutableAttributeSet)var11.getAttributes();
- var7.addEdit(new AttributeUndoableEdit(var11, var8, var4));
- if (var4) {
- var12.removeAttributes(var12);
- }
-
- var12.addAttributes(var3);
- }
-
- ((CompoundEdit)var7).end();
- ((AbstractDocument)this).fireChangedUpdate(var7);
- ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var7));
- } finally {
- ((AbstractDocument)this).writeUnlock();
- }
-
- }
-
- public void setParagraphAttributes(int var1, int var2, AttributeSet var3, boolean var4) {
- try {
- ((AbstractDocument)this).writeLock();
- this.getClass();
- AbstractDocument.DefaultDocumentEvent var7 = new AbstractDocument.DefaultDocumentEvent(this, var1, var2, EventType.CHANGE);
- AttributeSet var8 = var3.copyAttributes();
- Element var9 = this.getDefaultRootElement();
- int var10 = var9.getElementIndex(var1);
- int var11 = var9.getElementIndex(var1 + (var2 > 0 ? var2 - 1 : 0));
-
- for(int var12 = var10; var12 <= var11; ++var12) {
- Element var13 = var9.getElement(var12);
- MutableAttributeSet var14 = (MutableAttributeSet)var13.getAttributes();
- var7.addEdit(new AttributeUndoableEdit(var13, var8, var4));
- if (var4) {
- var14.removeAttributes(var14);
- }
-
- var14.addAttributes(var3);
- }
-
- ((CompoundEdit)var7).end();
- ((AbstractDocument)this).fireChangedUpdate(var7);
- ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var7));
- } finally {
- ((AbstractDocument)this).writeUnlock();
- }
-
- }
-
- public Element getParagraphElement(int var1) {
- Element var2 = this.getDefaultRootElement();
- int var3 = var2.getElementIndex(var1);
- Element var4 = var2.getElement(var3);
- return var4;
- }
-
- public Element getCharacterElement(int var1) {
- Object var2 = null;
-
- int var3;
- for(var4 = this.getDefaultRootElement(); !var4.isLeaf(); var4 = var4.getElement(var3)) {
- var3 = var4.getElementIndex(var1);
- }
-
- return var4;
- }
-
- protected void insertUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
- int var3 = var1.getOffset();
- int var4 = var1.getLength();
- if (var2 == null) {
- var2 = SimpleAttributeSet.EMPTY;
- }
-
- Element var5 = this.getParagraphElement(var3);
- Element var6 = var5.getElement(var5.getElementIndex(var3));
- AttributeSet var7 = var5.getAttributes();
- AttributeSet var8 = var6.getAttributes();
-
- try {
- boolean var9 = false;
- boolean var10 = false;
- Segment var11 = new Segment();
- Vector var12 = new Vector();
- ((AbstractDocument)this).getText(var3, var4, var11);
- char[] var13 = var11.array;
- int var14 = var11.offset + var11.count;
- int var15 = var11.offset;
-
- for(int var16 = var11.offset; var16 < var14; ++var16) {
- if (var13[var16] == '\n') {
- int var17 = var16 + 1;
- var12.addElement(new ElementSpec(var2, (short)3, var17 - var15));
- var12.addElement(new ElementSpec((AttributeSet)null, (short)2));
- var12.addElement(new ElementSpec(var7, (short)1));
- var15 = var17;
- }
- }
-
- if (var15 < var14) {
- var12.addElement(new ElementSpec(var2, (short)3, var14 - var15));
- } else {
- var10 = true;
- }
-
- if (var3 > 0) {
- ((AbstractDocument)this).getText(var3 - 1, 1, var11);
- if (var11.array[var11.offset] == '\n') {
- var9 = true;
- ElementSpec var20 = new ElementSpec(var7, (short)1);
- var12.insertElementAt(var20, 0);
- var20 = new ElementSpec(var7, (short)2);
- var12.insertElementAt(var20, 0);
- }
- }
-
- ElementSpec var22 = (ElementSpec)var12.firstElement();
- if (!var9 && var8.isEqual(var2) && var3 > 0) {
- var22.setDirection((short)4);
- }
-
- if ((var12.size() > 1 || var22.getDirection() != 4) && !var10) {
- ElementSpec var18 = (ElementSpec)var12.lastElement();
- if (var6.getEndOffset() <= var3 + var4) {
- var8 = this.getCharacterElement(var3 + var4).getAttributes();
- }
-
- if (var8.isEqual(var2)) {
- var18.setDirection((short)5);
- }
- }
-
- ElementSpec[] var23 = new ElementSpec[var12.size()];
- var12.copyInto(var23);
- this.buffer.insert(var3, var4, var23, var1);
- } catch (BadLocationException var19) {
- }
- }
-
- protected void removeUpdate(AbstractDocument.DefaultDocumentEvent var1) {
- this.buffer.remove(var1.getOffset(), var1.getLength(), var1);
- }
-
- protected AbstractDocument.AbstractElement createDefaultRoot() {
- ((AbstractDocument)this).writeLock();
- SectionElement var1 = new SectionElement(this);
- this.getClass();
- AbstractDocument.BranchElement var2 = new AbstractDocument.BranchElement(this, var1, (AttributeSet)null);
- this.getClass();
- AbstractDocument.LeafElement var3 = new AbstractDocument.LeafElement(this, var2, (AttributeSet)null, 0, 1);
- Element[] var4 = new Element[]{var3};
- var2.replace(0, 0, var4);
- var4[0] = var2;
- ((AbstractDocument.BranchElement)var1).replace(0, 0, var4);
- ((AbstractDocument)this).writeUnlock();
- return var1;
- }
-
- public Color getForeground(AttributeSet var1) {
- return StyleConstants.getForeground(var1);
- }
-
- public Color getBackground(AttributeSet var1) {
- throw new Error("not implemented");
- }
-
- public Font getFont(AttributeSet var1) {
- StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- return var2.getFont(var1);
- }
- }
-