Возможность работы в консольном режиме

This commit is contained in:
Victor 2016-04-29 16:54:25 +03:00
parent e8b0acfcde
commit fad24bf8bd
2 changed files with 49 additions and 14 deletions

View File

@ -11,17 +11,51 @@ import javax.swing.*;
* @author aNNiMON
*/
public final class ControlFrame extends JFrame {
private static final String TITLE = "Лена-бот";
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
EventQueue.invokeLater(() -> new ControlFrame().setVisible(true));
boolean noGUI = false;
for (int i = 0; i < args.length; i++) {
switch (args[i]) {
case "-nogui":
case "-cli":
noGUI = true;
break;
case "-prefix":
if (i + 1 >= args.length) break;
i++;
Config.ANSWER_PREFIX = args[i];
break;
case "-name":
case "-names":
if (i + 1 >= args.length) break;
i++;
Config.BOT_NAMES = args[i];
break;
case "-token":
if (i + 1 >= args.length) break;
i++;
Config.access_token = args[i];
break;
case "-gettoken":
return;
}
}
if (noGUI) {
StatisticsProcessor.init();
new Thread(new MainThread(true)).start();
} else {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
EventQueue.invokeLater(() -> new ControlFrame().setVisible(true));
}
}
public ControlFrame() {
super(TITLE);
final JMenuBar menu = new JMenuBar();
final JMenu botMenu = new JMenu("Бот");
final JMenuItem launchMenuItem = new JMenuItem("Запустить");
@ -34,17 +68,17 @@ public final class ControlFrame extends JFrame {
helpMenu.add(commandsMenuItem);
menu.add(helpMenu);
setJMenuBar(menu);
setLocationByPlatform(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setPreferredSize(new Dimension(450, 320));
final JTabbedPane tabbedPane = new JTabbedPane();
final JPanel settingsPanel = new JPanel();
settingsPanel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
settingsPanel.setLayout(new BoxLayout(settingsPanel, BoxLayout.PAGE_AXIS));
final JTextField accessTokenField = createTextFieldLine(settingsPanel,
"Access token:", String.valueOf(Config.access_token));
"Access token:", Config.access_token);
final JTextField botNamesTokenField = createTextFieldLine(settingsPanel,
"Обращение:", String.valueOf(Config.BOT_NAMES));
final JTextField answerPrefixField = createTextFieldLine(settingsPanel,
@ -71,16 +105,16 @@ public final class ControlFrame extends JFrame {
final JTextPane queryLog = new JTextPane();
queryLog.setFont(chatLog.getFont());
tabbedPane.addTab("Лог запросов", new JScrollPane(queryLog));
final JTextPane errorsLog = new JTextPane();
errorsLog.setFont(new Font("Monospaced", Font.PLAIN, 10));
tabbedPane.addTab("Лог ошибок", new JScrollPane(errorsLog));
add(tabbedPane);
pack();
Log.init(chatLog, queryLog, errorsLog);
// Actions
launchMenuItem.addActionListener((e) -> {
if (!MainThread.run) {
@ -104,7 +138,7 @@ public final class ControlFrame extends JFrame {
Log.error(ex);
}
});
savePreferencesButton.addActionListener((e) -> {
Config.access_token = accessTokenField.getText();
Config.BOT_NAMES = botNamesTokenField.getText();
@ -119,7 +153,7 @@ public final class ControlFrame extends JFrame {
}).start();
});
}
private static JTextField createTextFieldLine(JPanel panel, String label, String initialText) {
panel.add(new JLabel(label));
final JTextField textField = new JTextField(initialText);
@ -127,5 +161,5 @@ public final class ControlFrame extends JFrame {
panel.add(textField);
return textField;
}
}

View File

@ -77,6 +77,7 @@ public final class Log {
}
public static void insertTo(StyledDocument doc, String text, String style) {
if (doc == null) return;
try {
doc.insertString(doc.getLength(), text, doc.getStyle(style));
} catch (BadLocationException ex) { }