home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.text;
-
- import com.sun.java.swing.event.DocumentEvent;
- import com.sun.java.swing.event.DocumentListener;
- import com.sun.java.swing.event.EventListenerList;
- import com.sun.java.swing.event.UndoableEditEvent;
- import com.sun.java.swing.event.UndoableEditListener;
- import com.sun.java.swing.event.DocumentEvent.EventType;
- import com.sun.java.swing.undo.CompoundEdit;
- import com.sun.java.swing.undo.UndoableEdit;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.PrintStream;
- import java.io.Serializable;
- import java.util.Dictionary;
- import java.util.Hashtable;
-
- public abstract class AbstractDocument implements Document, Serializable {
- private transient int numReaders;
- private transient Thread currWriter;
- private Dictionary documentProperties;
- protected EventListenerList listenerList;
- private Content data;
- private AttributeContext context;
- private static final String BAD_LOCK_STATE = "document lock failure";
- protected static final String BAD_LOCATION = "document location failure";
- public static final String ParagraphElementName = "paragraph";
- public static final String ContentElementName = "content";
- public static final String SectionElementName = "section";
- public static final String ElementNameAttribute = "$ename";
- // $FF: synthetic field
- static Class class$com$sun$java$swing$event$DocumentListener;
- // $FF: synthetic field
- static Class class$com$sun$java$swing$event$UndoableEditListener;
-
- protected AbstractDocument(Content var1) {
- this(var1, StyleContext.getDefaultStyleContext());
- }
-
- protected AbstractDocument(Content var1, AttributeContext var2) {
- this.listenerList = new EventListenerList();
- this.data = var1;
- this.context = var2;
- }
-
- public Dictionary getDocumentProperties() {
- if (this.documentProperties == null) {
- this.documentProperties = new Hashtable(2);
- }
-
- return this.documentProperties;
- }
-
- public void setDocumentProperties(Dictionary var1) {
- this.documentProperties = var1;
- }
-
- protected void fireInsertUpdate(DocumentEvent var1) {
- Object[] var2 = this.listenerList.getListenerList();
-
- for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
- if (var2[var3] == (class$com$sun$java$swing$event$DocumentListener != null ? class$com$sun$java$swing$event$DocumentListener : (class$com$sun$java$swing$event$DocumentListener = class$("com.sun.java.swing.event.DocumentListener")))) {
- ((DocumentListener)var2[var3 + 1]).insertUpdate(var1);
- }
- }
-
- }
-
- protected void fireChangedUpdate(DocumentEvent var1) {
- Object[] var2 = this.listenerList.getListenerList();
-
- for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
- if (var2[var3] == (class$com$sun$java$swing$event$DocumentListener != null ? class$com$sun$java$swing$event$DocumentListener : (class$com$sun$java$swing$event$DocumentListener = class$("com.sun.java.swing.event.DocumentListener")))) {
- ((DocumentListener)var2[var3 + 1]).changedUpdate(var1);
- }
- }
-
- }
-
- protected void fireRemoveUpdate(DocumentEvent var1) {
- Object[] var2 = this.listenerList.getListenerList();
-
- for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
- if (var2[var3] == (class$com$sun$java$swing$event$DocumentListener != null ? class$com$sun$java$swing$event$DocumentListener : (class$com$sun$java$swing$event$DocumentListener = class$("com.sun.java.swing.event.DocumentListener")))) {
- ((DocumentListener)var2[var3 + 1]).removeUpdate(var1);
- }
- }
-
- }
-
- protected void fireUndoableEditUpdate(UndoableEditEvent var1) {
- Object[] var2 = this.listenerList.getListenerList();
-
- for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
- if (var2[var3] == (class$com$sun$java$swing$event$UndoableEditListener != null ? class$com$sun$java$swing$event$UndoableEditListener : (class$com$sun$java$swing$event$UndoableEditListener = class$("com.sun.java.swing.event.UndoableEditListener")))) {
- ((UndoableEditListener)var2[var3 + 1]).undoableEditHappened(var1);
- }
- }
-
- }
-
- public void render(Runnable var1) {
- try {
- this.readLock();
- var1.run();
- } finally {
- this.readUnlock();
- }
-
- }
-
- public int getLength() {
- return this.data.length() - 1;
- }
-
- public void addDocumentListener(DocumentListener var1) {
- this.listenerList.add(class$com$sun$java$swing$event$DocumentListener != null ? class$com$sun$java$swing$event$DocumentListener : (class$com$sun$java$swing$event$DocumentListener = class$("com.sun.java.swing.event.DocumentListener")), var1);
- }
-
- public void removeDocumentListener(DocumentListener var1) {
- this.listenerList.remove(class$com$sun$java$swing$event$DocumentListener != null ? class$com$sun$java$swing$event$DocumentListener : (class$com$sun$java$swing$event$DocumentListener = class$("com.sun.java.swing.event.DocumentListener")), var1);
- }
-
- public void addUndoableEditListener(UndoableEditListener var1) {
- this.listenerList.add(class$com$sun$java$swing$event$UndoableEditListener != null ? class$com$sun$java$swing$event$UndoableEditListener : (class$com$sun$java$swing$event$UndoableEditListener = class$("com.sun.java.swing.event.UndoableEditListener")), var1);
- }
-
- public void removeUndoableEditListener(UndoableEditListener var1) {
- this.listenerList.remove(class$com$sun$java$swing$event$UndoableEditListener != null ? class$com$sun$java$swing$event$UndoableEditListener : (class$com$sun$java$swing$event$UndoableEditListener = class$("com.sun.java.swing.event.UndoableEditListener")), var1);
- }
-
- public final Object getProperty(Object var1) {
- return this.getDocumentProperties().get(var1);
- }
-
- public final void putProperty(Object var1, Object var2) {
- if (var2 != null) {
- this.getDocumentProperties().put(var1, var2);
- } else {
- this.getDocumentProperties().remove(var1);
- }
- }
-
- public void remove(int var1, int var2) throws BadLocationException {
- if (var2 > 0) {
- try {
- this.writeLock();
- DefaultDocumentEvent var5 = new DefaultDocumentEvent(this, var1, var2, EventType.REMOVE);
- this.removeUpdate(var5);
- UndoableEdit var6 = this.data.remove(var1, var2);
- if (var6 != null) {
- var5.addEdit(var6);
- }
-
- ((CompoundEdit)var5).end();
- this.fireRemoveUpdate(var5);
- if (var6 != null) {
- this.fireUndoableEditUpdate(new UndoableEditEvent(this, var5));
- }
- } finally {
- this.writeUnlock();
- }
-
- }
- }
-
- public void insertString(int var1, String var2, AttributeSet var3) throws BadLocationException {
- if (var2 != null && var2.length() != 0) {
- try {
- this.writeLock();
- UndoableEdit var6 = this.data.insertString(var1, var2);
- DefaultDocumentEvent var7 = new DefaultDocumentEvent(this, var1, var2.length(), EventType.INSERT);
- if (var6 != null) {
- var7.addEdit(var6);
- }
-
- this.insertUpdate(var7, var3);
- ((CompoundEdit)var7).end();
- this.fireInsertUpdate(var7);
- if (var6 != null) {
- this.fireUndoableEditUpdate(new UndoableEditEvent(this, var7));
- }
- } finally {
- this.writeUnlock();
- }
-
- }
- }
-
- public String getText(int var1, int var2) throws BadLocationException {
- String var3 = this.data.getString(var1, var2);
- return var3;
- }
-
- public void getText(int var1, int var2, Segment var3) throws BadLocationException {
- this.data.getChars(var1, var2, var3);
- }
-
- public synchronized Position createPosition(int var1) throws BadLocationException {
- return this.data.createPosition(var1);
- }
-
- public final Position getStartPosition() {
- Position var1;
- try {
- var1 = this.createPosition(0);
- } catch (BadLocationException var2) {
- var1 = null;
- }
-
- return var1;
- }
-
- public final Position getEndPosition() {
- Position var1;
- try {
- var1 = this.createPosition(this.data.length());
- } catch (BadLocationException var2) {
- var1 = null;
- }
-
- return var1;
- }
-
- public Element[] getRootElements() {
- Element[] var1 = new Element[]{this.getDefaultRootElement()};
- return var1;
- }
-
- public abstract Element getDefaultRootElement();
-
- protected final AttributeContext getAttributeContext() {
- return this.context;
- }
-
- protected void insertUpdate(DefaultDocumentEvent var1, AttributeSet var2) {
- }
-
- protected void removeUpdate(DefaultDocumentEvent var1) {
- }
-
- public void dump(PrintStream var1) {
- Element var2 = this.getDefaultRootElement();
- if (var2 instanceof AbstractElement) {
- ((AbstractElement)var2).dump(var1, 0);
- }
-
- }
-
- protected final Content getContent() {
- return this.data;
- }
-
- protected Element createLeafElement(Element var1, AttributeSet var2, int var3, int var4) {
- return new LeafElement(this, var1, var2, var3, var4);
- }
-
- protected Element createBranchElement(Element var1, AttributeSet var2) {
- return new BranchElement(this, var1, var2);
- }
-
- protected final synchronized Thread getCurrentWriter() {
- return this.currWriter;
- }
-
- protected final synchronized void writeLock() {
- try {
- while(this.numReaders > 0 || this.currWriter != null) {
- this.wait();
- }
-
- this.currWriter = Thread.currentThread();
- } catch (InterruptedException var1) {
- }
- }
-
- protected final synchronized void writeUnlock() {
- if (this.numReaders <= 0 && this.currWriter != null) {
- this.currWriter = null;
- this.notify();
- } else {
- throw new StateInvariantError("document lock failure");
- }
- }
-
- protected final synchronized void readLock() {
- try {
- while(this.currWriter != null) {
- this.wait();
- }
-
- ++this.numReaders;
- } catch (InterruptedException var1) {
- }
- }
-
- protected final synchronized void readUnlock() {
- if (this.numReaders <= 0) {
- throw new StateInvariantError("document lock failure");
- } else {
- --this.numReaders;
- this.notify();
- }
- }
-
- private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
- var1.defaultReadObject();
- this.listenerList = new EventListenerList();
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
- }
-