📄 styledtextbuilder.java
字号:
package com.s10r.swt;
import java.util.ArrayList;
import java.util.List;
// TODO: swt with jface dependency
import org.eclipse.jface.resource.JFaceColors;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
/**
* Helper class to populate a StyledText field. Internally builds a
* StringBuffer and corresponding StyleRanges. Use the add methods
* to add text. When done building the text, call updateText to
* set the text on the StyledText object and set the StyleRanges
* on the text constructed by the add methods.
*
* This class is used by the PasswordEntryView class.
*
* @author schoffem
*
*/
public class StyledTextBuilder
{
private StringBuffer textSb = new StringBuffer();
private List<StyleRange> styleRanges = new ArrayList<StyleRange>();
private StyledText styledText;
/**
* @param display used to get the hyperlink color
*/
public StyledTextBuilder(StyledText styleText)
{
this.styledText = styleText;
}
public void addNvPair(String name, String value)
{
addName(name);
add(value);
}
public void addLinkNvPair(String name, String value)
{
addName(name);
addLink(value != null ? value : "");
}
public void addPasswordNvPair(String name, String value)
{
addName(name);
add(value != null ? "***" : "");
}
private void addName(String name)
{
if (textSb.length() > 0)
{
textSb.append(", ");
}
addBold(name + ": ");
}
private void add(String s)
{
textSb.append(s != null ? s : "");
}
private void add(String string, StyleRange styleRange)
{
int start = textSb.length();
textSb.append(string);
styleRange.start = start;
styleRange.length = string.length();
styleRanges.add(styleRange);
}
private void addBold(String string)
{
add(string, getBoldStyleRange());
}
private StyleRange getBoldStyleRange()
{
StyleRange styleRange = new StyleRange();
styleRange.fontStyle = SWT.BOLD;
return styleRange;
}
private void addLink(String string)
{
add(string, getLinkStyleRange());
}
private StyleRange getLinkStyleRange()
{
StyleRange styleRange = new StyleRange();
styleRange.foreground = JFaceColors.getHyperlinkText(styledText.getDisplay());
return styleRange;
}
public void updateText()
{
styledText.setText(textSb.toString());
for (StyleRange styleRange: styleRanges)
{
styledText.setStyleRange(styleRange);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -