📄 jremconsole.java
字号:
/* * JRemCntl - Copyright (C) 2007 Filippo Di Vattimo <fildiv@gmail.com> * See COPYING */package fildiv.jremcntl.server.gui.app;import java.awt.Color;import java.awt.Frame;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.Point;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import fildiv.jremcntl.common.core.Logger;import fildiv.jremcntl.server.utils.JRemServerUtils;public class JRemConsole extends JDialog { private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private JTextArea jConsoleTextArea = null; private JButton jOkButton = null; private JScrollPane jScrollPane = null; private JButton jClearButton = null; private static LoggerImpl logger; // TODO: implements colors for different errors type private static Color STARTUP_COLOR = Color.BLACK; private static Color ERR_COLOR = Color.RED; private static Color WARN_COLOR = Color.ORANGE; private static Color INFO_COLOR = Color.BLACK; private static JRemConsole consoleDialog = null; protected static boolean hasErrors; private static class LoggerImpl implements Logger { private StringBuffer tmpBuffer = new StringBuffer(); private JTextArea textArea; public void setTextArea(JTextArea textArea) { this.textArea = textArea; appendAndScroll(tmpBuffer.toString(), STARTUP_COLOR); } public void error(String s) { JRemConsole.hasErrors = true; appendAndScroll(s, ERR_COLOR); } public void error(Exception e) { JRemConsole.hasErrors = true; appendAndScroll(JRemServerUtils.getExceptionStack(e), ERR_COLOR); } public void info(String s) { appendAndScroll(s, INFO_COLOR); } public void warning(String s) { appendAndScroll(s, WARN_COLOR); } private void appendAndScroll(String s, Color c) { String msg = s + "\n"; if (textArea != null) { msg = textArea.getText() + msg; textArea.setText(msg); textArea.setCaretPosition(textArea.getText().length()); } else { tmpBuffer.append(msg); } } } public static JRemConsole getInstance(Frame frame) { if (consoleDialog == null) { consoleDialog = new JRemConsole(frame); consoleDialog.pack(); consoleDialog.setSize(640, 400); consoleDialog.setModal(true); } return consoleDialog; } public static void showConsole() { if (consoleDialog == null) throw new IllegalStateException( "You must call getInstance before!"); consoleDialog.setVisible(true); } public static void disposeConsole() { if (consoleDialog != null) consoleDialog.dispose(); } /** * @param owner */ public JRemConsole(Frame owner) { super(owner); initialize(); LoggerImpl logger = (LoggerImpl) getLogger(); logger.setTextArea(getJConsoleTextArea()); } public static Logger getLogger() { if (logger == null) logger = new LoggerImpl(); return logger; } /** * This method initializes this * * @return void */ private void initialize() { this.setSize(300, 200); this.setTitle("JRemote Control console"); this.setModal(true); this.setContentPane(getJContentPane()); } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (jContentPane == null) { GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); gridBagConstraints2.gridx = 1; gridBagConstraints2.insets = new Insets(2, 2, 2, 2); gridBagConstraints2.anchor = GridBagConstraints.EAST; gridBagConstraints2.gridy = 1; GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.fill = GridBagConstraints.BOTH; gridBagConstraints.gridy = 0; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new Insets(0, 0, 0, 0); gridBagConstraints.gridwidth = 2; gridBagConstraints.gridx = 0; GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.gridx = 0; gridBagConstraints1.insets = new Insets(2, 2, 2, 2); gridBagConstraints1.anchor = GridBagConstraints.EAST; gridBagConstraints1.gridy = 1; jContentPane = new JPanel(); jContentPane.setLayout(new GridBagLayout()); jContentPane.add(getJOkButton(), gridBagConstraints1); jContentPane.add(getJScrollPane(), gridBagConstraints); jContentPane.add(getJClearButton(), gridBagConstraints2); } return jContentPane; } /** * This method initializes jConsoleTextArea * * @return javax.swing.JTextArea */ private JTextArea getJConsoleTextArea() { if (jConsoleTextArea == null) { jConsoleTextArea = new JTextArea(); jConsoleTextArea.setEditable(false); jConsoleTextArea.setBackground(new Color(243, 243, 243)); } return jConsoleTextArea; } /** * This method initializes jOkButton * * @return javax.swing.JButton */ private JButton getJOkButton() { if (jOkButton == null) { jOkButton = new JButton(); jOkButton.setText("Ok"); jOkButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { onOkButton(); } }); } return jOkButton; } /** * This method initializes jScrollPane * * @return javax.swing.JScrollPane */ private JScrollPane getJScrollPane() { if (jScrollPane == null) { jScrollPane = new JScrollPane(); jScrollPane.setViewportView(getJConsoleTextArea()); } return jScrollPane; } /** * This method initializes jClearButton * * @return javax.swing.JButton */ private JButton getJClearButton() { if (jClearButton == null) { jClearButton = new JButton(); jClearButton.setText("Clear"); jClearButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { onClearButton(); } }); } return jClearButton; } private void onOkButton() { hide(); } private void onClearButton() { getJConsoleTextArea().setText(""); } public static boolean hasErrors() { return hasErrors; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -