⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 styledtextbuilder.java

📁 基于Eclipse RCP开发的管理工具
💻 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 + -