X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/LineBreakingReader.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/LineBreakingReader.java index 4b27afe..c69c0c8 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/LineBreakingReader.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/LineBreakingReader.java @@ -4,7 +4,7 @@ package net.sourceforge.phpdt.internal.ui.text; * (c) Copyright IBM Corp. 2000, 2001. * All Rights Reserved. */ - + import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; @@ -16,75 +16,82 @@ import org.eclipse.swt.graphics.GC; * Not a real reader. Could change if requested */ public class LineBreakingReader { - + private BufferedReader fReader; + private GC fGC; + private int fMaxWidth; - + private String fLine; + private int fOffset; - + private BreakIterator fLineBreakIterator; /** * Creates a reader that breaks an input text to fit in a given width. - * @param reader Reader of the input text - * @param gc The graphic context that defines the currently used font sizes - * @param maxLineWidth The max width (pixes) where the text has to fit in + * + * @param reader + * Reader of the input text + * @param gc + * The graphic context that defines the currently used font sizes + * @param maxLineWidth + * The max width (pixes) where the text has to fit in */ public LineBreakingReader(Reader reader, GC gc, int maxLineWidth) { - fReader= new BufferedReader(reader); - fGC= gc; - fMaxWidth= maxLineWidth; - fOffset= 0; - fLine= null; - fLineBreakIterator= BreakIterator.getLineInstance(); + fReader = new BufferedReader(reader); + fGC = gc; + fMaxWidth = maxLineWidth; + fOffset = 0; + fLine = null; + fLineBreakIterator = BreakIterator.getLineInstance(); } - + public boolean isFormattedLine() { return fLine != null; } - + /** - * Reads the next line. The lengths of the line will not exceed the gived maximum - * width. + * Reads the next line. The lengths of the line will not exceed the gived + * maximum width. */ public String readLine() throws IOException { if (fLine == null) { - String line= fReader.readLine(); + String line = fReader.readLine(); if (line == null) return null; - - int lineLen= fGC.textExtent(line).x; + + int lineLen = fGC.textExtent(line).x; if (lineLen < fMaxWidth) { return line; } - fLine= line; + fLine = line; fLineBreakIterator.setText(line); - fOffset= 0; + fOffset = 0; } - int breakOffset= findNextBreakOffset(fOffset); + int breakOffset = findNextBreakOffset(fOffset); String res; if (breakOffset != BreakIterator.DONE) { - res= fLine.substring(fOffset, breakOffset); - fOffset= findWordBegin(breakOffset); + res = fLine.substring(fOffset, breakOffset); + fOffset = findWordBegin(breakOffset); if (fOffset == fLine.length()) { - fLine= null; + fLine = null; } } else { - res= fLine.substring(fOffset); - fLine= null; + res = fLine.substring(fOffset); + fLine = null; } return res; } - + private int findNextBreakOffset(int currOffset) { - int currWidth= 0; - int nextOffset= fLineBreakIterator.following(currOffset); + int currWidth = 0; + int nextOffset = fLineBreakIterator.following(currOffset); while (nextOffset != BreakIterator.DONE) { - String word= fLine.substring(currOffset, nextOffset); - int wordWidth= fGC.textExtent(word).x; - int nextWidth= wordWidth + currWidth; + String word = fLine.substring(currOffset, nextOffset); + int wordWidth = fGC.textExtent(word).x; + int nextWidth = wordWidth + currWidth; if (nextWidth > fMaxWidth) { if (currWidth > 0) { return currOffset; @@ -92,17 +99,18 @@ public class LineBreakingReader { return nextOffset; } } - currWidth= nextWidth; - currOffset= nextOffset; - nextOffset= fLineBreakIterator.next(); + currWidth = nextWidth; + currOffset = nextOffset; + nextOffset = fLineBreakIterator.next(); } return nextOffset; } - + private int findWordBegin(int idx) { - while (idx < fLine.length() && Character.isWhitespace(fLine.charAt(idx))) { + while (idx < fLine.length() + && Character.isWhitespace(fLine.charAt(idx))) { idx++; } return idx; - } + } }