?? syntaxdocument.java
字號:
package org.jr.jzj.editor;
/**
* <p>Copyright: Copyright (c) 2002-2003</p>
* <p>Company: JavaResearch(http://www.javaresearch.org)</p>
* <p>最后更新日期:2003年3月20日
* @author Barney,Cherami,Brain
* @version 0.8
*/
import javax.swing.text.*;
public class SyntaxDocument
extends DefaultStyledDocument {
SyntaxScanner scanner;
private String indentChar = "\t";
static public final int PLAIN_TEXT = 0;
static public final int MARKUP = 2;
static public final int SYNTAX_SOURCE = 1;
private SyntaxParser parser;
/**
*
* @param styleContext
*/
public SyntaxDocument(StyleContext styleContext, SyntaxParser parser) {
super(styleContext);
this.parser = parser;
}
/**
* 插入字符
* @param offs
* @param str
* @param a
* @throws BadLocationException
*/
public void insertString(int offs, String str, AttributeSet a) throws
BadLocationException {
if (str.equals("}")) {
if (getText(offs - 1, 1).equals("\t")) {
super.remove(offs - 1, 1);
super.insertString(offs - 1, str, a);
}
else {
super.insertString(offs, str, a);
}
}
else if (str.equals("\n")) {
int elementIndex = getDefaultRootElement().getElementIndex(offs);
Element element = getDefaultRootElement().getElement(elementIndex);
int startOffset = element.getStartOffset();
int endOffset = element.getEndOffset();
String elementText = null;
elementText = getText(startOffset, endOffset - startOffset);
int tabCount;
for (tabCount = 0; elementText.charAt(tabCount) == '\t'; tabCount++) {
;
}
if (elementText.indexOf("{") >= 0) {
tabCount++;
}
String tabs = "";
for (int i = 0; i < tabCount; i++) {
tabs = tabs + "\t";
}
super.insertString(offs, str + tabs, a);
}
else {
super.insertString(offs, str, a);
}
}
/**
* 返回語法掃描者
* @return
*/
public SyntaxScanner createSyntaxScanner() {
int contentType = -1;
if (scanner != null && scanner instanceof SyntaxScanner) {
contentType = scanner.getContentType();
}
scanner = SyntaxScanner.newInstance(parser);
if (contentType > -1) {
scanner.setContentType(contentType);
}
return scanner;
}
public void setContentType(int type) {
if (scanner != null) {
scanner.setContentType(type);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -