android.text.style.BulletSpan

Here are the examples of the java api class android.text.style.BulletSpan taken from open source projects.

1. KnifeText#containBullet()

Project: Knife
File: KnifeText.java
protected boolean containBullet(int index) {
    String[] lines = TextUtils.split(getEditableText().toString(), "\n");
    if (index < 0 || index >= lines.length) {
        return false;
    }
    int start = 0;
    for (int i = 0; i < index; i++) {
        start = start + lines[i].length() + 1;
    }
    int end = start + lines[index].length();
    if (start >= end) {
        return false;
    }
    BulletSpan[] spans = getEditableText().getSpans(start, end, BulletSpan.class);
    return spans.length > 0;
}

2. BulletEffect#applyToSelection()

Project: cwac-richedit
File: BulletEffect.java
void applyToSelection(RichEditText editor, Selection bullets, Boolean add) {
    Spannable str = editor.getText();
    Selection selection = bullets.extendToFullLine(str);
    for (BulletSpan span : getBulletSpans(str, selection)) {
        str.removeSpan(span);
    }
    if (add.booleanValue()) {
        for (Selection chunk : selection.buildSelectionsForLines(str)) {
            str.setSpan(new BulletSpan(), chunk.getStart(), chunk.getEnd(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        }
    }
}

3. BulletEffect#applyToSelection()

Project: cwac-richedit
File: BulletEffect.java
@Override
public void applyToSelection(RichEditText editor, Boolean add) {
    Spannable str = editor.getText();
    Selection selection = new Selection(editor).extendToFullLine(str);
    for (BulletSpan span : getBulletSpans(str, selection)) {
        str.removeSpan(span);
    }
    if (add.booleanValue()) {
        for (Selection chunk : selection.buildSelectionsForLines(str)) {
            str.setSpan(new BulletSpan(), chunk.getStart(), chunk.getEnd(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        }
    }
}

4. KnifeText#switchToKnifeStyle()

Project: Knife
File: KnifeText.java
protected void switchToKnifeStyle(Editable editable, int start, int end) {
    BulletSpan[] bulletSpans = editable.getSpans(start, end, BulletSpan.class);
    for (BulletSpan span : bulletSpans) {
        int spanStart = editable.getSpanStart(span);
        int spanEnd = editable.getSpanEnd(span);
        spanEnd = 0 < spanEnd && spanEnd < editable.length() && editable.charAt(spanEnd) == '\n' ? spanEnd - 1 : spanEnd;
        editable.removeSpan(span);
        editable.setSpan(new KnifeBulletSpan(bulletColor, bulletRadius, bulletGapWidth), spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
    QuoteSpan[] quoteSpans = editable.getSpans(start, end, QuoteSpan.class);
    for (QuoteSpan span : quoteSpans) {
        int spanStart = editable.getSpanStart(span);
        int spanEnd = editable.getSpanEnd(span);
        spanEnd = 0 < spanEnd && spanEnd < editable.length() && editable.charAt(spanEnd) == '\n' ? spanEnd - 1 : spanEnd;
        editable.removeSpan(span);
        editable.setSpan(new KnifeQuoteSpan(quoteColor, quoteStripeWidth, quoteGapWidth), spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
    URLSpan[] urlSpans = editable.getSpans(start, end, URLSpan.class);
    for (URLSpan span : urlSpans) {
        int spanStart = editable.getSpanStart(span);
        int spanEnd = editable.getSpanEnd(span);
        editable.removeSpan(span);
        editable.setSpan(new KnifeURLSpan(span.getURL(), linkColor, linkUnderline), spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
}

5. SpannedXhtmlGenerator#chunkToXhtml()

Project: cwac-richedit
File: SpannedXhtmlGenerator.java
private void chunkToXhtml(SpannableStringBuilder result, Spanned src, Layout.Alignment align) {
    BulletSpan[] spans = src.getSpans(0, src.length(), BulletSpan.class);
    if (spans.length == 0) {
        result.append(blockToXhtml(src, align));
    } else {
        int lastSpanEnd = -1;
        boolean inBulletRun = false;
        for (BulletSpan span : spans) {
            int spanStart = src.getSpanStart(span);
            int spanEnd = src.getSpanEnd(span);
            if (spanStart > lastSpanEnd) {
                if (inBulletRun) {
                    result.append("</ul>");
                    inBulletRun = false;
                }
                if (spanStart > 0) {
                    int subsequenceStart = (lastSpanEnd < 0 ? 0 : lastSpanEnd);
                    int subsequenceEnd = spanStart;
                    if (src.charAt(spanStart) == '\n' && !inBulletRun) {
                        // to remove leading newline
                        subsequenceEnd--;
                    }
                    result.append(src.subSequence(subsequenceStart, subsequenceEnd));
                }
                result.append("<ul");
                result.append(buildAlignStyle(align));
                result.append('>');
                inBulletRun = true;
            }
            result.append("<li>");
            Spanned sub = (Spanned) src.subSequence(spanStart, spanEnd - 1);
            // -1 to remove trailing newline
            result.append(blockToXhtml(sub, null));
            result.append("</li>");
            lastSpanEnd = spanEnd;
        }
        if (inBulletRun) {
            result.append("</ul>");
        }
        if (lastSpanEnd < src.length()) {
            Spanned sub = (Spanned) src.subSequence(lastSpanEnd, src.length());
            result.append(blockToXhtml(sub, null));
        }
    }
}

6. BulletEffect#extendToBulletedList()

Project: cwac-richedit
File: BulletEffect.java
Selection extendToBulletedList(Selection initial, Spannable src, int lastSpanCount) {
    BulletSpan[] spans = src.getSpans(initial.getStart(), initial.getEnd(), BulletSpan.class);
    if (spans.length > lastSpanCount) {
        int firstSelStart = (initial.getStart() > 1 ? initial.getStart() - 2 : 0);
        Selection chunk = new Selection(firstSelStart, initial.getEnd()).extendToFullLine(src);
        return (extendToBulletedList(chunk, src, spans.length));
    } else {
        if (spans.length > 0) {
            int start = src.getSpanStart(spans[0]);
            for (BulletSpan span : spans) {
                if (src.getSpanStart(span) < start)
                    start = src.getSpanStart(span);
            }
            if (initial.getStart() != start) {
                initial = new Selection(start, initial.getEnd());
            }
        }
        return (initial);
    }
}