Search in sources :

Example 16 with DefaultCaret

use of javax.swing.text.DefaultCaret in project OpenTCS-4 by touchmii.

the class ControlCenterInfoHandler method publish.

/**
 * Displays the notification.
 *
 * @param notification The notification
 */
private void publish(UserNotification notification) {
    DefaultCaret caret = (DefaultCaret) textArea.getCaret();
    if (autoScroll) {
        caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
        textArea.setCaretPosition(textArea.getDocument().getLength());
    } else {
        caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
    }
    textArea.append(format(notification));
    textArea.append("\n");
    checkLength();
}
Also used : DefaultCaret(javax.swing.text.DefaultCaret)

Example 17 with DefaultCaret

use of javax.swing.text.DefaultCaret in project OpenTCS-4 by touchmii.

the class KernelStatusPanel method initComponents.

private void initComponents() {
    DefaultCaret caret = (DefaultCaret) statusTextArea.getCaret();
    caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
    setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    setAutoscrolls(true);
    setPreferredSize(new Dimension(183, 115));
    statusTextArea.setEditable(false);
    statusTextArea.setColumns(20);
    // NOI18N
    statusTextArea.setFont(new Font("Monospaced", 0, 11));
    statusTextArea.setLineWrap(true);
    statusTextArea.setRows(5);
    statusTextArea.setWrapStyleWord(true);
    setViewportView(statusTextArea);
}
Also used : DefaultCaret(javax.swing.text.DefaultCaret) Dimension(java.awt.Dimension) Font(java.awt.Font)

Example 18 with DefaultCaret

use of javax.swing.text.DefaultCaret in project opentcs by openTCS.

the class ControlCenterInfoHandler method publish.

/**
 * Displays the notification.
 *
 * @param notification The notification
 */
private void publish(UserNotification notification) {
    DefaultCaret caret = (DefaultCaret) textArea.getCaret();
    if (autoScroll) {
        caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
        textArea.setCaretPosition(textArea.getDocument().getLength());
    } else {
        caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
    }
    textArea.append(format(notification));
    textArea.append("\n");
    checkLength();
}
Also used : DefaultCaret(javax.swing.text.DefaultCaret)

Example 19 with DefaultCaret

use of javax.swing.text.DefaultCaret in project opentcs by openTCS.

the class KernelStatusPanel method initComponents.

private void initComponents() {
    DefaultCaret caret = (DefaultCaret) statusTextArea.getCaret();
    caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
    setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    setAutoscrolls(true);
    setPreferredSize(new Dimension(183, 115));
    statusTextArea.setEditable(false);
    statusTextArea.setColumns(20);
    // NOI18N
    statusTextArea.setFont(new Font("Monospaced", 0, 11));
    statusTextArea.setLineWrap(true);
    statusTextArea.setRows(5);
    statusTextArea.setWrapStyleWord(true);
    setViewportView(statusTextArea);
}
Also used : DefaultCaret(javax.swing.text.DefaultCaret) Dimension(java.awt.Dimension) Font(java.awt.Font)

Example 20 with DefaultCaret

use of javax.swing.text.DefaultCaret in project NJAU-OS_sourse_design-simulated_linux by 404874351.

the class FileSystemCommander method initDataStructure.

/**
 * 初始化页面数据结构
 */
public void initDataStructure() {
    // 隐藏vim界面
    this.vimScrollPane.setVisible(false);
    this.vimModeInput.setVisible(false);
    // 滚动条默认处于最底端
    DefaultCaret cmdCaret = (DefaultCaret) cmd.getCaret();
    cmdCaret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
    DefaultCaret vimCaret = (DefaultCaret) vim.getCaret();
    vimCaret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
    // 初始化历史记录和对应指针
    this.history = new Vector<>();
    this.historyPointer = this.history.size();
    // 添加窗口事件
    this.addWindowListener(new WindowAdapter() {

        @Override
        public void windowClosing(WindowEvent e) {
            dashboard.getManager().getFileSystem().setRoot(false);
        }
    });
    // 添加键盘事件
    cmd.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(KeyEvent e) {
            int code = e.getKeyCode();
            switch(code) {
                // 输入 backspace
                case KeyEvent.VK_BACK_SPACE:
                    {
                        // 禁用过多的退格
                        if (commander.length() == 0) {
                            e.consume();
                            return;
                        }
                        // 命令内容撤销
                        commander = commander.substring(0, commander.length() - 1);
                        break;
                    }
                // 输入 enter
                case KeyEvent.VK_ENTER:
                    {
                        // 禁用默认换行
                        e.consume();
                        cmd.append("\n");
                        if (commander.length() > 0) {
                            // 发送一条指令并执行
                            dashboard.getManager().getFileSystem().cmd(commander);
                        }
                        // 准备接收下一条指令
                        readyToNext();
                        break;
                    }
                // 输入 UP
                case KeyEvent.VK_UP:
                    {
                        // 禁用默认光标移动
                        e.consume();
                        // 调用上一条历史指令
                        if (historyPointer > 0) {
                            String tempStr = cmd.getText();
                            cmd.setText(tempStr.substring(0, tempStr.length() - commander.length()));
                            commander = history.get(--historyPointer);
                            cmd.append(commander);
                        }
                        break;
                    }
                // 输入 DOWN
                case KeyEvent.VK_DOWN:
                    {
                        // 禁用默认光标移动
                        e.consume();
                        // 调用下一条历史指令
                        if (historyPointer < history.size() - 1) {
                            String tempStr = cmd.getText();
                            cmd.setText(tempStr.substring(0, tempStr.length() - commander.length()));
                            commander = history.get(++historyPointer);
                            cmd.append(commander);
                        }
                        break;
                    }
                // 输入一般字符
                default:
                    {
                        for (int i = 0; i < INVALID_CHAR.length; ++i) {
                            if (code == INVALID_CHAR[i]) {
                                return;
                            }
                        }
                        // 如果是可显示字符,则更新接收的指令
                        commander += new String(new char[] { e.getKeyChar() });
                        break;
                    }
            }
        }
    });
    // 该form只会在普通模式被激活
    defaultInput.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(KeyEvent e) {
            char key = e.getKeyChar();
            // 普通模式
            if (vimMode == VIM_PLAIN) {
                switch(key) {
                    // 输入 I,进入插入模式
                    case 'i':
                        {
                            // defaultInput禁用
                            defaultInput.setEnabled(false);
                            // vim激活
                            vim.setEnabled(true);
                            vim.requestFocus(true);
                            // Mode禁用,显示INSERT标志
                            vimMode = VIM_INSERT;
                            vimState = "INSERT";
                            vimModeInput.setEnabled(false);
                            vimModeInput.setText(vimState);
                            break;
                        }
                    // 输入 :,进入命令模式
                    case ':':
                        {
                            // defaultInput禁用
                            defaultInput.setEnabled(false);
                            // vim禁用
                            vim.setEnabled(false);
                            // Mode激活
                            vimMode = VIM_COMMANDER;
                            vimState = ":";
                            vimModeInput.setText(vimState);
                            vimModeInput.setEnabled(true);
                            vimModeInput.requestFocus(true);
                            break;
                        }
                    // 输入其他字符即默认输入
                    default:
                        {
                            break;
                        }
                }
            } else {
                e.consume();
            }
        }
    });
    // 该form只会在插入模式被激活
    vim.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(KeyEvent e) {
            int code = e.getKeyCode();
            // 插入模式
            if (vimMode == VIM_INSERT) {
                switch(code) {
                    // 输入 ESC,进入普通模式
                    case KeyEvent.VK_ESCAPE:
                        {
                            // defaultInput激活
                            defaultInput.setEnabled(true);
                            defaultInput.requestFocus(true);
                            // vim禁用
                            vim.setEnabled(false);
                            // Mode禁用,显示普通标志
                            vimMode = VIM_PLAIN;
                            vimState = "PLAIN";
                            vimModeInput.setEnabled(false);
                            vimModeInput.setText(vimState);
                            break;
                        }
                    // 输入其他字符即默认键入
                    default:
                        {
                            break;
                        }
                }
            } else {
                e.consume();
            }
        }
    });
    // 该form只会在命令模式被激活
    vimModeInput.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(KeyEvent e) {
            int code = e.getKeyCode();
            // 命令模式,仅接受 :wq 和 :q
            if (vimMode == VIM_COMMANDER) {
                switch(code) {
                    // 输入 ESC,进入普通模式
                    case KeyEvent.VK_ESCAPE:
                        {
                            // defaultInput激活
                            defaultInput.setEnabled(true);
                            defaultInput.requestFocus(true);
                            // vim禁用
                            vim.setEnabled(false);
                            // Mode禁用,显示普通标志
                            vimMode = VIM_PLAIN;
                            vimState = "PLAIN";
                            vimModeInput.setEnabled(false);
                            vimModeInput.setText(vimState);
                            break;
                        }
                    // 输入 enter,尝试保存/退出
                    case KeyEvent.VK_ENTER:
                        {
                            // 禁用默认换行
                            e.consume();
                            if (vimModeInput.getText().equals(":wq")) {
                                // 保存并退出
                                dashboard.getManager().getFileSystem().vimWrite(history.get(history.size() - 1), vim.getText());
                                vimOut();
                            } else if (vimModeInput.getText().equals(":q")) {
                                // 放弃修改并直接退出
                                vimOut();
                            } else {
                                vimModeInput.setText(":");
                            }
                            break;
                        }
                    // 输入一般字符即默认键入
                    default:
                        {
                            break;
                        }
                }
            } else {
                e.consume();
            }
        }
    });
    // 准备接收下一条指令
    this.readyToNext();
}
Also used : DefaultCaret(javax.swing.text.DefaultCaret)

Aggregations

DefaultCaret (javax.swing.text.DefaultCaret)42 JScrollPane (javax.swing.JScrollPane)12 JTextArea (javax.swing.JTextArea)10 Dimension (java.awt.Dimension)7 Caret (javax.swing.text.Caret)6 JLabel (javax.swing.JLabel)5 JPanel (javax.swing.JPanel)5 BorderLayout (java.awt.BorderLayout)4 JDialog (javax.swing.JDialog)4 JFrame (javax.swing.JFrame)4 LocationFullException (megamek.common.LocationFullException)4 ActionEvent (java.awt.event.ActionEvent)3 ActionListener (java.awt.event.ActionListener)3 FocusEvent (java.awt.event.FocusEvent)3 FocusListener (java.awt.event.FocusListener)3 JButton (javax.swing.JButton)3 HTMLEditorKit (javax.swing.text.html.HTMLEditorKit)3 Color (java.awt.Color)2 Font (java.awt.Font)2 Point (java.awt.Point)2