X-Git-Url: http://git.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/textmanipulation/TextBuffer.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/textmanipulation/TextBuffer.java
deleted file mode 100644
index 464d5bb..0000000
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/textmanipulation/TextBuffer.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-package net.sourceforge.phpdt.internal.corext.textmanipulation;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import net.sourceforge.phpdt.internal.corext.util.Strings;
-import net.sourceforge.phpdt.internal.ui.PHPStatusConstants;
-import net.sourceforge.phpeclipse.PHPeclipsePlugin;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DefaultLineTracker;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.jface.text.ILineTracker;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.util.Assert;
-
-// import net.sourceforge.phpdt.internal.ui.JavaPlugin;
-// import net.sourceforge.phpdt.internal.ui.JavaStatusConstants;
-
-/**
- * An implementation of a TextBuffer
that is based on
- * ITextSelection
and IDocument
.
- */
-public class TextBuffer {
-
- private static class DocumentRegion extends TextRegion {
- IRegion fRegion;
-
- public DocumentRegion(IRegion region) {
- fRegion = region;
- }
-
- public int getOffset() {
- return fRegion.getOffset();
- }
-
- public int getLength() {
- return fRegion.getLength();
- }
- }
-
- public class Block {
- public String content;
-
- public int offsetDelta;
- }
-
- private IDocument fDocument;
-
- private static final TextBufferFactory fgFactory = new TextBufferFactory();
-
- TextBuffer(IDocument document) {
- fDocument = document;
- Assert.isNotNull(fDocument);
- }
-
- /**
- * Returns the number of characters in this text buffer.
- *
- * @return the number of characters in this text buffer
- */
- public int getLength() {
- return fDocument.getLength();
- }
-
- /**
- * Returns the number of lines in this text buffer.
- *
- * @return the number of lines in this text buffer
- */
- public int getNumberOfLines() {
- return fDocument.getNumberOfLines();
- }
-
- /**
- * Returns the character at the given offset in this text buffer.
- *
- * @param offset
- * a text buffer offset
- * @return the character at the offset
- * @exception IndexOutOfBoundsException
- * if the offset
argument is negative or not
- * less than the length of this text buffer.
- */
- public char getChar(int offset) {
- try {
- return fDocument.getChar(offset);
- } catch (BadLocationException e) {
- throw new ArrayIndexOutOfBoundsException(e.getMessage());
- }
- }
-
- /**
- * Returns the whole content of the text buffer.
- *
- * @return the whole content of the text buffer
- */
- public String getContent() {
- return fDocument.get();
- }
-
- /**
- * Returns length characters starting from the specified position.
- *
- * @return the characters specified by the given text region. Returns
- * null
- * if text range is illegal
- */
- public String getContent(int start, int length) {
- try {
- return fDocument.get(start, length);
- } catch (BadLocationException e) {
- return null;
- }
- }
-
- public Block getBlockContent(int start, int length, int tabWidth) {
- Block result = new Block();
- StringBuffer buffer = new StringBuffer();
- int lineOffset = getLineInformationOfOffset(start).getOffset();
- if (start > lineOffset) {
- String line = getContent(lineOffset, start - lineOffset);
- String indent = Strings.getIndentString(line, tabWidth);
- result.offsetDelta = -indent.length();
- buffer.append(indent);
- }
- final int end = start + length;
- TextRegion region = getLineInformationOfOffset(end);
- lineOffset = region.getOffset();
- // Cursor is at beginning of next line
- if (lineOffset == end) {
- int lineNumber = getLineOfOffset(lineOffset);
- if (lineNumber > 0) {
- length = length - getLineDelimiter(lineNumber - 1).length();
- }
- }
- if (buffer.length() == 0) {
- result.content = getContent(start, length);
- } else {
- buffer.append(getContent(start, length));
- result.content = buffer.toString();
- }
- return result;
- }
-
- /**
- * Returns the preferred line delimiter to be used for this text buffer.
- *
- * @return the preferred line delimiter
- */
- public String getLineDelimiter() {
- String lineDelimiter = getLineDelimiter(0);
- if (lineDelimiter == null)
- lineDelimiter = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
- return lineDelimiter;
- }
-
- /**
- * Returns the line delimiter used for the given line number. Returns
- * null
- * if the line number is out of range.
- *
- * @return the line delimiter used by the given line number or
- * null
- */
- public String getLineDelimiter(int line) {
- try {
- return fDocument.getLineDelimiter(line);
- } catch (BadLocationException e) {
- return null;
- }
- }
-
- /**
- * Returns the line for the given line number. If there isn't any line for
- * the given line number, null
is returned.
- *
- * @return the line for the given line number or null
- */
- public String getLineContent(int line) {
- try {
- IRegion region = fDocument.getLineInformation(line);
- return fDocument.get(region.getOffset(), region.getLength());
- } catch (BadLocationException e) {
- return null;
- }
- }
-
- /**
- * Returns the line indent for the given line. If there isn't any line for
- * the given line number, -1
is returned.
- *
- * @return the line indent for the given line number of -1
- */
- public int getLineIndent(int lineNumber, int tabWidth) {
- return Strings.computeIndent(getLineContent(lineNumber), tabWidth);
- }
-
- /**
- * Returns a region of the specified line. The region contains the offset
- * and the length of the line excluding the line's delimiter. Returns
- * null
if the line doesn't exist.
- *
- * @param line
- * the line of interest
- * @return a line description or null
if the given line
- * doesn't exist
- */
- public TextRegion getLineInformation(int line) {
- try {
- return new DocumentRegion(fDocument.getLineInformation(line));
- } catch (BadLocationException e) {
- return null;
- }
- }
-
- /**
- * Returns a line region of the specified offset. The region contains the
- * offset and the length of the line excluding the line's delimiter. Returns
- * null
if the line doesn't exist.
- *
- * @param offset
- * an offset into a line
- * @return a line description or null
if the given line
- * doesn't exist
- */
- public TextRegion getLineInformationOfOffset(int offset) {
- try {
- return new DocumentRegion(fDocument
- .getLineInformationOfOffset(offset));
- } catch (BadLocationException e) {
- return null;
- }
- }
-
- /**
- * Returns the line number that contains the given position. If there isn't
- * any line that contains the position, null
is returned. The
- * returned string is a copy and doesn't contain the line delimiter.
- *
- * @return the line that contains the given offset or null
if
- * line doesn't exist
- */
- public int getLineOfOffset(int offset) {
- try {
- return fDocument.getLineOfOffset(offset);
- } catch (BadLocationException e) {
- return -1;
- }
- }
-
- /**
- * Returns the line that contains the given position. If there isn't any
- * line that contains the position, null
is returned. The
- * returned string is a copy and doesn't contain the line delimiter.
- *
- * @return the line that contains the given offset or null
if
- * line doesn't exist
- */
- public String getLineContentOfOffset(int offset) {
- try {
- IRegion region = fDocument.getLineInformationOfOffset(offset);
- return fDocument.get(region.getOffset(), region.getLength());
- } catch (BadLocationException e) {
- return null;
- }
- }
-
- /**
- * Converts the text determined by the region [offset, length] into an array
- * of lines. The lines are copies of the original lines and don't contain
- * any line delimiter characters.
- *
- * @return the text converted into an array of strings. Returns
- * null
if the region lies outside the source.
- */
- public String[] convertIntoLines(int offset, int length,
- boolean lastNewLineCreateEmptyLine) {
- try {
- String text = fDocument.get(offset, length);
- ILineTracker tracker = new DefaultLineTracker();
- tracker.set(text);
- int size = tracker.getNumberOfLines();
- int lastLine = size - 1;
- List result = new ArrayList(size);
- for (int i = 0; i < size; i++) {
- IRegion region = tracker.getLineInformation(i);
- String line = getContent(offset + region.getOffset(), region
- .getLength());
- if (i < lastLine
- || !"".equals(line) || lastNewLineCreateEmptyLine) //$NON-NLS-1$
- result.add(line);
- }
- return (String[]) result.toArray(new String[result.size()]);
- } catch (BadLocationException e) {
- return null;
- }
- }
-
- /**
- * Subsitutes the given text for the specified text position
- *
- * @param offset
- * the starting offset of the text to be replaced
- * @param length
- * the length of the text to be replaced
- * @param text
- * the substitution text
- * @exception CoreException
- * if the text position [offset, length] is invalid.
- */
- public void replace(int offset, int length, String text)
- throws CoreException {
- try {
- fDocument.replace(offset, length, text);
- } catch (BadLocationException e) {
- IStatus s = new Status(IStatus.ERROR, PHPeclipsePlugin
- .getPluginId(), PHPStatusConstants.INTERNAL_ERROR,
- TextManipulationMessages.getFormattedString(
- "TextBuffer.wrongRange", //$NON-NLS-1$
- new Object[] { new Integer(offset),
- new Integer(length) }), e);
- throw new CoreException(s);
- }
- }
-
- public void replace(TextRange range, String text) throws CoreException {
- replace(range.fOffset, range.fLength, text);
- }
-
- // ---- Special methods used by the TextBufferEditor
-
- /**
- * Releases this text buffer.
- */
- /* package */void release() {
- }
-
- /* package */void registerUpdater(IDocumentListener listener) {
- fDocument.addDocumentListener(listener);
- }
-
- /* package */void unregisterUpdater(IDocumentListener listener) {
- fDocument.removeDocumentListener(listener);
- }
-
- // ---- Factory methods
- // ----------------------------------------------------------------
-
- /**
- * Acquires a text buffer for the given file. If a text buffer for the given
- * file already exists, then that one is returned.
- *
- * @param file
- * the file for which a text buffer is requested
- * @return a managed text buffer for the given file
- * @exception CoreException
- * if it was not possible to acquire the text buffer
- */
- public static TextBuffer acquire(IFile file) throws CoreException {
- return fgFactory.acquire(file);
- }
-
- /**
- * Releases the given text buffer.
- *
- * @param buffer
- * the text buffer to be released
- */
- public static void release(TextBuffer buffer) {
- fgFactory.release(buffer);
- }
-
- /**
- * Commits the changes made to the given text buffer to the underlying
- * storage system.
- *
- * @param buffer
- * the text buffer containing the changes to be committed.
- * @param force
- * if true
the text buffer is committed in any
- * case. If false
the text buffer is ONLY
- * committed if the client is the last one that holds a reference
- * to the text buffer. Clients of this method must make sure that
- * they don't call this method from within an
- * IWorkspaceRunnable
.
- * @param pm
- * the progress monitor used to report progress if committing is
- * necessary
- */
- public static void commitChanges(TextBuffer buffer, boolean force,
- IProgressMonitor pm) throws CoreException {
- fgFactory.commitChanges(buffer, force, pm);
- }
-
- /**
- * Creates a new TextBuffer
for the given file. The returned
- * buffer will not be managed. Any subsequent call to create
- * with the same file will return a different text buffer.
- *
- * If the file is currently open in a text editor, the editors content is
- * copied into the returned TextBuffer
. Otherwise the
- * content is read from disk.
- *
- * @param file
- * the file for which a text buffer is to be created
- * @return a new unmanaged text buffer
- * @exception CoreException
- * if it was not possible to create the text buffer
- */
- public static TextBuffer create(IFile file) throws CoreException {
- return fgFactory.create(file);
- }
-
- /**
- * Creates a new TextBuffer
for the string. The returned
- * buffer will not be managed. Any subsequent call to create
- * with the identical string will return a different text buffer.
- *
- * @param content
- * the text buffer's content
- * @return a new unmanaged text buffer
- */
- public static TextBuffer create(String content) {
- return fgFactory.create(content);
- }
-
- // Unclear which methods are needed if we get the new save model. If optimal
- // no
- // save is needed at all.
-
- public static void save(TextBuffer buffer, IProgressMonitor pm)
- throws CoreException {
- fgFactory.save(buffer, pm);
- }
-
- public static void aboutToChange(TextBuffer buffer) throws CoreException {
- fgFactory.aboutToChange(buffer);
- }
-
- public static void changed(TextBuffer buffer) throws CoreException {
- fgFactory.changed(buffer);
- }
-}
\ No newline at end of file