From ba202365c737bf076a749d80c3bf7d87ed275c0a Mon Sep 17 00:00:00 2001 From: StevenLawson Date: Sun, 17 Aug 2014 08:27:20 -0400 Subject: [PATCH] Added automatic enabling of telnet.enhanced. Better title display. --- .../BTC_ConnectionManager.java | 91 +++++++++++++++++-- .../BukkitTelnetClient/BTC_MainPanel.form | 7 +- .../BukkitTelnetClient/BTC_MainPanel.java | 48 +++++----- .../BTC_PlayerListDecoder.java | 14 ++- .../BukkitTelnetClient.java | 1 + 5 files changed, 127 insertions(+), 34 deletions(-) diff --git a/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_ConnectionManager.java b/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_ConnectionManager.java index 94112dc..826e123 100644 --- a/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_ConnectionManager.java +++ b/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_ConnectionManager.java @@ -1,5 +1,7 @@ package me.StevenLawson.BukkitTelnetClient; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -7,6 +9,7 @@ import java.io.InputStreamReader; import java.io.PrintStream; import java.util.Map; import java.util.logging.Level; +import javax.swing.Timer; import org.apache.commons.lang3.StringUtils; import org.apache.commons.net.telnet.TelnetClient; @@ -17,6 +20,7 @@ public class BTC_ConnectionManager private String hostname; private int port; private boolean canDoDisconnect = false; + private String loginName; public BTC_ConnectionManager() { @@ -31,12 +35,12 @@ public class BTC_ConnectionManager btc.getTxtServer().setEnabled(false); btc.getBtnDisconnect().setEnabled(true); - btc.setTitle("BukkitTelnetClient - " + BukkitTelnetClient.VERSION_STRING + " - " + hostname + ":" + port); - System.out.println("Connecting to " + hostname + ":" + port + "..."); this.hostname = hostname; this.port = port; + this.loginName = null; + updateTitle(true); startConnectThread(); } @@ -92,7 +96,9 @@ public class BTC_ConnectionManager btc.getBtnSend().setEnabled(false); btc.getTxtCommand().setEnabled(false); - btc.setTitle("BukkitTelnetClient - " + BukkitTelnetClient.VERSION_STRING + " - Disconnected"); + loginName = null; + + updateTitle(false); System.out.println("\nDisconnected."); } @@ -101,10 +107,18 @@ public class BTC_ConnectionManager private final PrintStream consoleStream = new PrintStream(consoleBuffer); public void sendCommand(String text) + { + sendCommand(text, true); + } + + public void sendCommand(String text, boolean verbose) { try { - consoleStream.format("%s\r\n", text); + if (verbose) + { + consoleStream.format("%s\r\n", text); + } this.telnetClient.getOutputStream().write((text + "\n").getBytes()); this.telnetClient.getOutputStream().flush(); @@ -115,6 +129,21 @@ public class BTC_ConnectionManager } } + public void sendDelayedCommand(final String text, final boolean verbose, final int delay) + { + final Timer timer = new Timer(delay, new ActionListener() + { + @Override + public void actionPerformed(ActionEvent ae) + { + sendCommand(text, verbose); + } + }); + + timer.setRepeats(false); + timer.start(); + } + private void startConnectThread() { if (this.connectThread != null) @@ -160,17 +189,30 @@ public class BTC_ConnectionManager { final String line = consoleBuffer.toString(); - final Map playerList = BTC_PlayerListDecoder.decodePlayerListMessage(line); - - if (playerList != null) + String _loginName = null; + if (BTC_ConnectionManager.this.loginName == null) { - btc.updatePlayerList(playerList); + _loginName = BTC_PlayerListDecoder.checkForLoginMessage(line); + } + if (_loginName != null) + { + BTC_ConnectionManager.this.loginName = _loginName; + updateTitle(true); + sendDelayedCommand("telnet.enhanced", false, 500); } else { - if (!BTC_FormatHandler.skipLine(line)) + final Map playerList = BTC_PlayerListDecoder.checkForPlayerListMessage(line); + if (playerList != null) { - System.out.print(line); + btc.updatePlayerList(playerList); + } + else + { + if (!BTC_FormatHandler.skipLine(line)) + { + System.out.print(line); + } } } @@ -204,4 +246,33 @@ public class BTC_ConnectionManager }); this.connectThread.start(); } + + public final void updateTitle(boolean isConnected) + { + final BTC_MainPanel mainPanel = BukkitTelnetClient.mainPanel; + if (mainPanel == null) + { + return; + } + + String title; + + if (isConnected) + { + if (loginName == null) + { + title = String.format("BukkitTelnetClient - %s - %s:%d", BukkitTelnetClient.VERSION_STRING, hostname, port); + } + else + { + title = String.format("BukkitTelnetClient - %s - %s@%s:%d", BukkitTelnetClient.VERSION_STRING, loginName, hostname, port); + } + } + else + { + title = String.format("BukkitTelnetClient - %s - Disconnected", BukkitTelnetClient.VERSION_STRING); + } + + mainPanel.setTitle(title); + } } diff --git a/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_MainPanel.form b/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_MainPanel.form index 7d044cb..a913501 100644 --- a/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_MainPanel.form +++ b/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_MainPanel.form @@ -1,6 +1,6 @@ -
+ @@ -269,7 +269,10 @@ - + + + + diff --git a/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_MainPanel.java b/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_MainPanel.java index 1c33cf5..6518b5e 100644 --- a/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_MainPanel.java +++ b/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_MainPanel.java @@ -154,26 +154,6 @@ public class BTC_MainPanel extends javax.swing.JFrame } } - public JCheckBox getChkAutoScroll() - { - return chkAutoScroll; - } - - public JCheckBox getChkIgnorePlayerCommands() - { - return chkIgnorePlayerCommands; - } - - public JCheckBox getChkIgnoreServerCommands() - { - return chkIgnoreServerCommands; - } - - public JCheckBox getChkShowChatOnly() - { - return chkShowChatOnly; - } - public final void saveServersAndTriggerConnect() { String selected_server = (String) txtServer.getSelectedItem(); @@ -381,7 +361,8 @@ public class BTC_MainPanel extends javax.swing.JFrame return canEdit [columnIndex]; } }); - tblPlayers.setColumnSelectionAllowed(true); + tblPlayers.setRowSelectionAllowed(true); + tblPlayers.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jScrollPane2.setViewportView(tblPlayers); tblPlayers.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); @@ -572,4 +553,29 @@ public class BTC_MainPanel extends javax.swing.JFrame { return txtServer; } + + public JCheckBox getChkAutoScroll() + { + return chkAutoScroll; + } + + public JCheckBox getChkIgnorePlayerCommands() + { + return chkIgnorePlayerCommands; + } + + public JCheckBox getChkIgnoreServerCommands() + { + return chkIgnoreServerCommands; + } + + public JCheckBox getChkShowChatOnly() + { + return chkShowChatOnly; + } + + public BTC_ConnectionManager getConnectionManager() + { + return connectionManager; + } } diff --git a/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_PlayerListDecoder.java b/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_PlayerListDecoder.java index 009f025..cb1dc3b 100644 --- a/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_PlayerListDecoder.java +++ b/src/main/java/me/StevenLawson/BukkitTelnetClient/BTC_PlayerListDecoder.java @@ -12,13 +12,25 @@ import org.json.JSONObject; public class BTC_PlayerListDecoder { private static final Pattern PLAYER_LIST_MESSAGE = Pattern.compile(":\\[.+@BukkitTelnet\\]\\$ playerList~(.+)"); + private static final Pattern LOGIN_MESSAGE = Pattern.compile("\\[.+?@BukkitTelnet\\]\\$ Logged in as (.+)\\."); private BTC_PlayerListDecoder() { throw new AssertionError(); } - public static final Map decodePlayerListMessage(String message) + public static final String checkForLoginMessage(String message) + { + final Matcher matcher = LOGIN_MESSAGE.matcher(message); + if (matcher.find()) + { + return matcher.group(1); + } + + return null; + } + + public static final Map checkForPlayerListMessage(String message) { final Matcher matcher = PLAYER_LIST_MESSAGE.matcher(message); if (matcher.find()) diff --git a/src/main/java/me/StevenLawson/BukkitTelnetClient/BukkitTelnetClient.java b/src/main/java/me/StevenLawson/BukkitTelnetClient/BukkitTelnetClient.java index dfad944..4424f5f 100644 --- a/src/main/java/me/StevenLawson/BukkitTelnetClient/BukkitTelnetClient.java +++ b/src/main/java/me/StevenLawson/BukkitTelnetClient/BukkitTelnetClient.java @@ -73,6 +73,7 @@ public class BukkitTelnetClient public void run() { mainPanel = new BTC_MainPanel(); + mainPanel.getConnectionManager().updateTitle(false); } }); }