X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PartiallySynchronizedDocument.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PartiallySynchronizedDocument.java new file mode 100644 index 0000000..7dfb207 --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PartiallySynchronizedDocument.java @@ -0,0 +1,138 @@ +/********************************************************************** + Copyright (c) 2000, 2003 IBM Corp. and others. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Common Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/cpl-v10.html + + Contributors: + IBM Corporation - Initial implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.phpeditor; + +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.BadPositionCategoryException; +import org.eclipse.jface.text.Document; +import org.eclipse.jface.text.ISynchronizable; +import org.eclipse.jface.text.Position; + +/** + * Document that can also be used by a background reconciler. + */ +public class PartiallySynchronizedDocument extends Document implements + ISynchronizable { + + private final Object fInternalLockObject = new Object(); + + private Object fLockObject; + + /* + * @see org.eclipse.jface.text.ISynchronizable#setLockObject(java.lang.Object) + */ + public void setLockObject(Object lockObject) { + fLockObject = lockObject; + } + + /* + * @see org.eclipse.jface.text.ISynchronizable#getLockObject() + */ + public Object getLockObject() { + return fLockObject == null ? fInternalLockObject : fLockObject; + } + + /* + * @see IDocumentExtension#startSequentialRewrite(boolean) + */ + public void startSequentialRewrite(boolean normalized) { + synchronized (getLockObject()) { + super.startSequentialRewrite(normalized); + } + } + + /* + * @see IDocumentExtension#stopSequentialRewrite() + */ + public void stopSequentialRewrite() { + synchronized (getLockObject()) { + super.stopSequentialRewrite(); + } + } + + /* + * @see IDocument#get() + */ + public String get() { + synchronized (getLockObject()) { + return super.get(); + } + } + + /* + * @see IDocument#get(int, int) + */ + public String get(int offset, int length) throws BadLocationException { + synchronized (getLockObject()) { + return super.get(offset, length); + } + } + + /* + * @see IDocument#getChar(int) + */ + public char getChar(int offset) throws BadLocationException { + synchronized (getLockObject()) { + return super.getChar(offset); + } + } + + /* + * @see IDocument#replace(int, int, String) + */ + public void replace(int offset, int length, String text) + throws BadLocationException { + synchronized (getLockObject()) { + super.replace(offset, length, text); + } + } + + /* + * @see IDocument#set(String) + */ + public void set(String text) { + synchronized (getLockObject()) { + super.set(text); + } + } + + /* + * @see org.eclipse.jface.text.AbstractDocument#addPosition(java.lang.String, + * org.eclipse.jface.text.Position) + */ + public void addPosition(String category, Position position) + throws BadLocationException, BadPositionCategoryException { + synchronized (getLockObject()) { + super.addPosition(category, position); + } + } + + /* + * @see org.eclipse.jface.text.AbstractDocument#removePosition(java.lang.String, + * org.eclipse.jface.text.Position) + */ + public void removePosition(String category, Position position) + throws BadPositionCategoryException { + synchronized (getLockObject()) { + super.removePosition(category, position); + } + } + + /* + * @see org.eclipse.jface.text.AbstractDocument#getPositions(java.lang.String) + */ + public Position[] getPositions(String category) + throws BadPositionCategoryException { + synchronized (getLockObject()) { + return super.getPositions(category); + } + } +} \ No newline at end of file