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

📄 javaeditorkit.java

📁 UCS (Ultra Corba Simulator) is one more powerful corba client/servant simulator tool than other simi
💻 JAVA
字号:
/**
 * (c) 2007 UCS_2008
 *
 * Project    UCS (Ultra Corba Simulator)
 * Subproject CorbaMNQ
 * File       JavaEditorKit.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.java;

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: "JavaEditorKit"
 * 
 * @author ucs_2008
 */
public class JavaEditorKit extends DefaultEditorKit {

    /**
     * This is one class constructor
     */
    public JavaEditorKit() {
        super();
        // TODO Auto-generated constructor stub
    }

    static final long serialVersionUID = -8676103424635978728L;

    private ViewFactory javaViewFactory = new JavaViewFactory();

    public String getContentType() {
        return "text/java";
    }

    public Document createDefaultDocument() {
        Document doc = new JavaDocument();
        return doc;
    }

    public final ViewFactory getViewFactory() {
        return javaViewFactory;
    }

    public static class InsertBreakAction extends TextAction {

        /**
         * type: long name: serialVersionUID
         */
        private static final long serialVersionUID = 988787758866050396L;

        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(JavaTextEditor.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(JavaTextEditor.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 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -