diff --git a/Artifacts/SubServers.Bungee.jar b/Artifacts/SubServers.Bungee.jar
index ab66f3f2..8960e9aa 100644
Binary files a/Artifacts/SubServers.Bungee.jar and b/Artifacts/SubServers.Bungee.jar differ
diff --git a/Artifacts/SubServers.Console.jar b/Artifacts/SubServers.Console.jar
index e039756c..7f5fa773 100644
Binary files a/Artifacts/SubServers.Console.jar and b/Artifacts/SubServers.Console.jar differ
diff --git a/SubServers.Bungee/META-INF/MANIFEST.MF b/SubServers.Bungee/META-INF/MANIFEST.MF
index 26d6eae2..1467430f 100644
--- a/SubServers.Bungee/META-INF/MANIFEST.MF
+++ b/SubServers.Bungee/META-INF/MANIFEST.MF
@@ -2,4 +2,4 @@ Manifest-Version: 1.0
Class-Path: BungeeCord.jar
Main-Class: net.ME1312.SubServers.Bungee.Launch
Implementation-Version: 2.11.2f
-Specification-Version: 3
+Specification-Version: 0
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java
index 4a3c3949..05fa0a7b 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java
@@ -80,12 +80,12 @@ public class InternalSubLogger extends SubLogger {
// REGEX Formatting
String type = "";
- Matcher matcher = Pattern.compile("^((?:\\s*\\[?([0-9]{2}:[0-9]{2}:[0-9]{2})]?)?[\\s\\/\\\\\\|]*(?:\\[|\\[.*\\/)?(MESSAGE|INFO|WARN|WARNING|ERROR|ERR|SEVERE)\\]?:?\\s*)").matcher(msg);
+ Matcher matcher = Pattern.compile("^((?:\\s*\\[?([0-9]{2}:[0-9]{2}:[0-9]{2})]?)?[\\s\\/\\\\\\|]*(?:\\[|\\[.*\\/)?(MESSAGE|INFO|WARNING|WARN|ERROR|ERR|SEVERE)\\]?:?\\s*)").matcher(msg);
while (matcher.find()) {
type = matcher.group(3).toUpperCase();
}
- msg = msg.replaceAll("^((?:\\s*\\[?([0-9]{2}:[0-9]{2}:[0-9]{2})]?)?[\\s\\/\\\\\\|]*(?:\\[|\\[.*\\/)?(MESSAGE|INFO|WARN|WARNING|ERROR|ERR|SEVERE)\\]?:?\\s*)", "");
+ msg = msg.replaceAll("^((?:\\s*\\[?([0-9]{2}:[0-9]{2}:[0-9]{2})]?)?[\\s\\/\\\\\\|]*(?:\\[|\\[.*\\/)?(MESSAGE|INFO|WARNING|WARN|ERROR|ERR|SEVERE)\\]?:?\\s*)", "");
// Determine LOG LEVEL
switch (type) {
diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java
index a6542928..674f606f 100644
--- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java
+++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Launch.java
@@ -3,7 +3,6 @@ package net.ME1312.SubServers.Bungee;
import net.ME1312.SubServers.Bungee.Library.Container;
import net.ME1312.SubServers.Bungee.Library.Util;
-import javax.swing.*;
import java.security.Security;
import java.text.SimpleDateFormat;
import java.util.Calendar;
diff --git a/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleWindow.form b/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleWindow.form
index baaa29ad..4f109403 100644
--- a/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleWindow.form
+++ b/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleWindow.form
@@ -31,7 +31,6 @@
-
@@ -80,7 +79,7 @@
-
+
@@ -103,8 +102,9 @@
-
+
+
@@ -117,7 +117,11 @@
-
+
+
+
+
+
@@ -126,7 +130,11 @@
-
+
+
+
+
+
@@ -135,7 +143,10 @@
-
+
+
+
+
diff --git a/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleWindow.java b/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleWindow.java
index 3b23344b..9eeae3f0 100644
--- a/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleWindow.java
+++ b/SubServers.Console/src/net/ME1312/SubServers/Console/ConsoleWindow.java
@@ -5,10 +5,10 @@ import net.ME1312.SubServers.Bungee.Host.SubLogger;
import net.ME1312.SubServers.Bungee.Host.SubServer;
import javax.swing.*;
+import javax.swing.border.Border;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
-import java.lang.reflect.InvocationTargetException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
@@ -32,13 +32,11 @@ public class ConsoleWindow implements SubLogFilter {
private JButton findD;
private int findO = 0;
private int findI = 0;
- private List events;
- private boolean running = false;
private boolean open = false;
private SubLogger logger;
private KeyEventDispatcher keys = event -> {
if (window.isVisible() && window.isFocused()) {
- if (event.getID() == KeyEvent.KEY_RELEASED) switch (event.getKeyCode()) {
+ if (event.getID() == KeyEvent.KEY_PRESSED) switch (event.getKeyCode()) {
case KeyEvent.VK_UP:
if (ifocus)
popup.prev(input);
@@ -67,212 +65,248 @@ public class ConsoleWindow implements SubLogFilter {
public ConsoleWindow(ConsolePlugin plugin, SubLogger logger) {
this.plugin = plugin;
this.logger = logger;
- this.events = new LinkedList();
- events.add(() -> {
- window = new JFrame();
+ window = new JFrame();
- JMenuBar jMenu = new JMenuBar();
- JMenu menu = new JMenu("View");
- JMenuItem item = new JMenuItem("Scroll to Top");
- item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_UP, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
- item.addActionListener(event -> vScroll.getVerticalScrollBar().setValue(0));
- menu.add(item);
- item = new JMenuItem("Scroll to Bottom");
- item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
- item.addActionListener(event -> vScroll.getVerticalScrollBar().setValue(vScroll.getVerticalScrollBar().getMaximum() - vScroll.getVerticalScrollBar().getVisibleAmount()));
- menu.add(item);
- item = new JMenuItem("Find");
- item.setAccelerator(KeyStroke.getKeyStroke('F', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
- item.addActionListener(event -> {
- if (find.isVisible()) {
- find.setVisible(false);
- findI = 0;
- findO = 0;
- } else {
- find.setVisible(true);
- findT.selectAll();
- findT.requestFocusInWindow();
- }
- });
- menu.add(item);
- menu.addSeparator();
- item = new JMenuItem("Reset Text Size");
- item.addActionListener(event -> {
- log.setFont(new Font(log.getFont().getName(), log.getFont().getStyle(), 12));
- SwingUtilities.invokeLater(this::hScroll);
- });
- menu.add(item);
- item = new JMenuItem("Bigger Text");
- item.setAccelerator(KeyStroke.getKeyStroke('=', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
- item.addActionListener(event -> {
- log.setFont(new Font(log.getFont().getName(), log.getFont().getStyle(), log.getFont().getSize() + 2));
- SwingUtilities.invokeLater(this::hScroll);
- });
- menu.add(item);
- item = new JMenuItem("Smaller Text");
- item.setAccelerator(KeyStroke.getKeyStroke('-', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
- item.addActionListener(event -> {
- log.setFont(new Font(log.getFont().getName(), log.getFont().getStyle(), log.getFont().getSize() - 2));
- SwingUtilities.invokeLater(this::hScroll);
- });
- menu.add(item);
- menu.addSeparator();
- item = new JMenuItem("Clear Screen");
- item.setAccelerator(KeyStroke.getKeyStroke('L', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
- item.addActionListener(event -> clear());
- menu.add(item);
- item = new JMenuItem("Reload Log");
- item.setAccelerator(KeyStroke.getKeyStroke('R', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
- item.addActionListener(event -> {
- log.setText("\n");
- for (SubLogger.LogMessage message : logger.getMessages()) log(message.getDate(), message.getLevel(), message.getMessage());
- SwingUtilities.invokeLater(this::hScroll);
- });
- menu.add(item);
- jMenu.add(menu);
- window.setJMenuBar(jMenu);
- window.setContentPane(panel);
- window.pack();
- window.setTitle(logger.getName() + " \u2014 SubServers 2");
- window.setSize(1024, 576);
- Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
- int x = (int) ((dimension.getWidth() - window.getWidth()) / 2);
- int y = (int) ((dimension.getHeight() - window.getHeight()) / 2);
- window.setLocation(x, y);
- window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
- window.addWindowListener(new WindowAdapter() {
- @Override
- public void windowClosing(WindowEvent e) {
- close();
- }
- });
- window.addComponentListener(new ComponentAdapter() {
- public void componentResized(ComponentEvent e) {
- SwingUtilities.invokeLater(ConsoleWindow.this::hScroll);
- }
- });
- vScroll.setBorder(BorderFactory.createLineBorder(new Color(40, 44, 45)));
- new SmartScroller(vScroll, SmartScroller.VERTICAL, SmartScroller.END);
- log.setText("\n");
- log.setBorder(BorderFactory.createLineBorder(new Color(40, 44, 45)));
- new TextFieldPopup(log, false);
- ((AbstractDocument) log.getDocument()).setDocumentFilter(new DocumentFilter() {
- @Override
- public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
- super.insertString(fb, offset, string, attr);
- hScroll();
- }
-
- @Override
- public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
- super.replace(fb, offset, length, text, attrs);
- hScroll();
- }
-
- @Override
- public void remove(FilterBypass fb, int offset, int length) throws BadLocationException {
- super.remove(fb, offset, length);
- hScroll();
- }
- });
-
-
- popup = new TextFieldPopup(input, true);
- input.setBorder(BorderFactory.createLineBorder(new Color(69, 73, 74)));
- input.addActionListener((ActionEvent event) -> {
- if (logger.getHandler() instanceof SubServer && input.getText().length() > 0 && !input.getText().equals(">")) {
- if (((SubServer) logger.getHandler()).command((input.getText().startsWith(">")) ? input.getText().substring(1) : input.getText())) {
- popup.commands.add((input.getText().startsWith(">")) ? input.getText().substring(1) : input.getText());
- popup.current = 0;
- popup.last = true;
- input.setText("");
- }
- }
- });
- ((AbstractDocument) input.getDocument()).setDocumentFilter(new DocumentFilter() {
- @Override
- public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
- if (offset < 1) {
- return;
- }
- super.insertString(fb, offset, string, attr);
- }
-
- @Override
- public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
- if (offset < 1) {
- length = Math.max(0, length - 1);
- offset = 1;
- }
- super.replace(fb, offset, length, text, attrs);
- }
-
- @Override
- public void remove(FilterBypass fb, int offset, int length) throws BadLocationException {
- if (offset < 1) {
- length = Math.max(0, length + offset - 1);
- offset = 1;
- }
- if (length > 0) {
- super.remove(fb, offset, length);
- }
- }
- });
- input.addFocusListener(new FocusListener() {
- @Override
- public void focusGained(FocusEvent e) {
- ifocus = true;
- }
- @Override
- public void focusLost(FocusEvent e) {
- ifocus = false;
- }
- });
-
- vScroll.getHorizontalScrollBar().addAdjustmentListener(event -> {
- if (!eScroll.contains(event.getValue())) {
- eScroll.add(event.getValue());
- hScroll.setValue(event.getValue());
- } else {
- eScroll.remove((Object) event.getValue());
- }
- });
- hScroll.addAdjustmentListener(event -> {
- if (!eScroll.contains(event.getValue())) {
- eScroll.add(event.getValue());
- vScroll.getHorizontalScrollBar().setValue(event.getValue());
- } else {
- eScroll.remove((Object) event.getValue());
- }
- });
-
- new TextFieldPopup(findT, false);
- findT.setBorder(BorderFactory.createLineBorder(new Color(69, 73, 74)));
- findP.addActionListener(event -> find(false));
- findN.addActionListener(event -> find(true));
- findD.addActionListener(event -> {
+ JMenuBar jMenu = new JMenuBar();
+ JMenu menu = new JMenu("View");
+ JMenuItem item = new JMenuItem("Scroll to Top");
+ item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_UP, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
+ item.addActionListener(event -> vScroll.getVerticalScrollBar().setValue(0));
+ menu.add(item);
+ item = new JMenuItem("Scroll to Bottom");
+ item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
+ item.addActionListener(event -> vScroll.getVerticalScrollBar().setValue(vScroll.getVerticalScrollBar().getMaximum() - vScroll.getVerticalScrollBar().getVisibleAmount()));
+ menu.add(item);
+ item = new JMenuItem("Find");
+ item.setAccelerator(KeyStroke.getKeyStroke('F', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
+ item.addActionListener(event -> {
+ if (find.isVisible()) {
find.setVisible(false);
findI = 0;
findO = 0;
- });
-
-
- if (!(logger.getHandler() instanceof SubServer)) {
- input.setVisible(false);
- hScroll.setVisible(false);
- vScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
+ } else {
+ find.setVisible(true);
+ findT.selectAll();
+ findT.requestFocusInWindow();
+ }
+ });
+ menu.add(item);
+ menu.addSeparator();
+ item = new JMenuItem("Reset Text Size");
+ item.addActionListener(event -> {
+ log.setFont(new Font(log.getFont().getName(), log.getFont().getStyle(), 12));
+ SwingUtilities.invokeLater(this::hScroll);
+ });
+ menu.add(item);
+ item = new JMenuItem("Bigger Text");
+ item.setAccelerator(KeyStroke.getKeyStroke('=', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
+ item.addActionListener(event -> {
+ log.setFont(new Font(log.getFont().getName(), log.getFont().getStyle(), log.getFont().getSize() + 2));
+ SwingUtilities.invokeLater(this::hScroll);
+ });
+ menu.add(item);
+ item = new JMenuItem("Smaller Text");
+ item.setAccelerator(KeyStroke.getKeyStroke('-', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
+ item.addActionListener(event -> {
+ log.setFont(new Font(log.getFont().getName(), log.getFont().getStyle(), log.getFont().getSize() - 2));
+ SwingUtilities.invokeLater(this::hScroll);
+ });
+ menu.add(item);
+ menu.addSeparator();
+ item = new JMenuItem("Clear Screen");
+ item.setAccelerator(KeyStroke.getKeyStroke('L', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
+ item.addActionListener(event -> clear());
+ menu.add(item);
+ item = new JMenuItem("Reload Log");
+ item.setAccelerator(KeyStroke.getKeyStroke('R', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), true));
+ item.addActionListener(event -> {
+ log.setText("\n");
+ for (SubLogger.LogMessage message : logger.getMessages())
+ log(message.getDate(), message.getLevel(), message.getMessage());
+ SwingUtilities.invokeLater(this::hScroll);
+ });
+ menu.add(item);
+ jMenu.add(menu);
+ window.setJMenuBar(jMenu);
+ window.setContentPane(panel);
+ window.pack();
+ window.setTitle(logger.getName() + " \u2014 SubServers 2");
+ window.setSize(1024, 576);
+ Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
+ int x = (int) ((dimension.getWidth() - window.getWidth()) / 2);
+ int y = (int) ((dimension.getHeight() - window.getHeight()) / 2);
+ window.setLocation(x, y);
+ window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+ window.addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowClosing(WindowEvent e) {
+ close();
+ }
+ });
+ window.addComponentListener(new ComponentAdapter() {
+ public void componentResized(ComponentEvent e) {
+ SwingUtilities.invokeLater(ConsoleWindow.this::hScroll);
+ }
+ });
+ vScroll.setBorder(BorderFactory.createEmptyBorder());
+ new SmartScroller(vScroll, SmartScroller.VERTICAL, SmartScroller.END);
+ log.setText("\n");
+ log.setBorder(BorderFactory.createLineBorder(new Color(40, 44, 45)));
+ new TextFieldPopup(log, false);
+ ((AbstractDocument) log.getDocument()).setDocumentFilter(new DocumentFilter() {
+ @Override
+ public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
+ super.insertString(fb, offset, string, attr);
+ hScroll();
}
- logger.registerFilter(this);
- for (SubLogger.LogMessage message : logger.getMessages()) log(message.getDate(), message.getLevel(), message.getMessage());
- KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(keys);
- events.add(() -> {
- if (logger.isLogging() && !open) open();
- });
- hScroll();
+ @Override
+ public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
+ super.replace(fb, offset, length, text, attrs);
+ hScroll();
+ }
+
+ @Override
+ public void remove(FilterBypass fb, int offset, int length) throws BadLocationException {
+ super.remove(fb, offset, length);
+ hScroll();
+ }
});
- runEvents();
+
+
+ popup = new TextFieldPopup(input, true);
+ input.setBorder(BorderFactory.createLineBorder(new Color(40, 44, 45), 4));
+ input.addActionListener((ActionEvent event) -> {
+ if (logger.getHandler() instanceof SubServer && input.getText().length() > 0 && !input.getText().equals(">")) {
+ if (((SubServer) logger.getHandler()).command((input.getText().startsWith(">")) ? input.getText().substring(1) : input.getText())) {
+ popup.commands.add((input.getText().startsWith(">")) ? input.getText().substring(1) : input.getText());
+ popup.current = 0;
+ popup.last = true;
+ input.setText("");
+ }
+ }
+ });
+ ((AbstractDocument) input.getDocument()).setDocumentFilter(new DocumentFilter() {
+ @Override
+ public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
+ if (offset < 1) {
+ return;
+ }
+ super.insertString(fb, offset, string, attr);
+ }
+
+ @Override
+ public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
+ if (offset < 1) {
+ length = Math.max(0, length - 1);
+ offset = 1;
+ }
+ super.replace(fb, offset, length, text, attrs);
+ }
+
+ @Override
+ public void remove(FilterBypass fb, int offset, int length) throws BadLocationException {
+ if (offset < 1) {
+ length = Math.max(0, length + offset - 1);
+ offset = 1;
+ }
+ if (length > 0) {
+ super.remove(fb, offset, length);
+ }
+ }
+ });
+ input.addFocusListener(new FocusListener() {
+ @Override
+ public void focusGained(FocusEvent e) {
+ ifocus = true;
+ }
+
+ @Override
+ public void focusLost(FocusEvent e) {
+ ifocus = false;
+ }
+ });
+
+ vScroll.getVerticalScrollBar().setBackground(new Color(69, 73, 74));
+ vScroll.getHorizontalScrollBar().setBackground(new Color(69, 73, 74));
+ vScroll.getHorizontalScrollBar().addAdjustmentListener(event -> {
+ if (!eScroll.contains(event.getValue())) {
+ eScroll.add(event.getValue());
+ hScroll.setValue(event.getValue());
+ } else {
+ eScroll.remove((Object) event.getValue());
+ }
+ });
+ hScroll.setBackground(new Color(69, 73, 74));
+ hScroll.addAdjustmentListener(event -> {
+ if (!eScroll.contains(event.getValue())) {
+ eScroll.add(event.getValue());
+ vScroll.getHorizontalScrollBar().setValue(event.getValue());
+ } else {
+ eScroll.remove((Object) event.getValue());
+ }
+ });
+
+ new TextFieldPopup(findT, false);
+ findT.setBorder(BorderFactory.createLineBorder(new Color(40, 44, 45), 4));
+ ((AbstractDocument) findT.getDocument()).setDocumentFilter(new DocumentFilter() {
+ @Override
+ public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
+ super.insertString(fb, offset, string, attr);
+ findI = 0;
+ findO = 0;
+ }
+
+ @Override
+ public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
+ super.replace(fb, offset, length, text, attrs);
+ findI = 0;
+ findO = 0;
+ }
+
+ @Override
+ public void remove(FilterBypass fb, int offset, int length) throws BadLocationException {
+ super.remove(fb, offset, length);
+ findI = 0;
+ findO = 0;
+ }
+ });
+ findP.addChangeListener(e -> {
+ if (findP.getModel().isPressed()) findP.setBackground(new Color(40, 44, 45));
+ else findP.setBackground(new Color(69, 73, 74));
+ });
+ findP.setBorder(new ButtonBorder(40, 44, 45, 4));
+ findP.addActionListener(event -> find(false));
+ findN.addChangeListener(e -> {
+ if (findN.getModel().isPressed()) findN.setBackground(new Color(40, 44, 45));
+ else findN.setBackground(new Color(69, 73, 74));
+ });
+ findN.setBorder(new ButtonBorder(40, 44, 45, 4));
+ findN.addActionListener(event -> find(true));
+ findD.addChangeListener(e -> {
+ if (findD.getModel().isPressed()) findD.setBackground(new Color(40, 44, 45));
+ else findD.setBackground(new Color(69, 73, 74));
+ });
+ findD.setBorder(new ButtonBorder(40, 44, 45, 4));
+ findD.addActionListener(event -> {
+ find.setVisible(false);
+ findI = 0;
+ findO = 0;
+ });
+
+
+ if (!(logger.getHandler() instanceof SubServer)) {
+ input.setVisible(false);
+ hScroll.setVisible(false);
+ vScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
+ }
+
+ logger.registerFilter(this);
+ for (SubLogger.LogMessage message : logger.getMessages()) log(message.getDate(), message.getLevel(), message.getMessage());
+ KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(keys);
+ if (logger.isLogging() && !open) open();
+ SwingUtilities.invokeLater(this::hScroll);
}
private void hScroll() {
hScroll.setMaximum(vScroll.getHorizontalScrollBar().getMaximum());
@@ -304,49 +338,18 @@ public class ConsoleWindow implements SubLogFilter {
SwingUtilities.invokeLater(this::hScroll);
}
- public boolean runEvents() {
- return runEvents(false);
- }
-
- private boolean runEvents(boolean force) {
- if (events.size() > 0 && (force || !running)) {
- try {
- running = true;
- final Runnable event = events.get(0);
- if (event != null) {
- SwingUtilities.invokeLater(() -> {
- try {
- event.run();
- } catch (Throwable e) {
- new InvocationTargetException(e, "Exception while running SubServers Console Window Event").printStackTrace();
- }
- events.remove(0);
- if (!runEvents(true)) running = false;
- });
- } else {
- events.remove(0);
- if (!runEvents(true)) running = false;
- }
- return true;
- } catch (NullPointerException e) {
- return false;
- }
- } else return false;
- }
-
@Override
public void start() {
open();
}
public void open() {
- events.add(() -> {
+ SwingUtilities.invokeLater(() -> {
if (!open) {
window.setVisible(true);
this.open = true;
}
window.toFront();
});
- runEvents();
}
public boolean isOpen() {
@@ -358,7 +361,7 @@ public class ConsoleWindow implements SubLogFilter {
close();
}
public void close() {
- events.add(() -> {
+ SwingUtilities.invokeLater(() -> {
if (open) {
this.open = false;
if (find.isVisible()) {
@@ -370,7 +373,6 @@ public class ConsoleWindow implements SubLogFilter {
plugin.onClose(this);
}
});
- runEvents();
}
public void destroy() {
@@ -416,7 +418,7 @@ public class ConsoleWindow implements SubLogFilter {
} catch (BadLocationException e) {
findI = log.getText().length() - 1;
JOptionPane.showMessageDialog(window,
- "There are no more results\nSearch again to start from the " + ((direction)?"top":"bottom"),
+ ((findO > 0)?"There are no more results\nSearch again to start from the " + ((direction)?"top":"bottom"):"Couldn't find \"" + findT.getText() + "\""),
"Find",
JOptionPane.WARNING_MESSAGE);
}
@@ -467,6 +469,21 @@ public class ConsoleWindow implements SubLogFilter {
menu.add(paste);
}
+ Action find = new TextAction("Find Selection") {
+ public void actionPerformed(ActionEvent e) {
+ JTextComponent field = getFocusedComponent();
+ if (field.getSelectedText() != null && field.getSelectedText().length() > 0) {
+ findT.setText(field.getSelectedText());
+ findI = 0;
+ findO = 0;
+ ConsoleWindow.this.find.setVisible(true);
+ find(true);
+ }
+ }
+ };
+ find.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('F', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() + KeyEvent.SHIFT_MASK, true));
+ menu.add(find);
+
Action selectAll = new TextAction("Select All") {
public void actionPerformed(ActionEvent e) {
JTextComponent field = getFocusedComponent();
@@ -628,4 +645,29 @@ public class ConsoleWindow implements SubLogFilter {
previousMaximum = maximum;
}
}
+ private class ButtonBorder implements Border {
+ private int radius;
+ private Color color;
+
+ public ButtonBorder(int red, int green, int blue, int radius) {
+ this.color = new Color(red, green, blue);
+ this.radius = radius;
+ }
+
+
+ public Insets getBorderInsets(Component c) {
+ return new Insets(this.radius+1, this.radius+1, this.radius+2, this.radius);
+ }
+
+
+ public boolean isBorderOpaque() {
+ return true;
+ }
+
+
+ public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
+ g.setColor(color);
+ g.drawRoundRect(x, y, width-1, height-1, radius, radius);
+ }
+ }
}