Examples of StyleRange


Examples of at.bestsolution.efxclipse.styledtext.StyleRange

    document.setDocumentPartitioner(partitioner);
    update();
  }
 
  private StyleRange createStyleRange(int start, int length, TextAttribute attribute) {
    StyleRange r = new StyleRange(start, length, attribute.getForeground(), attribute.getBackground());
    r.font = attribute.getFont();
    return r;
  }
View Full Code Here

Examples of com.jidesoft.swing.StyleRange

                    if (index >= s.length()) {
                        break;
                    }
                    if (styleRange.getStart() > index) { // fill in the gap
                        String text = s.substring(index, Math.min(styleRange.getStart(), s.length()));
                        StyleRange newRange = new StyleRange(index, styleRange.getStart() - index, -1);
                        addStyledTexts(text, newRange, label);
                        index = styleRange.getStart();
                    }

                    if (styleRange.getStart() == index) { // exactly on
                        if (styleRange.getLength() == -1) {
                            String text = s.substring(index);
                            addStyledTexts(text, styleRange, label);
                            index = s.length();
                        }
                        else {
                            String text = s.substring(index, Math.min(index + styleRange.getLength(), s.length()));
                            addStyledTexts(text, styleRange, label);
                            index += styleRange.getLength();
                        }
                    }
                    else if (styleRange.getStart() < index) { // overlap
                        // ignore
                    }
                }
                if (index < s.length()) {
                    String text = s.substring(index, s.length());
                    StyleRange range = new StyleRange(index, s.length() - index, -1);
                    addStyledTexts(text, range, label);
                }
            }
        }
    }
View Full Code Here

Examples of com.jidesoft.swing.StyleRange

            }
        }
    }

    private void addStyledTexts(String text, StyleRange range, StyledLabel label) {
        range = new StyleRange(range); // keep the passed-in parameter no change
        int index1 = text.indexOf('\r');
        int index2 = text.indexOf('\n');
        while (index1 >= 0 || index2 >= 0) {
            int index = index1 >= 0 ? index1 : -1;
            if (index2 >= 0 && (index2 < index1 || index < 0)) {
                index = index2;
            }
            String subString = text.substring(0, index);
            StyleRange newRange = new StyleRange(range);
            newRange.setStart(range.getStart());
            newRange.setLength(index);
            _styledTexts.add(new StyledText(subString, newRange));
            int length = 1;
            if (text.charAt(index) == '\r' && index + 1 < text.length() && text.charAt(index + 1) == '\n') {
                length++;
            }
            newRange = new StyleRange(range);
            newRange.setStart(range.getStart() + index);
            newRange.setLength(length);
            _styledTexts.add(new StyledText(text.substring(index, index + length), newRange));

            text = text.substring(index + length);
            range.setStart(range.getStart() + index + length);
            range.setLength(range.getLength() - index - length);
View Full Code Here

Examples of com.jidesoft.swing.StyleRange

            StyledText[] texts = _styledTexts.toArray(new StyledText[_styledTexts.size()]);

            // get maximum row height first by comparing all fonts of styled texts
            int maxRowHeight = fm.getHeight();
            for (StyledText styledText : texts) {
                StyleRange style = styledText.styleRange;
                int size = (style != null && (style.isSuperscript() || style.isSubscript())) ? Math.round((float) defaultFontSize / style.getFontShrinkRatio()) : defaultFontSize;

                font = getFont(label);
                int styleHeight = fm.getHeight();
                if (style != null && ((style.getFontStyle() != -1 && font.getStyle() != style.getFontStyle()) || font.getSize() != size)) {
                    font = FontUtils.getCachedDerivedFont(font, style.getFontStyle() == -1 ? font.getStyle() : style.getFontStyle(), size);
                    fm2 = label.getFontMetrics(font);
                    styleHeight = fm2.getHeight();
                }
                styleHeight++;
/*
                if (style != null) {
                    if (style.isWaved()) {
                        styleHeight += 4;
                    }
                    else if (style.isDotted()) {
                        styleHeight += 3;
                    }
                    else if (style.isUnderlined()) {
                        styleHeight += 2;
                    }
                }
*/
                maxRowHeight = Math.max(maxRowHeight, styleHeight);
            }

            int naturalRowCount = 1;
            int nextRowStartIndex = 0;
            int width = 0;
            int maxWidth = 0;
            List<Integer> lineWidths = new ArrayList<Integer>();
            // get one line width
            for (StyledText styledText : _styledTexts) {
                StyleRange style = styledText.styleRange;
                int size = (style != null &&
                        (style.isSuperscript() || style.isSubscript())) ? Math.round((float) defaultFontSize / style.getFontShrinkRatio()) : defaultFontSize;
                font = getFont(label);
                String s = styledText.text.substring(nextRowStartIndex);
                if (s.startsWith("\r") || s.startsWith("\n")) {
                    lineWidths.add(width);
                    maxWidth = Math.max(width, maxWidth);
                    width = 0;
                    naturalRowCount++;
                    if (label.getMaxRows() > 0 && naturalRowCount >= label.getMaxRows()) {
                        break;
                    }
                    continue;
                }
                if (style != null && ((style.getFontStyle() != -1 && font.getStyle() != style.getFontStyle()) || font.getSize() != size)) {
                    font = FontUtils.getCachedDerivedFont(font, style.getFontStyle() == -1 ? font.getStyle() : style.getFontStyle(), size);
                    fm2 = label.getFontMetrics(font);
                    width += fm2.stringWidth(s);
                }
                else {
//                    fm2 = fm;
View Full Code Here

Examples of com.jidesoft.swing.StyleRange

        nextRowStartIndex = 0;
        int x = 0;
        _preferredRowCount = 1;
        for (int i = 0; i < _styledTexts.size(); i++) {
            StyledText styledText = _styledTexts.get(i);
            StyleRange style = styledText.styleRange;
            if (styledText.text.contains("\r") || styledText.text.contains("\n")) {
                x = 0;
                _preferredRowCount++;
                continue;
            }

            int size = (style != null &&
                    (style.isSuperscript() || style.isSubscript())) ? Math.round((float) defaultFontSize / style.getFontShrinkRatio()) : defaultFontSize;

            font = getFont(label); // cannot omit this one
            if (style != null && ((style.getFontStyle() != -1 && font.getStyle() != style.getFontStyle()) || font.getSize() != size)) {
                font = FontUtils.getCachedDerivedFont(font, style.getFontStyle() == -1 ? font.getStyle() : style.getFontStyle(), size);
                fm2 = label.getFontMetrics(font);
            }
            else {
                fm2 = fm;
            }
View Full Code Here

Examples of com.jidesoft.swing.StyleRange

        FontMetrics fm = label.getFontMetrics(font);
        int defaultFontSize = font.getSize();
        FontMetrics fm2;
        for (int i = 0; i < _styledTexts.size(); i++) {
            StyledText styledText = _styledTexts.get(i);
            StyleRange style = styledText.styleRange;
            int size = (style != null && (style.isSuperscript() || style.isSubscript())) ? Math.round((float) defaultFontSize / style.getFontShrinkRatio()) : defaultFontSize;
            font = getFont(label);
            if (style != null && ((style.getFontStyle() != -1 && font.getStyle() != style.getFontStyle()) || font.getSize() != size)) {
                font = FontUtils.getCachedDerivedFont(font, style.getFontStyle() == -1 ? font.getStyle() : style.getFontStyle(), size);
                fm2 = label.getFontMetrics(font);
            }
            else {
                fm2 = fm;
            }
View Full Code Here

Examples of com.jidesoft.swing.StyleRange

                case TRAILING:
                    horizontalAlignment = label.getComponentOrientation().isLeftToRight() ? RIGHT : LEFT;
                    break;
            }
            for (StyledText styledText : _styledTexts) {
                StyleRange style = styledText.styleRange;
                int size = (style != null && (style.isSuperscript() || style.isSubscript())) ? Math.round((float) defaultFontSize / style.getFontShrinkRatio()) : defaultFontSize;

                font = getFont(label);
                if (style != null && ((style.getFontStyle() != -1 && font.getStyle() != style.getFontStyle()) || font.getSize() != size)) {
                    font = FontUtils.getCachedDerivedFont(font, style.getFontStyle() == -1 ? font.getStyle() : style.getFontStyle(), size);
                    fm2 = label.getFontMetrics(font);
                    maxRowHeight = Math.max(maxRowHeight, fm2.getHeight());
                    minStartY = Math.max(minStartY, fm2.getAscent());
                }
            }
            boolean lineWrap = label.isLineWrap();
            if (!lineWrap) {
                for (StyledText styledText : _styledTexts) {
                    if (styledText.text.endsWith("\n")) {
                        lineWrap = true;
                        break;
                    }
                }
            }
            if (lineWrap && textY < minStartY) {
                textY = minStartY;
            }

            int nextRowStartIndex = 0;
            int rowCount = 0;
            int rowStartOffset = 0;
            for (int i = 0; i < _styledTexts.size(); i++) {
                StyledText styledText = _styledTexts.get(i);
                StyleRange style = styledText.styleRange;

                if (mnemonicIndex >= 0 && styledText.text.length() - nextRowStartIndex > mnemonicIndex - charDisplayed) {
                    displayMnemonic = true;
                    mneIndex = mnemonicIndex - charDisplayed;
                }
                else {
                    displayMnemonic = false;
                }
                charDisplayed += styledText.text.length() - nextRowStartIndex;
                if (styledText.text.contains("\r") || styledText.text.contains("\n")) {
                    boolean lastRow = (label.getMaxRows() > 0 && rowCount >= label.getMaxRows() - 1) || textY + maxRowHeight + Math.max(0, label.getRowGap()) > labelHeight;
                    if (horizontalAlignment != LEFT && g != null) {
                        if (lastRow && i != _styledTexts.size() - 1) {
                            x += fm.stringWidth("...");
                        }
                        paintRow(label, g, startX, x, endX, textY, rowStartOffset, style.getStart() + styledText.text.length(), lastRow);
                    }
                    rowStartOffset = style.getStart();
                    nextRowStartIndex = 0;
                    nextFm2 = null;
                    if (!lastRow) {
                        rowStartOffset += style.getLength();
                        rowCount++;
                        x = startX;
                        textY += maxRowHeight + Math.max(0, label.getRowGap());
                        continue; // continue to paint "..." if lastRow is true
                    }
                    else if (horizontalAlignment != LEFT && g != null) {
                        break;
                    }
                }

                y = textY;

                if (nextFm2 == null) {
                    int size = (style != null &&
                            (style.isSuperscript() || style.isSubscript())) ? Math.round((float) defaultFontSize / style.getFontShrinkRatio()) : defaultFontSize;

                    font = getFont(label);
                    if (style != null && ((style.getFontStyle() != -1 && font.getStyle() != style.getFontStyle()) || font.getSize() != size)) {
                        font = FontUtils.getCachedDerivedFont(font, style.getFontStyle() == -1 ? font.getStyle() : style.getFontStyle(), size);
                        fm2 = label.getFontMetrics(font);
                    }
                    else {
                        fm2 = fm;
                    }
                }
                else {
                    fm2 = nextFm2;
                }

                if (g != null) {
                    g.setFont(font);
                }

                boolean stop = false;
                String s = styledText.text.substring(Math.min(nextRowStartIndex, styledText.text.length()));
                if (s.contains("\r") || s.contains("\n")) {
                    s = "...";
                    stop = true;
                }

                int strWidth = fm2.stringWidth(s);

                boolean wrapped = false;
                int widthLeft = endX - x;
                if (widthLeft < strWidth && widthLeft >= 0) {
                    if (label.isLineWrap() && ((label.getMaxRows() > 0 && rowCount < label.getMaxRows() - 1) || label.getMaxRows() <= 0) && y + maxRowHeight + Math.max(0, label.getRowGap()) <= labelHeight) {
                        wrapped = true;
                        int availLength = s.length() * widthLeft / strWidth + 1;
                        int nextWordStartIndex;
                        int nextRowStartIndexInSubString = 0;
                        boolean needBreak = false;
                        boolean needContinue = false;
                        int loopCount = 0;
                        do {
                            String subString = s.substring(0, Math.max(0, Math.min(availLength, s.length())));
                            int firstRowWordEndIndex = findFirstRowWordEndIndex(subString);
                            nextWordStartIndex = firstRowWordEndIndex < 0 ? 0 : findNextWordStartIndex(s, firstRowWordEndIndex);
                            if (firstRowWordEndIndex < 0) {
                                if (x != startX) {
                                    boolean lastRow = label.getMaxRows() > 0 && rowCount >= label.getMaxRows() - 1;
                                    if (horizontalAlignment != LEFT && g != null) {
                                        paintRow(label, g, startX, x, endX, textY, rowStartOffset, style.getStart() + Math.min(nextRowStartIndex, styledText.text.length()), lastRow);
                                    }
                                    textY += maxRowHeight + Math.max(0, label.getRowGap());
                                    x = startX;
                                    i--;
                                    rowCount++;
                                    rowStartOffset = style.getStart() + Math.min(nextRowStartIndex, styledText.text.length());
                                    if (lastRow) {
                                        needBreak = true;
                                    }
                                    needContinue = true;
                                    break;
                                }
                                else {
                                    firstRowWordEndIndex = 0;
                                    nextWordStartIndex = Math.min(s.length(), availLength);
                                }
                            }
                            nextRowStartIndexInSubString = firstRowWordEndIndex + 1;
                            String subStringThisRow = s.substring(0, Math.min(nextRowStartIndexInSubString, s.length()));
                            strWidth = fm2.stringWidth(subStringThisRow);
                            if (strWidth > widthLeft) {
                                availLength = subString.length() * widthLeft / strWidth;
                            }
                            loopCount++;
                            if (loopCount > 15) {
                                System.err.println("Painting Styled Label Error: " + styledText);
                                break;
                            }
                        } while (strWidth > widthLeft && availLength > 0);
                        if (needBreak) {
                            break;
                        }
                        if (needContinue) {
                            continue;
                        }
                        while (nextRowStartIndexInSubString < nextWordStartIndex) {
                            strWidth += fm2.charWidth(s.charAt(nextRowStartIndexInSubString));
                            if (strWidth >= widthLeft) {
                                break;
                            }
                            nextRowStartIndexInSubString++;
                        }
                        s = s.substring(0, Math.min(nextRowStartIndexInSubString, s.length()));
                        strWidth = fm2.stringWidth(s);
                        charDisplayed -= styledText.text.length() - nextRowStartIndex;
                        if (displayMnemonic) {
                            if (mnemonicIndex >= 0 && s.length() > mnemonicIndex - charDisplayed) {
                                displayMnemonic = true;
                                mneIndex = mnemonicIndex - charDisplayed;
                            }
                            else {
                                displayMnemonic = false;
                            }
                        }
                        charDisplayed += s.length();
                        nextRowStartIndex += nextRowStartIndexInSubString;
                    }
                    else {
                        // use this method to clip string
                        s = SwingUtilities.layoutCompoundLabel(label, fm2, s, null, label.getVerticalAlignment(), label.getHorizontalAlignment(),
                                label.getVerticalTextPosition(), label.getHorizontalTextPosition(), new Rectangle(x, y, widthLeft, labelHeight), new Rectangle(), new Rectangle(), 0);
                        strWidth = fm2.stringWidth(s);
                    }
                    stop = !lineWrap || y + maxRowHeight + Math.max(0, label.getRowGap()) > labelHeight || (label.getMaxRows() > 0 && rowCount >= label.getMaxRows() - 1);
                }
                else if (lineWrap) {
                    nextRowStartIndex = 0;
                }
                else if (i < _styledTexts.size() - 1) {
                    StyledText nextStyledText = _styledTexts.get(i + 1);
                    String nextText = nextStyledText.text;
                    StyleRange nextStyle = nextStyledText.styleRange;
                    int size = (nextStyle != null &&
                            (nextStyle.isSuperscript() || nextStyle.isSubscript())) ? Math.round((float) defaultFontSize / nextStyle.getFontShrinkRatio()) : defaultFontSize;

                    font = getFont(label);
                    if (nextStyle != null && ((nextStyle.getFontStyle() != -1 && font.getStyle() != nextStyle.getFontStyle()) || font.getSize() != size)) {
                        font = FontUtils.getCachedDerivedFont(font, nextStyle.getFontStyle() == -1 ? font.getStyle() : nextStyle.getFontStyle(), size);
                        nextFm2 = label.getFontMetrics(font);
                    }
                    else {
                        nextFm2 = fm;
                    }
View Full Code Here

Examples of com.jidesoft.swing.StyleRange

        int defaultFontSize = font.getSize();

        int x = textX;
        for (int i = 0; i < _styledTexts.size() && (endOffset < 0 || charDisplayed < endOffset); i++) {
            StyledText styledText = _styledTexts.get(i);
            StyleRange style = styledText.styleRange;
            int length = style.getLength();
            if (length < 0) {
                length = styledText.text.length();
            }
            if (style.getStart() + length <= startOffset) {
                charDisplayed += length;
                continue;
            }
            int nextRowStartIndex = style.getStart() >= startOffset ? 0 : startOffset - style.getStart();
            charDisplayed += nextRowStartIndex;

            if (mnemonicIndex >= 0 && styledText.text.length() - nextRowStartIndex > mnemonicIndex - charDisplayed) {
                displayMnemonic = true;
                mneIndex = mnemonicIndex - charDisplayed;
            }
            else {
                displayMnemonic = false;
            }
            int paintLength = styledText.text.length() - nextRowStartIndex;
            if (endOffset >= 0 && charDisplayed + paintLength >= endOffset) {
                paintLength = endOffset - charDisplayed;
            }
            charDisplayed += paintLength;

            int y = textY;

            if (nextFm2 == null) {
                int size = (style != null &&
                        (style.isSuperscript() || style.isSubscript())) ? Math.round((float) defaultFontSize / style.getFontShrinkRatio()) : defaultFontSize;

                font = getFont(label);
                if (style != null && ((style.getFontStyle() != -1 && font.getStyle() != style.getFontStyle()) || font.getSize() != size)) {
                    font = FontUtils.getCachedDerivedFont(font, style.getFontStyle() == -1 ? font.getStyle() : style.getFontStyle(), size);
                    fm2 = label.getFontMetrics(font);
                }
                else {
                    fm2 = fm;
                }
            }
            else {
                fm2 = nextFm2;
            }

            g.setFont(font);

            String s = styledText.text.substring(Math.min(nextRowStartIndex, styledText.text.length()));
            if (startOffset > 0 && x == textX && s.startsWith(" ")) {
                s = s.substring(1);
            }
            if (s.length() > paintLength) {
                s = s.substring(0, paintLength);
            }
            if (s.contains("\r") || s.contains("\n")) {
                if (styledText.styleRange.getStart() + styledText.styleRange.getLength() >= endOffset) {
                    break;
                }
                s = "...";
            }

            int strWidth = fm2.stringWidth(s);

            int widthLeft = paintWidth + textX - x;
            if (widthLeft < strWidth) {
                if (strWidth <= 0) {
                    return;
                }
                if (label.isLineWrap() && !lastRow) {
                    int availLength = s.length() * widthLeft / strWidth + 1;
                    int nextWordStartIndex;
                    int nextRowStartIndexInSubString;
                    int loopCount = 0;
                    do {
                        String subString = s.substring(0, Math.max(0, Math.min(availLength, s.length())));
                        int firstRowWordEndIndex = findFirstRowWordEndIndex(subString);
                        nextWordStartIndex = firstRowWordEndIndex < 0 ? 0 : findNextWordStartIndex(s, firstRowWordEndIndex);
                        if (firstRowWordEndIndex < 0) {
                            if (x == textX) {
                                firstRowWordEndIndex = 0;
                                nextWordStartIndex = Math.min(s.length(), availLength);
                            }
                        }
                        nextRowStartIndexInSubString = firstRowWordEndIndex + 1;
                        String subStringThisRow = s.substring(0, Math.min(nextRowStartIndexInSubString, s.length()));
                        strWidth = fm2.stringWidth(subStringThisRow);
                        if (strWidth > widthLeft) {
                            availLength = subString.length() * widthLeft / strWidth;
                        }
                        loopCount++;
                        if (loopCount > 50) {
                            System.err.println("Painting Styled Label Error: " + styledText);
                            break;
                        }
                    }
                    while (strWidth > widthLeft && availLength > 0);
                    while (nextRowStartIndexInSubString < nextWordStartIndex) {
                        strWidth += fm2.charWidth(s.charAt(nextRowStartIndexInSubString));
                        if (strWidth >= widthLeft) {
                            break;
                        }
                        nextRowStartIndexInSubString++;
                    }
                    s = s.substring(0, Math.min(nextRowStartIndexInSubString, s.length()));
                    strWidth = fm2.stringWidth(s);
                    charDisplayed -= styledText.text.length() - nextRowStartIndex;
                    if (displayMnemonic) {
                        if (mnemonicIndex >= 0 && s.length() > mnemonicIndex - charDisplayed) {
                            displayMnemonic = true;
                            mneIndex = mnemonicIndex - charDisplayed;
                        }
                        else {
                            displayMnemonic = false;
                        }
                    }
                    charDisplayed += s.length();
                    nextRowStartIndex += nextRowStartIndexInSubString;
                }
                else {
                    // use this method to clip string
                    s = SwingUtilities.layoutCompoundLabel(label, fm2, s, null, label.getVerticalAlignment(), label.getHorizontalAlignment(),
                            label.getVerticalTextPosition(), label.getHorizontalTextPosition(), new Rectangle(x, y, widthLeft, label.getHeight()), new Rectangle(), new Rectangle(), 0);
                    strWidth = fm2.stringWidth(s);
                }
            }
            else if (label.isLineWrap()) {
                nextRowStartIndex = 0;
            }
            else if (i < _styledTexts.size() - 1) {
                StyledText nextStyledText = _styledTexts.get(i + 1);
                String nextText = nextStyledText.text;
                StyleRange nextStyle = nextStyledText.styleRange;
                int size = (nextStyle != null &&
                        (nextStyle.isSuperscript() || nextStyle.isSubscript())) ? Math.round((float) defaultFontSize / nextStyle.getFontShrinkRatio()) : defaultFontSize;

                font = getFont(label);
                if (nextStyle != null && ((nextStyle.getFontStyle() != -1 && font.getStyle() != nextStyle.getFontStyle()) || font.getSize() != size)) {
                    font = FontUtils.getCachedDerivedFont(font, nextStyle.getFontStyle() == -1 ? font.getStyle() : nextStyle.getFontStyle(), size);
                    nextFm2 = label.getFontMetrics(font);
                }
                else {
                    nextFm2 = fm;
                }
View Full Code Here

Examples of org.eclipse.swt.custom.StyleRange

    }

    int charCount = detailListWidget.getCharCount();
    detailListWidget.append(value + "\n");
    if (true == isError) {
      StyleRange style2 = new StyleRange();
      style2.start = charCount;
      style2.length = value.length();
      style2.foreground = errorColor;
      detailListWidget.setStyleRange(style2);
    }
View Full Code Here

Examples of org.eclipse.swt.custom.StyleRange

       
        linkInfo info = new linkInfo(ofs + det[0], ofs + det[0] + det[1], url );
 
        links.add(info);
 
        StyleRange sr = new StyleRange();
        sr.start = info.ofsStart;
        sr.length = info.ofsEnd - info.ofsStart;
        sr.underline = true;
        sr.foreground = Colors.blue;
       
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.