try {
content.getChars(parStart, parLen, text);
} catch (final BadLocationException e) { }
Bidi bidi = new Bidi(text.array, text.offset, null, 0, text.count,
getDefaultDirection(par));
final int runCount = bidi.getRunCount();
for (int i = 0; i < runCount; i++) {
int level = bidi.getRunLevel(i);
if (i == 0 && added.size() > 0) {
Element prevBidi = added.get(added.size() - 1);
if (getBidiLevel(prevBidi) == level) {
added.remove(added.size() - 1);
added.add(new BidiElement(prevBidi.getAttributes(),
prevBidi.getStartOffset(),
parStart + bidi.getRunLimit(i)));
continue;
}
}
added.add(
new BidiElement(context.addAttribute(context.getEmptySet(),
StyleConstants.BidiLevel,
new Integer(level)),
parStart + bidi.getRunStart(i),
parStart + bidi.getRunLimit(i)));
}
}