Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java58
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;
+ }
+}

Back to the top