?? idleditorkit.java
字號(hào):
/**
* (c) 2007 UCS_2008
*
* Project UCS (Ultra Corba Simulator)
* Subproject CorbaMNQ
* File IdlEditorKit.java
* Created on Sep 13, 2007 by ucs_2008
*
* History:
* Date(Y.M.D) User Reason (plus CR, LM, Fault number)
*
*/
package com.corba.mnq.ui.text.idl;
import java.awt.event.ActionEvent;
import javax.swing.text.DefaultEditorKit;
import javax.swing.text.Document;
import javax.swing.text.Element;
import javax.swing.text.JTextComponent;
import javax.swing.text.Segment;
import javax.swing.text.TextAction;
import javax.swing.text.ViewFactory;
/**
* name: "IdlEditorKit"
*
* @author ucs_2008
*/
public class IdlEditorKit extends DefaultEditorKit {
/**
* type: long name: serialVersionUID
*/
private static final long serialVersionUID = -961644294063617794L;
/**
* This is one class constructor
*/
public IdlEditorKit() {
super();
// TODO Auto-generated constructor stub
}
private ViewFactory idlViewFactory = new IdlViewFactory();
public String getContentType() {
return "text/idl";
}
public Document createDefaultDocument() {
Document doc = new IdlDocument();
return doc;
}
public final ViewFactory getViewFactory() {
return idlViewFactory;
}
public static class InsertBreakAction extends TextAction {
/**
* type: long name: serialVersionUID
*/
private static final long serialVersionUID = 6235477004886609778L;
public InsertBreakAction() {
super(DefaultEditorKit.insertBreakAction);
}
public void actionPerformed(ActionEvent e) {
JTextComponent target = getTextComponent(e);
if (target != null) {
if ((!target.isEditable()) || (!target.isEnabled())) {
target.getToolkit().beep();
return;
}
Boolean insertOnBreak = (Boolean) target
.getClientProperty(IdlTextEditor.INDENT_ON_INSERT_BREAK);
if (insertOnBreak != null && insertOnBreak.booleanValue()) {
Document document = target.getDocument();
int selectionStart = target.getSelectionStart();
int selectionEnd = target.getSelectionEnd();
int lineNumber = document.getDefaultRootElement().getElementIndex(
selectionStart);
Element lineElement = document.getDefaultRootElement().getElement(lineNumber);
int lastLineNumber = document.getDefaultRootElement().getElementIndex(
selectionEnd);
Element lastLineElement = document.getDefaultRootElement().getElement(
lastLineNumber);
int startOffset = lineElement.getStartOffset();
int endOffset = selectionStart;
int length = endOffset - startOffset;
try {
Segment lineHead = new Segment();
target.getDocument().getText(startOffset, length, lineHead);
StringBuffer spaces = new StringBuffer();
for (int i = lineHead.offset; i < lineHead.offset + lineHead.count; i++) {
if (lineHead.array[i] == ' ')
spaces.append(" ");
else if (lineHead.array[i] == '\t')
spaces.append("\t");
else
break;
}
String newLine = document.getText(selectionEnd, Math.min(lastLineElement
.getEndOffset(), document.getLength())
- selectionEnd);
newLine = newLine.trim();
String lastChar = document.getText(selectionEnd - 1, 1);
String nextChar = null;
try {
nextChar = document.getText(selectionEnd, 1);
} catch (StringIndexOutOfBoundsException strexc) {
System.out.println(strexc);
}
target.select(target.getSelectionStart(), Math.min(lastLineElement
.getEndOffset(), document.getLength()));
if (lastChar.equals("{") && (nextChar == null || !nextChar.equals("}"))) {
spaces.append(IdlTextEditor.TAB_SIZE);
}
target.replaceSelection("\n" + spaces + newLine + "\n");
target.setCaretPosition(endOffset + spaces.length() + 1);
} catch (Exception exc) {
target.replaceSelection("\n");
}
} else
target.replaceSelection("\n");
}
}
}
}
/* EOF */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -