📄 highlighttextpane.java
字号:
/**
*
*/
package com.corba.mnq.ui.text;
import com.corba.mnq.tool.idl.IdlFile;
import java.awt.Color;
import javax.swing.JTextPane;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
import javax.swing.text.TabSet;
import javax.swing.text.TabStop;
import java.util.List;
import java.util.Vector;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author cn1wc0k0
*/
public class HighlightTextPane extends JTextPane {
/** used for java.util.logging */
private static final Logger LOG = Logger.getLogger(HighlightTextPane.class.getName());
// store the idl file node
public IdlFile fn = null;
// corba key word
private static List kwList = new Vector();
// corba type
private static List typeList = new Vector();
// java key words
private static List javaKwList = new Vector();
static {
// Corba Type List
typeList.add("any");
typeList.add("boolean");
typeList.add("long");
typeList.add("unsigned");
typeList.add("char");
typeList.add("short");
typeList.add("float");
typeList.add("octet");
typeList.add("string");
typeList.add("void");
typeList.add("wchar");
typeList.add("wstring");
typeList.add("double");
// Corba Keyword List
kwList.add("abstract");
kwList.add("exception");
kwList.add("inout");
kwList.add("provides");
kwList.add("truncatable");
kwList.add("attribute");
kwList.add("emits");
kwList.add("interface");
kwList.add("public");
kwList.add("typedef");
kwList.add("enum");
kwList.add("local");
kwList.add("publishes");
kwList.add("typeid");
kwList.add("eventtype");
kwList.add("raises");
kwList.add("typeprefix");
kwList.add("case");
kwList.add("factory");
kwList.add("module");
kwList.add("readonly");
kwList.add("FALSE");
kwList.add("multiple");
kwList.add("setraises");
kwList.add("union");
kwList.add("component");
kwList.add("finder");
kwList.add("native");
kwList.add("sequence");
kwList.add("uses");
kwList.add("const");
kwList.add("fixed");
kwList.add("Object");
kwList.add("ValueBase");
kwList.add("consumes");
kwList.add("valuetype");
kwList.add("context");
kwList.add("getraises");
kwList.add("oneway");
kwList.add("struct");
kwList.add("custom");
kwList.add("home");
kwList.add("out");
kwList.add("supports");
kwList.add("default");
kwList.add("import");
kwList.add("primarykey");
kwList.add("switch");
kwList.add("in");
kwList.add("private");
kwList.add("TRUE");
// Java Keyword List
javaKwList.add("abstract");
javaKwList.add("assert");
javaKwList.add("boolean");
javaKwList.add("break");
javaKwList.add("type");
javaKwList.add("case");
javaKwList.add("catch");
javaKwList.add("char");
javaKwList.add("class");
javaKwList.add("const");
javaKwList.add("continue");
javaKwList.add("default");
javaKwList.add("do");
javaKwList.add("double");
javaKwList.add("else");
javaKwList.add("extends");
javaKwList.add("final");
javaKwList.add("finally");
javaKwList.add("float");
javaKwList.add("for");
javaKwList.add("goto");
javaKwList.add("if");
javaKwList.add("implements");
javaKwList.add("import");
javaKwList.add("instnaceof");
javaKwList.add("int");
javaKwList.add("interface");
javaKwList.add("long");
javaKwList.add("native");
javaKwList.add("new");
javaKwList.add("null");
javaKwList.add("package");
javaKwList.add("private");
javaKwList.add("protected");
javaKwList.add("public");
javaKwList.add("return");
javaKwList.add("short");
javaKwList.add("static");
javaKwList.add("strictfp");
javaKwList.add("super");
javaKwList.add("switch");
javaKwList.add("synchronized");
javaKwList.add("this");
javaKwList.add("throw");
javaKwList.add("throws");
javaKwList.add("transient");
javaKwList.add("try");
javaKwList.add("void");
javaKwList.add("volatile");
javaKwList.add("while");
}
/**
*
*/
public HighlightTextPane() {
super();
// TODO Auto-generated constructor stub
doc = getStyledDocument();// (StyledDocument)
// this.getDocument();
Style kw = doc.addStyle("KeyWords", null);
// Font Family
StyleConstants.setFontFamily(kw, "SansSerif");
// Foreground Color
StyleConstants.setForeground(kw, Color.blue);
// Italic
// StyleConstants.setItalic(kw, true);
// Bold
// StyleConstants.setBold(kw, true);
// Font Size
// StyleConstants.setFontSize(kw, 30);
// Background Color
// StyleConstants.setBackground(kw, Color.white);
Style comment = doc.addStyle("Comments", null);
StyleConstants.setFontFamily(comment, "SansSerif");
StyleConstants.setForeground(comment, new Color(0, 200, 0));
Style num = doc.addStyle("Numbers", null);
StyleConstants.setFontFamily(num, "SansSerif");
StyleConstants.setForeground(num, new Color(255, 128, 64));
Style type = doc.addStyle("Types", null);
StyleConstants.setFontFamily(type, "SansSerif");
StyleConstants.setForeground(type, new Color(255, 0, 255));
Style normalJava = doc.addStyle("NormalJava", null);
StyleConstants.setFontFamily(normalJava, "SansSerif");
StyleConstants.setForeground(normalJava, Color.BLACK);
// The following styles is used for clientPane
Style title = doc.addStyle("Title", null);
StyleConstants.setFontFamily(title, "SansSerif");
StyleConstants.setForeground(title, Color.magenta);
StyleConstants.setFontSize(title, 12);
Style input = doc.addStyle("Input", null);
StyleConstants.setFontFamily(input, "SansSerif");
StyleConstants.setForeground(input, Color.blue);
StyleConstants.setFontSize(input, 12);
Style output = doc.addStyle("Output", null);
StyleConstants.setFontFamily(output, "SansSerif");
StyleConstants.setForeground(output, new Color(255, 128, 0));
StyleConstants.setFontSize(output, 12);
Style exception = doc.addStyle("Exception", null);
StyleConstants.setFontFamily(exception, "SansSerif");
StyleConstants.setForeground(exception, Color.RED);
StyleConstants.setFontSize(exception, 12);
Style normal = doc.addStyle("Normal", null);
StyleConstants.setFontFamily(normal, "SansSerif");
StyleConstants.setForeground(normal, Color.BLACK);
StyleConstants.setFontSize(normal, 12);
}
private StyledDocument doc = null;
/**
* @param arg0
*/
public HighlightTextPane(StyledDocument arg0) {
super(arg0);
// TODO Auto-generated constructor stub
}
public void showIDL(String idl) {
print(idl);
Style style = doc.getStyle("Comments");
String dcl = "(//.*?$)|(/\\*.*?\\*/)";
highlightDoc(dcl, style);
style = doc.getStyle("Numbers");
dcl = "\\b" + "\\d+" + "\\b";
highlightDoc(dcl, style);
style = doc.getStyle("KeyWords");
for (int i = 0; i < kwList.size(); i++) {
dcl = (String) kwList.get(i);
dcl = "\\b" + dcl + "\\b";
highlightDoc(dcl, style);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -