diff options
Diffstat (limited to 'org.eclipse.text/src/org/eclipse/jface/text/ConfigurableLineTracker.java')
-rw-r--r-- | org.eclipse.text/src/org/eclipse/jface/text/ConfigurableLineTracker.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/ConfigurableLineTracker.java b/org.eclipse.text/src/org/eclipse/jface/text/ConfigurableLineTracker.java new file mode 100644 index 00000000000..817bd9cdf29 --- /dev/null +++ b/org.eclipse.text/src/org/eclipse/jface/text/ConfigurableLineTracker.java @@ -0,0 +1,58 @@ +package org.eclipse.jface.text; + +/* + * (c) Copyright IBM Corp. 2000, 2001. + * All Rights Reserved. + */ + + + +/** + * Standard implementation of a generic <code>ILineTracker</code>. + * The line tracker can be configured with the set of legal line delimiters. + * Line delimiters are unconstrainted. The line delimiters are used to + * compute the tracker's line structure. In the case of overlapping line delimiters, + * the longest line delimiter is given precedence of the shorter ones.<p> + * This class is not intended to be subclassed. + */ +public class ConfigurableLineTracker extends AbstractLineTracker { + + + /** The strings which are considered being the line delimiter */ + private String[] fDelimiters; + /** A predefined delimiter info which is always reused as return value */ + private DelimiterInfo fDelimiterInfo= new DelimiterInfo(); + + + /** + * Creates a standard line tracker for the given line delimiters. + * + * @param legalLineDelimiters the tracker's legal line delimiters, + * may not be <code>null</code> and must be longer than 0 + */ + public ConfigurableLineTracker(String[] legalLineDelimiters) { + Assert.isTrue(legalLineDelimiters != null && legalLineDelimiters.length > 0); + fDelimiters= legalLineDelimiters; + } + + /* + * @see ILineDelimiter@getLegalLineDelimiters + */ + public String[] getLegalLineDelimiters() { + return fDelimiters; + } + + /* + * @see AbstractLineTracker#nextDelimiterInfo(String, int) + */ + protected DelimiterInfo nextDelimiterInfo(String text, int offset) { + int[] info= TextUtilities.indexOf(fDelimiters, text, offset); + if (info[0] == -1) + return null; + + fDelimiterInfo.delimiterIndex= info[0]; + fDelimiterInfo.delimiter= fDelimiters[info[1]]; + fDelimiterInfo.delimiterLength= fDelimiterInfo.delimiter.length(); + return fDelimiterInfo; + } +} |