protected Line(List<LineEntry> initialEntries, int leftover) { super(); this.leftover = leftover; this.totalLength = leftover; this.entries = initialEntries == null ? new ArrayList<LineEntry>() : initialEntries; this.lastBreakableEntryIndex = -1; this.startWithNL = initialEntries != null || leftover > 0; if (initialEntries != null && initialEntries.size() > 0) indent = getIndentation(initialEntries.get(0).indent); for (int i = 0; i < this.entries.size(); i++) { LineEntry lineEntry = this.entries.get(i); this.totalLength += lineEntry.value.length(); addSpacesToTotalLength(lineEntry, i == 0); if (lineEntry.isBreakable()) lastBreakableEntryIndex = i; } }
public Line add(LineEntry lineEntry) throws IOException { entries.add(lineEntry); if (indent == null) { indent = getIndentation(entries.get(0).indent); } addSpacesToTotalLength(lineEntry, entries.size() == 1); int lastLineLength = lineEntry.countCharactersInLastLine(); if (lastLineLength >= 0) { flush(); return createLine(lastLineLength); } if (lineEntry.isBreakable()) lastBreakableEntryIndex = entries.size() - 1; totalLength += lineEntry.value.length(); if (lineEntry.isBreak()) { lastBreakableEntryIndex = entries.size() - 1; return flushLine(); } if (totalLength > cfg.getCharsPerLine() && lastBreakableEntryIndex > 0) { LineEntry lastEntry = entries.get(lastBreakableEntryIndex); lastEntry.indent = lastEntry.indent + cfg.getWrappedLineIndentation(); return flushLine(); } return null; }
protected boolean isBreak() { if (!isBreakable()) return false; for (ElementLocator e : leadingLocators) { if (e instanceof LinewrapLocator) { if (((LinewrapLocator) e).getMinWrap() > 0) return true; if (countExistingLeadingNewlines() > 0) return true; } } return false; }