X-Git-Url: http://secure.phpeclipse.com

diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/DocumentAdapter.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/DocumentAdapter.java
index 85dacc1..006503e 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/DocumentAdapter.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/DocumentAdapter.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
  * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
+ * 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 API and implementation
  *******************************************************************************/
@@ -47,12 +47,12 @@ import org.eclipse.swt.widgets.Display;
 
 /**
  * Adapts <code>IDocument</code> to <code>IBuffer</code>. Uses the
- * same algorithm as the text widget to determine the buffer's line delimiter. 
+ * same algorithm as the text widget to determine the buffer's line delimiter.
  * All text inserted into the buffer is converted to this line delimiter.
  * This class is <code>public</code> for test purposes only.
  */
 public class DocumentAdapter implements IBuffer, IDocumentListener {
-	
+
 		/**
 		 * Internal implementation of a NULL instanceof IBuffer.
 		 */
@@ -78,38 +78,38 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 			public void setContents(char[] contents) {}
 			public void setContents(String contents) {}
 		}
-	
-	
+
+
 		/** NULL implementing <code>IBuffer</code> */
 		public final static IBuffer NULL= new NullBuffer();
-			
-		
+
+
 		/**
 		 *  Executes a document set content call in the ui thread.
 		 */
 		protected class DocumentSetCommand implements Runnable {
-			
+
 			private String fContents;
-			
+
 			public void run() {
 				fDocument.set(fContents);
 			}
-		
+
 			public void set(String contents) {
 				fContents= contents;
 				Display.getDefault().syncExec(this);
 			}
 		}
-		
+
 		/**
 		 * Executes a document replace call in the ui thread.
 		 */
 		protected class DocumentReplaceCommand implements Runnable {
-			
+
 			private int fOffset;
 			private int fLength;
 			private String fText;
-			
+
 			public void run() {
 				try {
 					fDocument.replace(fOffset, fLength, fText);
@@ -117,7 +117,7 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 					// ignore
 				}
 			}
-			
+
 			public void replace(int offset, int length, String text) {
 				fOffset= offset;
 				fLength= length;
@@ -125,34 +125,34 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 				Display.getDefault().syncExec(this);
 			}
 		}
-	
+
 	private static final boolean DEBUG_LINE_DELIMITERS= true;
-	
+
 	private IOpenable fOwner;
 	private IFile fFile;
 	private ITextFileBuffer fTextFileBuffer;
 	private IDocument fDocument;
-	
+
 	private DocumentSetCommand fSetCmd= new DocumentSetCommand();
 	private DocumentReplaceCommand fReplaceCmd= new DocumentReplaceCommand();
-	
+
 	private Set fLegalLineDelimiters;
-	
+
 	private List fBufferListeners= new ArrayList(3);
 	private IStatus fStatus;
-	
-	
+
+
 	/**
 	 * This method is <code>public</code> for test purposes only.
 	 */
 	public DocumentAdapter(IOpenable owner, IFile file) {
-		
+
 		fOwner= owner;
 		fFile= file;
-		
+
 		initialize();
 	}
-	
+
 	private void initialize() {
 		ITextFileBufferManager manager= FileBuffers.getTextFileBufferManager();
 		IPath location= fFile.getFullPath();
@@ -166,7 +166,7 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 		}
 		fDocument.addPrenotifiedDocumentListener(this);
 	}
-	
+
 	/**
 	 * Returns the status of this document adapter.
 	 */
@@ -177,16 +177,16 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 			return fTextFileBuffer.getStatus();
 		return null;
 	}
-	
+
 	/**
 	 * Returns the adapted document.
-	 * 
+	 *
 	 * @return the adapted document
 	 */
 	public IDocument getDocument() {
 		return fDocument;
 	}
-		
+
 	/*
 	 * @see IBuffer#addBufferChangedListener(IBufferChangedListener)
 	 */
@@ -195,7 +195,7 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 		if (!fBufferListeners.contains(listener))
 			fBufferListeners.add(listener);
 	}
-	
+
 	/*
 	 * @see IBuffer#removeBufferChangedListener(IBufferChangedListener)
 	 */
@@ -203,16 +203,16 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 		Assert.isNotNull(listener);
 		fBufferListeners.remove(listener);
 	}
-	
+
 	/*
 	 * @see IBuffer#append(char[])
 	 */
 	public void append(char[] text) {
 		append(new String(text));
 	}
-	
+
 	/*
-	 * @see IBuffer#append(String) 
+	 * @see IBuffer#append(String)
 	 */
 	public void append(String text) {
 		if (DEBUG_LINE_DELIMITERS) {
@@ -220,19 +220,19 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 		}
 		fReplaceCmd.replace(fDocument.getLength(), 0, text);
 	}
-	
+
 	/*
 	 * @see IBuffer#close()
 	 */
 	public void close() {
-		
+
 		if (isClosed())
 			return;
-			
+
 		IDocument d= fDocument;
 		fDocument= null;
 		d.removePrenotifiedDocumentListener(this);
-		
+
 		if (fTextFileBuffer != null) {
 			ITextFileBufferManager manager= FileBuffers.getTextFileBufferManager();
 			try {
@@ -242,11 +242,11 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 			}
 			fTextFileBuffer= null;
 		}
-		
+
 		fireBufferChanged(new BufferChangedEvent(this, 0, 0, null));
 		fBufferListeners.clear();
 	}
-	
+
 	/*
 	 * @see IBuffer#getChar(int)
 	 */
@@ -257,7 +257,7 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 			throw new ArrayIndexOutOfBoundsException();
 		}
 	}
-	
+
 	/*
 	 *  @see IBuffer#getCharacters()
 	 */
@@ -265,28 +265,28 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 		String content= getContents();
 		return content == null ? null : content.toCharArray();
 	}
-	
+
 	/*
 	 * @see IBuffer#getContents()
 	 */
 	public String getContents() {
 		return fDocument.get();
 	}
-	
+
 	/*
 	 * @see IBuffer#getLength()
 	 */
 	public int getLength() {
 		return fDocument.getLength();
 	}
-	
+
 	/*
 	 * @see IBuffer#getOwner()
 	 */
 	public IOpenable getOwner() {
 		return fOwner;
 	}
-	
+
 	/*
 	 * @see IBuffer#getText(int, int)
 	 */
@@ -297,43 +297,43 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 			throw new ArrayIndexOutOfBoundsException();
 		}
 	}
-	
+
 	/*
 	 * @see IBuffer#getUnderlyingResource()
 	 */
 	public IResource getUnderlyingResource() {
 		return fFile;
 	}
-	
+
 	/*
 	 * @see IBuffer#hasUnsavedChanges()
 	 */
 	public boolean hasUnsavedChanges() {
 		return fTextFileBuffer != null ? fTextFileBuffer.isDirty() : false;
 	}
-	
+
 	/*
 	 * @see IBuffer#isClosed()
 	 */
 	public boolean isClosed() {
 		return fDocument == null;
 	}
-	
+
 	/*
 	 * @see IBuffer#isReadOnly()
 	 */
 	public boolean isReadOnly() {
 		IResource resource= getUnderlyingResource();
-		return resource == null ? true : resource.isReadOnly();
+		return resource == null ? true : resource.getResourceAttributes().isReadOnly();
 	}
-	
+
 	/*
 	 * @see IBuffer#replace(int, int, char[])
 	 */
 	public void replace(int position, int length, char[] text) {
 		replace(position, length, new String(text));
 	}
-	
+
 	/*
 	 * @see IBuffer#replace(int, int, String)
 	 */
@@ -343,7 +343,7 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 		}
 		fReplaceCmd.replace(position, length, text);
 	}
-	
+
 	/*
 	 * @see IBuffer#save(IProgressMonitor, boolean)
 	 */
@@ -355,38 +355,38 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 			throw new JavaModelException(e);
 		}
 	}
-	
+
 	/*
 	 * @see IBuffer#setContents(char[])
 	 */
 	public void setContents(char[] contents) {
 		setContents(new String(contents));
 	}
-	
+
 	/*
 	 * @see IBuffer#setContents(String)
 	 */
 	public void setContents(String contents) {
 		int oldLength= fDocument.getLength();
-		
+
 		if (contents == null) {
-			
+
 			if (oldLength != 0)
 				fSetCmd.set(""); //$NON-NLS-1$
-		
+
 		} else {
-			
+
 			// set only if different
 			if (DEBUG_LINE_DELIMITERS) {
 				validateLineDelimiters(contents);
 			}
-			
+
 			if (!contents.equals(fDocument.get()))
 				fSetCmd.set(contents);
 		}
 	}
-	
-	
+
+
 	private void validateLineDelimiters(String contents) {
 
 		if (fLegalLineDelimiters == null) {
@@ -407,16 +407,16 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 				return; // first insertion of a line delimiter: no test
 			}
 			fLegalLineDelimiters= existingDelimiters;
-			
+
 		}
-		
+
 		DefaultLineTracker tracker= new DefaultLineTracker();
 		tracker.set(contents);
-		
+
 		int lines= tracker.getNumberOfLines();
 		if (lines <= 1)
 			return;
-		
+
 		for (int i= 0; i < lines; i++) {
 			try {
 				String curr= tracker.getLineDelimiter(i);
@@ -446,7 +446,7 @@ public class DocumentAdapter implements IBuffer, IDocumentListener {
 	public void documentChanged(DocumentEvent event) {
 		fireBufferChanged(new BufferChangedEvent(this, event.getOffset(), event.getLength(), event.getText()));
 	}
-	
+
 	private void fireBufferChanged(BufferChangedEvent event) {
 		if (fBufferListeners != null && fBufferListeners.size() > 0) {
 			Iterator e= new ArrayList(fBufferListeners).iterator();