--- /dev/null
+/**********************************************************************
+ 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