[Text] Improve TextParserInput
  - Add constant NA_INDEX
  - Fix and improve toString

Change-Id: I5a6fff6017fab5d8799540df3563d05dd52149a0
diff --git a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/FilterParserInput.java b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/FilterParserInput.java
index 8a63d54..18781d4 100644
--- a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/FilterParserInput.java
+++ b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/FilterParserInput.java
@@ -125,7 +125,7 @@
 				if (!updateBuffer(offset + 1)) {
 					checkOffset(offset);
 					int index= getStopIndex();
-					if (index == Integer.MIN_VALUE) {
+					if (index == NA_INDEX) {
 						index= this.bufferBeginIndexes[getEndIdx()];
 					}
 					setConsume(offset, index);
diff --git a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/OffsetStringParserInput.java b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/OffsetStringParserInput.java
index 50743be..b4701ac 100644
--- a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/OffsetStringParserInput.java
+++ b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/OffsetStringParserInput.java
@@ -49,7 +49,7 @@
 	}
 	
 	public OffsetStringParserInput initAtOffset() {
-		super.init(this.sourceOffset, Integer.MIN_VALUE);
+		super.init(this.sourceOffset, NA_INDEX);
 		return this;
 	}
 	
diff --git a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/TextParserInput.java b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/TextParserInput.java
index 504cd2a..29af45a 100644
--- a/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/TextParserInput.java
+++ b/jcommons/org.eclipse.statet.jcommons.text.core/src/org/eclipse/statet/jcommons/text/core/input/TextParserInput.java
@@ -16,6 +16,7 @@
 
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
+import org.eclipse.statet.jcommons.lang.ObjectUtils.ToStringBuilder;
 import org.eclipse.statet.jcommons.string.CharArrayString;
 import org.eclipse.statet.jcommons.string.StringFactory;
 import org.eclipse.statet.jcommons.text.core.BasicTextRegion;
@@ -39,11 +40,17 @@
 	
 	public static final int EOF= -1;
 	
+	public static final int NA_INDEX= Integer.MIN_VALUE;
+	
 	
 	protected static final int DEFAULT_BUFFER_SIZE= 0x800;
 	
 	protected static final char[] NO_INPUT= new char[0];
 	
+	protected static final String indexToString(final int index) {
+		return (index != NA_INDEX) ? Integer.toString(index) : "<NA>"; //$NON-NLS-1$
+	}
+	
 	
 	private final CharArrayString tmpCharString= new CharArrayString();
 	
@@ -61,21 +68,21 @@
 	protected TextParserInput(final int defaultBufferLength) {
 		this.defaultBufferLength= defaultBufferLength;
 		this.buffer= NO_INPUT;
-		this.stopIndex= Integer.MIN_VALUE;
-		this.currentIndex= Integer.MIN_VALUE;
+		this.stopIndex= NA_INDEX;
+		this.currentIndex= NA_INDEX;
 	}
 	
 	
 	protected void reset() {
 		this.startIndex= 0;
-		this.stopIndex= Integer.MIN_VALUE;
-		this.currentIndex= Integer.MIN_VALUE;
+		this.stopIndex= NA_INDEX;
+		this.currentIndex= NA_INDEX;
 		this.currentIdx= 0;
 		this.endIdx= 0;
 	}
 	
 	public TextParserInput init() {
-		init(0, Integer.MIN_VALUE);
+		init(0, NA_INDEX);
 		
 		return this;
 	}
@@ -88,7 +95,7 @@
 			if (stopIndex > sourceStopIndex) {
 				throw new IndexOutOfBoundsException("stopIndex= " + stopIndex); //$NON-NLS-1$
 			}
-			else if (stopIndex == Integer.MIN_VALUE) {
+			else if (stopIndex == NA_INDEX) {
 				stopIndex= sourceStopIndex;
 			}
 			if (startIndex < sourceStartIndex | startIndex > sourceStopIndex) {
@@ -472,22 +479,27 @@
 	
 	protected final void checkOffset(final int offset) {
 		if (this.currentIdx + offset > this.endIdx) {
-			throw new IndexOutOfBoundsException("offset= " + offset);
+			throw new IndexOutOfBoundsException("offset= " + offset); //$NON-NLS-1$
 		}
 	}
 	
 	
 	@Override
 	public String toString() {
-		final StringBuilder sb= new StringBuilder(getClass().getName());
+		final ToStringBuilder sb= new ToStringBuilder(TextParserInput.class, getClass());
+		sb.addProp("region", "[%1$s, %2$s)", //$NON-NLS-1$ //$NON-NLS-2$
+				indexToString(getStartIndex()), indexToString(getStopIndex()) );
 		final String s= getSourceString();
 		if (s != null) {
 			final int index= getSourceStringIndex();
-			sb.append("\n~~~ [").append(index).append(", ").append(index + s.length()).append("] ~~~");
-			sb.append(getSourceStringIndex());
-			sb.append("\n~~~\n");
+			sb.addProp("source"); //$NON-NLS-1$
+			sb.getStringBuilder()
+					.append("\n~~~ [").append(index).append(", ").append(index + s.length()) //$NON-NLS-1$ //$NON-NLS-2$
+					.append("] ~~~\n") //$NON-NLS-1$
+					.append(s)
+					.append("\n~~~\n"); //$NON-NLS-1$
 		}
-		return super.toString();
+		return sb.toString();
 	}
 	
 }