mirror of
https://github.com/TotalFreedomMC/ZeroTelnetClient.git
synced 2024-12-22 16:25:14 +00:00
Eliminated use of System.out.
Organized some methods/classes.
This commit is contained in:
parent
e2eaacd1e0
commit
ad0ec69ac9
6 changed files with 249 additions and 287 deletions
|
@ -6,7 +6,6 @@ import java.io.BufferedReader;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.PrintStream;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.Timer;
|
import javax.swing.Timer;
|
||||||
|
@ -21,8 +20,6 @@ public class BTC_ConnectionManager
|
||||||
private int port;
|
private int port;
|
||||||
private boolean canDoDisconnect = false;
|
private boolean canDoDisconnect = false;
|
||||||
private String loginName;
|
private String loginName;
|
||||||
private final ByteArrayOutputStream consoleBuffer = new ByteArrayOutputStream();
|
|
||||||
private final PrintStream consoleStream = new PrintStream(consoleBuffer);
|
|
||||||
|
|
||||||
public BTC_ConnectionManager()
|
public BTC_ConnectionManager()
|
||||||
{
|
{
|
||||||
|
@ -37,7 +34,7 @@ public class BTC_ConnectionManager
|
||||||
btc.getTxtServer().setEnabled(false);
|
btc.getTxtServer().setEnabled(false);
|
||||||
btc.getBtnDisconnect().setEnabled(true);
|
btc.getBtnDisconnect().setEnabled(true);
|
||||||
|
|
||||||
System.out.println("Connecting to " + hostname + ":" + port + "...");
|
btc.writeToConsole("Connecting to " + hostname + ":" + port + "...\n");
|
||||||
|
|
||||||
this.hostname = hostname;
|
this.hostname = hostname;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
|
@ -102,7 +99,7 @@ public class BTC_ConnectionManager
|
||||||
|
|
||||||
updateTitle(false);
|
updateTitle(false);
|
||||||
|
|
||||||
System.out.println("\nDisconnected.");
|
btc.writeToConsole("\nDisconnected.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendCommand(final String text)
|
public void sendCommand(final String text)
|
||||||
|
@ -116,7 +113,7 @@ public class BTC_ConnectionManager
|
||||||
{
|
{
|
||||||
if (verbose)
|
if (verbose)
|
||||||
{
|
{
|
||||||
consoleStream.format("%s\r\n", text);
|
BTC_MainPanel.CONSOLE_STREAM.format("%s\r\n", text);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.telnetClient.getOutputStream().write((text + "\n").getBytes());
|
this.telnetClient.getOutputStream().write((text + "\n").getBytes());
|
||||||
|
@ -152,11 +149,12 @@ public class BTC_ConnectionManager
|
||||||
|
|
||||||
this.connectThread = new Thread(new Runnable()
|
this.connectThread = new Thread(new Runnable()
|
||||||
{
|
{
|
||||||
private final BTC_MainPanel btc = BukkitTelnetClient.mainPanel;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
|
final BTC_MainPanel btc = BukkitTelnetClient.mainPanel;
|
||||||
|
final ByteArrayOutputStream consoleBuffer = new ByteArrayOutputStream();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
BTC_ConnectionManager.this.telnetClient.connect(hostname, port);
|
BTC_ConnectionManager.this.telnetClient.connect(hostname, port);
|
||||||
|
@ -200,7 +198,7 @@ public class BTC_ConnectionManager
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final Map<String, BTC_PlayerListDecoder.PlayerInfo> playerList = BTC_PlayerListDecoder.checkForPlayerListMessage(line);
|
final Map<String, PlayerInfo> playerList = BTC_PlayerListDecoder.checkForPlayerListMessage(line);
|
||||||
if (playerList != null)
|
if (playerList != null)
|
||||||
{
|
{
|
||||||
btc.updatePlayerList(playerList);
|
btc.updatePlayerList(playerList);
|
||||||
|
@ -209,7 +207,7 @@ public class BTC_ConnectionManager
|
||||||
{
|
{
|
||||||
if (!BTC_FormatHandler.skipLine(line))
|
if (!BTC_FormatHandler.skipLine(line))
|
||||||
{
|
{
|
||||||
System.out.print(line);
|
btc.writeToConsole(line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -223,7 +221,7 @@ public class BTC_ConnectionManager
|
||||||
final String line = consoleBuffer.toString();
|
final String line = consoleBuffer.toString();
|
||||||
if (line.endsWith("Username: ") || line.endsWith("Password: "))
|
if (line.endsWith("Username: ") || line.endsWith("Password: "))
|
||||||
{
|
{
|
||||||
System.out.print(consoleBuffer.toString());
|
btc.writeToConsole(line);
|
||||||
consoleBuffer.reset();
|
consoleBuffer.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -269,7 +269,6 @@
|
||||||
</Column>
|
</Column>
|
||||||
</TableColumnModel>
|
</TableColumnModel>
|
||||||
</Property>
|
</Property>
|
||||||
<Property name="rowSelectionAllowed" type="boolean" value="true"/>
|
|
||||||
<Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor">
|
<Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor">
|
||||||
<JTableSelectionModel selectionMode="0"/>
|
<JTableSelectionModel selectionMode="0"/>
|
||||||
</Property>
|
</Property>
|
||||||
|
|
|
@ -10,10 +10,12 @@ import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.PrintStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
@ -35,13 +37,19 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
{
|
{
|
||||||
private static final String SERVERS_FILE_NAME = "btc_servers.cfg";
|
private static final String SERVERS_FILE_NAME = "btc_servers.cfg";
|
||||||
|
|
||||||
|
public static final ByteArrayOutputStream CONSOLE = new ByteArrayOutputStream();
|
||||||
|
public static final PrintStream CONSOLE_STREAM = new PrintStream(CONSOLE);
|
||||||
|
|
||||||
private final BTC_ConnectionManager connectionManager = new BTC_ConnectionManager();
|
private final BTC_ConnectionManager connectionManager = new BTC_ConnectionManager();
|
||||||
private final LinkedList<String> serverList = new LinkedList<>();
|
private final LinkedList<String> serverList = new LinkedList<>();
|
||||||
|
|
||||||
public BTC_MainPanel()
|
public BTC_MainPanel()
|
||||||
{
|
{
|
||||||
initComponents();
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setup()
|
||||||
|
{
|
||||||
this.txtServer.getEditor().getEditorComponent().addKeyListener(new KeyAdapter()
|
this.txtServer.getEditor().getEditorComponent().addKeyListener(new KeyAdapter()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
|
@ -66,31 +74,143 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
|
|
||||||
setupTablePopup();
|
setupTablePopup();
|
||||||
|
|
||||||
|
this.connectionManager.updateTitle(false);
|
||||||
|
|
||||||
this.setLocationRelativeTo(null);
|
this.setLocationRelativeTo(null);
|
||||||
this.setVisible(true);
|
this.setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class CommandMenuItem extends JMenuItem
|
public final void updateTextPane(final String text)
|
||||||
{
|
{
|
||||||
private final ServerCommand command;
|
SwingUtilities.invokeLater(new Runnable()
|
||||||
private final BTC_PlayerListDecoder.PlayerInfo player;
|
|
||||||
|
|
||||||
public CommandMenuItem(String text, ServerCommand command, BTC_PlayerListDecoder.PlayerInfo player)
|
|
||||||
{
|
{
|
||||||
super(text);
|
@Override
|
||||||
this.command = command;
|
public void run()
|
||||||
this.player = player;
|
{
|
||||||
|
final StyledDocument styledDocument = mainOutput.getStyledDocument();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
styledDocument.insertString(
|
||||||
|
styledDocument.getLength(),
|
||||||
|
text,
|
||||||
|
StyleContext.getDefaultStyleContext().addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, BTC_FormatHandler.getColor(text))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
catch (BadLocationException ex)
|
||||||
|
{
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BTC_MainPanel.this.chkAutoScroll.isSelected() && BTC_MainPanel.this.mainOutput.getSelectedText() == null)
|
||||||
|
{
|
||||||
|
BTC_MainPanel.this.mainOutput.setCaretPosition(styledDocument.getLength() - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public final void updateConsole()
|
||||||
|
{
|
||||||
|
final String data = CONSOLE.toString();
|
||||||
|
CONSOLE.reset();
|
||||||
|
|
||||||
|
final String[] lines = data.split("\\n");
|
||||||
|
for (String line : lines)
|
||||||
|
{
|
||||||
|
updateTextPane(line + '\n');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public final void writeToConsole(String line)
|
||||||
|
{
|
||||||
|
CONSOLE_STREAM.append(line);
|
||||||
|
updateConsole();
|
||||||
|
}
|
||||||
|
|
||||||
|
public final PlayerInfo getSelectedPlayer()
|
||||||
|
{
|
||||||
|
String name = null;
|
||||||
|
String ip = null;
|
||||||
|
String displayName = null;
|
||||||
|
|
||||||
|
final JTable table = BTC_MainPanel.this.tblPlayers;
|
||||||
|
final DefaultTableModel model = (DefaultTableModel) table.getModel();
|
||||||
|
|
||||||
|
final int selectedRow = table.getSelectedRow();
|
||||||
|
if (selectedRow < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ServerCommand getCommand()
|
for (int col = 0; col <= 2; col++)
|
||||||
{
|
{
|
||||||
return command;
|
final int modelRow = table.convertRowIndexToModel(selectedRow);
|
||||||
|
final int modelCol = table.convertColumnIndexToModel(col);
|
||||||
|
|
||||||
|
final String colName = model.getColumnName(modelCol);
|
||||||
|
final Object value = model.getValueAt(modelRow, modelCol);
|
||||||
|
|
||||||
|
if (null != colName)
|
||||||
|
{
|
||||||
|
switch (colName)
|
||||||
|
{
|
||||||
|
case "Name":
|
||||||
|
{
|
||||||
|
name = value.toString();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "IP":
|
||||||
|
{
|
||||||
|
ip = value.toString();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "Display Name":
|
||||||
|
{
|
||||||
|
displayName = value.toString();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public BTC_PlayerListDecoder.PlayerInfo getPlayer()
|
if (name != null && ip != null & displayName != null)
|
||||||
{
|
{
|
||||||
return player;
|
return new PlayerInfo(name, ip, displayName);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public final void updatePlayerList(final Map<String, PlayerInfo> playerList)
|
||||||
|
{
|
||||||
|
EventQueue.invokeLater(new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
final JTable table = BTC_MainPanel.this.tblPlayers;
|
||||||
|
final DefaultTableModel model = (DefaultTableModel) table.getModel();
|
||||||
|
|
||||||
|
model.setRowCount(0);
|
||||||
|
|
||||||
|
final Iterator<Map.Entry<String, PlayerInfo>> it = playerList.entrySet().iterator();
|
||||||
|
while (it.hasNext())
|
||||||
|
{
|
||||||
|
final Map.Entry<String, PlayerInfo> entry = it.next();
|
||||||
|
PlayerInfo playerInfo = entry.getValue();
|
||||||
|
|
||||||
|
model.addRow(new Object[]
|
||||||
|
{
|
||||||
|
playerInfo.getName(),
|
||||||
|
playerInfo.getDisplayName(),
|
||||||
|
playerInfo.getIp()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static enum ServerCommand
|
public static enum ServerCommand
|
||||||
|
@ -124,6 +244,29 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final class CommandMenuItem extends JMenuItem
|
||||||
|
{
|
||||||
|
private final ServerCommand command;
|
||||||
|
private final PlayerInfo player;
|
||||||
|
|
||||||
|
public CommandMenuItem(String text, ServerCommand command, PlayerInfo player)
|
||||||
|
{
|
||||||
|
super(text);
|
||||||
|
this.command = command;
|
||||||
|
this.player = player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerCommand getCommand()
|
||||||
|
{
|
||||||
|
return command;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlayerInfo getPlayer()
|
||||||
|
{
|
||||||
|
return player;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public final void setupTablePopup()
|
public final void setupTablePopup()
|
||||||
{
|
{
|
||||||
this.tblPlayers.addMouseListener(new MouseAdapter()
|
this.tblPlayers.addMouseListener(new MouseAdapter()
|
||||||
|
@ -150,7 +293,7 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
}
|
}
|
||||||
if (mouseEvent.isPopupTrigger() && mouseEvent.getComponent() instanceof JTable)
|
if (mouseEvent.isPopupTrigger() && mouseEvent.getComponent() instanceof JTable)
|
||||||
{
|
{
|
||||||
final BTC_PlayerListDecoder.PlayerInfo player = getSelectedPlayer();
|
final PlayerInfo player = getSelectedPlayer();
|
||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
final JPopupMenu popup = new JPopupMenu(player.getName());
|
final JPopupMenu popup = new JPopupMenu(player.getName());
|
||||||
|
@ -170,11 +313,11 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
if (_source instanceof CommandMenuItem)
|
if (_source instanceof CommandMenuItem)
|
||||||
{
|
{
|
||||||
final CommandMenuItem source = (CommandMenuItem) _source;
|
final CommandMenuItem source = (CommandMenuItem) _source;
|
||||||
final BTC_PlayerListDecoder.PlayerInfo _player = source.getPlayer();
|
final PlayerInfo _player = source.getPlayer();
|
||||||
final ServerCommand _command = source.getCommand();
|
final ServerCommand _command = source.getCommand();
|
||||||
final String output = String.format(_command.getCommandFormat(), _player.getName());
|
final String output = String.format(_command.getCommandFormat(), _player.getName());
|
||||||
|
|
||||||
BTC_MainPanel.this.getConnectionManager().sendDelayedCommand(output, true, 100);
|
BTC_MainPanel.this.connectionManager.sendDelayedCommand(output, true, 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -193,128 +336,6 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void updateTextPane(final String text)
|
|
||||||
{
|
|
||||||
SwingUtilities.invokeLater(new Runnable()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
final StyledDocument styledDocument = mainOutput.getStyledDocument();
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
styledDocument.insertString(
|
|
||||||
styledDocument.getLength(),
|
|
||||||
text,
|
|
||||||
StyleContext.getDefaultStyleContext().addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, BTC_FormatHandler.getColor(text))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
catch (BadLocationException ex)
|
|
||||||
{
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (BTC_MainPanel.this.chkAutoScroll.isSelected() && BTC_MainPanel.this.mainOutput.getSelectedText() == null)
|
|
||||||
{
|
|
||||||
BTC_MainPanel.this.mainOutput.setCaretPosition(styledDocument.getLength() - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public BTC_PlayerListDecoder.PlayerInfo getSelectedPlayer()
|
|
||||||
{
|
|
||||||
String name = null;
|
|
||||||
String ip = null;
|
|
||||||
String displayName = null;
|
|
||||||
|
|
||||||
final JTable table = BTC_MainPanel.this.tblPlayers;
|
|
||||||
final DefaultTableModel model = (DefaultTableModel) table.getModel();
|
|
||||||
|
|
||||||
int selectedRow = table.getSelectedRow();
|
|
||||||
if (selectedRow < 0)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int col = 0; col <= 2; col++)
|
|
||||||
{
|
|
||||||
int modelRow = table.convertRowIndexToModel(selectedRow);
|
|
||||||
int modelCol = table.convertColumnIndexToModel(col);
|
|
||||||
|
|
||||||
String colName = model.getColumnName(modelCol);
|
|
||||||
Object value = model.getValueAt(modelRow, modelCol);
|
|
||||||
|
|
||||||
if (null != colName)
|
|
||||||
{
|
|
||||||
switch (colName)
|
|
||||||
{
|
|
||||||
case "Name":
|
|
||||||
{
|
|
||||||
name = value.toString();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "IP":
|
|
||||||
{
|
|
||||||
ip = value.toString();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "Display Name":
|
|
||||||
{
|
|
||||||
displayName = value.toString();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (name != null && ip != null & displayName != null)
|
|
||||||
{
|
|
||||||
return new BTC_PlayerListDecoder.PlayerInfo(name, ip, displayName);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public final void updatePlayerList(final Map<String, BTC_PlayerListDecoder.PlayerInfo> playerList)
|
|
||||||
{
|
|
||||||
EventQueue.invokeLater(new Runnable()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
final JTable table = BTC_MainPanel.this.tblPlayers;
|
|
||||||
final DefaultTableModel model = (DefaultTableModel) table.getModel();
|
|
||||||
|
|
||||||
model.setRowCount(0);
|
|
||||||
|
|
||||||
final Iterator<Map.Entry<String, BTC_PlayerListDecoder.PlayerInfo>> it = playerList.entrySet().iterator();
|
|
||||||
while (it.hasNext())
|
|
||||||
{
|
|
||||||
final Map.Entry<String, BTC_PlayerListDecoder.PlayerInfo> entry = it.next();
|
|
||||||
BTC_PlayerListDecoder.PlayerInfo playerInfo = entry.getValue();
|
|
||||||
|
|
||||||
model.addRow(new Object[]
|
|
||||||
{
|
|
||||||
playerInfo.getName(),
|
|
||||||
playerInfo.getDisplayName(),
|
|
||||||
playerInfo.getIp()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateConsole()
|
|
||||||
{
|
|
||||||
final String data = BukkitTelnetClient.CONSOLE.toString();
|
|
||||||
BukkitTelnetClient.CONSOLE.reset();
|
|
||||||
BTC_MainPanel.this.updateTextPane(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public final void loadServerList()
|
public final void loadServerList()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -322,10 +343,10 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
serverList.clear();
|
serverList.clear();
|
||||||
txtServer.removeAllItems();
|
txtServer.removeAllItems();
|
||||||
|
|
||||||
File file = new File(SERVERS_FILE_NAME);
|
final File file = new File(SERVERS_FILE_NAME);
|
||||||
if (file.exists())
|
if (file.exists())
|
||||||
{
|
{
|
||||||
try (BufferedReader in = new BufferedReader(new FileReader(file)))
|
try (final BufferedReader in = new BufferedReader(new FileReader(file)))
|
||||||
{
|
{
|
||||||
String line;
|
String line;
|
||||||
while ((line = in.readLine()) != null)
|
while ((line = in.readLine()) != null)
|
||||||
|
@ -345,25 +366,25 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
|
|
||||||
public final void saveServersAndTriggerConnect()
|
public final void saveServersAndTriggerConnect()
|
||||||
{
|
{
|
||||||
String selected_server = (String) txtServer.getSelectedItem();
|
final String selectedServer = (String) txtServer.getSelectedItem();
|
||||||
|
|
||||||
if (selected_server == null || selected_server.isEmpty())
|
if (selectedServer == null || selectedServer.isEmpty())
|
||||||
{
|
{
|
||||||
System.out.println("Invalid server address.");
|
writeToConsole("Invalid server address.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (serverList.contains(selected_server))
|
if (serverList.contains(selectedServer))
|
||||||
{
|
{
|
||||||
serverList.remove(selected_server);
|
serverList.remove(selectedServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
serverList.addFirst(selected_server);
|
serverList.addFirst(selectedServer);
|
||||||
try (BufferedWriter out = new BufferedWriter(new FileWriter(new File(SERVERS_FILE_NAME))))
|
try (final BufferedWriter out = new BufferedWriter(new FileWriter(new File(SERVERS_FILE_NAME))))
|
||||||
{
|
{
|
||||||
for (String server : serverList)
|
for (final String server : serverList)
|
||||||
{
|
{
|
||||||
out.write(server + '\n');
|
out.write(server + '\n');
|
||||||
}
|
}
|
||||||
|
@ -376,7 +397,7 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
|
|
||||||
loadServerList();
|
loadServerList();
|
||||||
|
|
||||||
connectionManager.triggerConnect(selected_server);
|
connectionManager.triggerConnect(selectedServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
@ -762,9 +783,4 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
{
|
{
|
||||||
return chkShowChatOnly;
|
return chkShowChatOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BTC_ConnectionManager getConnectionManager()
|
|
||||||
{
|
|
||||||
return connectionManager;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,6 @@ import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import org.apache.commons.lang3.builder.EqualsBuilder;
|
|
||||||
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
@ -62,72 +60,6 @@ public class BTC_PlayerListDecoder
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class PlayerInfo
|
|
||||||
{
|
|
||||||
private final String name;
|
|
||||||
private final String ip;
|
|
||||||
private final String displayName;
|
|
||||||
|
|
||||||
public PlayerInfo(String name, String ip, String displayName)
|
|
||||||
{
|
|
||||||
this.name = name;
|
|
||||||
this.ip = ip;
|
|
||||||
this.displayName = displayName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIp()
|
|
||||||
{
|
|
||||||
return ip;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDisplayName()
|
|
||||||
{
|
|
||||||
return displayName;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode()
|
|
||||||
{
|
|
||||||
return new HashCodeBuilder(17, 31).
|
|
||||||
append(name).
|
|
||||||
append(ip).
|
|
||||||
append(displayName).
|
|
||||||
toHashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj)
|
|
||||||
{
|
|
||||||
if (!(obj instanceof PlayerInfo))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (obj == this)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerInfo rhs = (PlayerInfo) obj;
|
|
||||||
return new EqualsBuilder().
|
|
||||||
append(name, rhs.name).
|
|
||||||
append(ip, rhs.ip).
|
|
||||||
append(displayName, rhs.displayName).
|
|
||||||
isEquals();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
return String.format("%s[Name: %s, Display Name: %s, IP: %s]", this.getClass().toString(), name, displayName, ip);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final class JSONArrayIterable implements Iterable<JSONObject>
|
public static final class JSONArrayIterable implements Iterable<JSONObject>
|
||||||
{
|
{
|
||||||
private final JSONArray array;
|
private final JSONArray array;
|
||||||
|
|
|
@ -1,70 +1,17 @@
|
||||||
package me.StevenLawson.BukkitTelnetClient;
|
package me.StevenLawson.BukkitTelnetClient;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.PrintStream;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import javax.swing.UnsupportedLookAndFeelException;
|
import javax.swing.UnsupportedLookAndFeelException;
|
||||||
import org.apache.commons.io.output.TeeOutputStream;
|
|
||||||
|
|
||||||
public class BukkitTelnetClient
|
public class BukkitTelnetClient
|
||||||
{
|
{
|
||||||
public static final String VERSION_STRING = "v2.0.3";
|
public static final String VERSION_STRING = "v2.0.3";
|
||||||
|
|
||||||
public static final Logger LOGGER = Logger.getLogger(BukkitTelnetClient.class.getName());
|
public static final Logger LOGGER = Logger.getLogger(BukkitTelnetClient.class.getName());
|
||||||
public static final ByteArrayOutputStream CONSOLE = new ByteArrayOutputStream();
|
|
||||||
|
|
||||||
public static BTC_MainPanel mainPanel = null;
|
public static BTC_MainPanel mainPanel = null;
|
||||||
|
|
||||||
public static void main(String args[])
|
public static void main(String args[])
|
||||||
{
|
{
|
||||||
final PrintStream guiConsole = new PrintStream(CONSOLE, true)
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void write(byte[] bytes) throws IOException
|
|
||||||
{
|
|
||||||
super.write(bytes);
|
|
||||||
if (mainPanel != null)
|
|
||||||
{
|
|
||||||
mainPanel.updateConsole();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void write(int i)
|
|
||||||
{
|
|
||||||
super.write(i);
|
|
||||||
if (mainPanel != null)
|
|
||||||
{
|
|
||||||
mainPanel.updateConsole();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void write(byte[] bytes, int i, int i1)
|
|
||||||
{
|
|
||||||
super.write(bytes, i, i1);
|
|
||||||
if (mainPanel != null)
|
|
||||||
{
|
|
||||||
mainPanel.updateConsole();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void flush()
|
|
||||||
{
|
|
||||||
super.flush();
|
|
||||||
if (mainPanel != null)
|
|
||||||
{
|
|
||||||
mainPanel.updateConsole();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
System.setOut(new PrintStream(new TeeOutputStream(System.out, guiConsole)));
|
|
||||||
System.setErr(new PrintStream(new TeeOutputStream(System.err, guiConsole)));
|
|
||||||
|
|
||||||
findAndSetLookAndFeel("Windows");
|
findAndSetLookAndFeel("Windows");
|
||||||
|
|
||||||
java.awt.EventQueue.invokeLater(new Runnable()
|
java.awt.EventQueue.invokeLater(new Runnable()
|
||||||
|
@ -73,7 +20,7 @@ public class BukkitTelnetClient
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
mainPanel = new BTC_MainPanel();
|
mainPanel = new BTC_MainPanel();
|
||||||
mainPanel.getConnectionManager().updateTitle(false);
|
mainPanel.setup();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
package me.StevenLawson.BukkitTelnetClient;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||||
|
|
||||||
|
public final class PlayerInfo
|
||||||
|
{
|
||||||
|
private final String name;
|
||||||
|
private final String ip;
|
||||||
|
private final String displayName;
|
||||||
|
|
||||||
|
public PlayerInfo(String name, String ip, String displayName)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
this.ip = ip;
|
||||||
|
this.displayName = displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIp()
|
||||||
|
{
|
||||||
|
return ip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDisplayName()
|
||||||
|
{
|
||||||
|
return displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
return new HashCodeBuilder(17, 31).
|
||||||
|
append(name).
|
||||||
|
append(ip).
|
||||||
|
append(displayName).
|
||||||
|
toHashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj)
|
||||||
|
{
|
||||||
|
if (!(obj instanceof PlayerInfo))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (obj == this)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerInfo rhs = (PlayerInfo) obj;
|
||||||
|
return new EqualsBuilder().
|
||||||
|
append(name, rhs.name).
|
||||||
|
append(ip, rhs.ip).
|
||||||
|
append(displayName, rhs.displayName).
|
||||||
|
isEquals();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return String.format("%s[Name: %s, Display Name: %s, IP: %s]", this.getClass().toString(), name, displayName, ip);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue