mirror of
https://github.com/TotalFreedomMC/ZeroTelnetClient.git
synced 2024-12-22 16:25:14 +00:00
Begin work on favorite buttons.
Todo - load favButtonList from XML.
This commit is contained in:
parent
bfbcfd1592
commit
06d54c1f58
6 changed files with 200 additions and 33 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1 +1,2 @@
|
||||||
/target/
|
/target/
|
||||||
|
settings.xml
|
||||||
|
|
|
@ -17,7 +17,7 @@ public class BTC_ConnectionManager
|
||||||
{
|
{
|
||||||
private static final Pattern LOGIN_MESSAGE = Pattern.compile("\\[.+?@BukkitTelnet\\]\\$ Logged in as (.+)\\.");
|
private static final Pattern LOGIN_MESSAGE = Pattern.compile("\\[.+?@BukkitTelnet\\]\\$ Logged in as (.+)\\.");
|
||||||
|
|
||||||
private final TelnetClient telnetClient;
|
private final TelnetClient telnetClient = new TelnetClient();
|
||||||
private Thread connectThread;
|
private Thread connectThread;
|
||||||
private String hostname;
|
private String hostname;
|
||||||
private int port;
|
private int port;
|
||||||
|
@ -26,7 +26,6 @@ public class BTC_ConnectionManager
|
||||||
|
|
||||||
public BTC_ConnectionManager()
|
public BTC_ConnectionManager()
|
||||||
{
|
{
|
||||||
this.telnetClient = new TelnetClient();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void triggerConnect(final String hostname, final int port)
|
public void triggerConnect(final String hostname, final int port)
|
||||||
|
@ -119,6 +118,12 @@ public class BTC_ConnectionManager
|
||||||
BukkitTelnetClient.mainPanel.writeToConsole(new BTC_ConsoleMessage(":" + text));
|
BukkitTelnetClient.mainPanel.writeToConsole(new BTC_ConsoleMessage(":" + text));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final OutputStream out = this.telnetClient.getOutputStream();
|
||||||
|
if (out == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.telnetClient.getOutputStream().write((text + "\r\n").getBytes());
|
this.telnetClient.getOutputStream().write((text + "\r\n").getBytes());
|
||||||
this.telnetClient.getOutputStream().flush();
|
this.telnetClient.getOutputStream().flush();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
package me.StevenLawson.BukkitTelnetClient;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.util.List;
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
public class BTC_FavoriteButtonsPanel extends JPanel
|
||||||
|
{
|
||||||
|
public BTC_FavoriteButtonsPanel(final List<FavoriteButtonData> buttonList)
|
||||||
|
{
|
||||||
|
super.setLayout(new GridLayout(0, 2, 1, 1));
|
||||||
|
|
||||||
|
final ActionListener actionListener = new ActionListener()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(final ActionEvent event)
|
||||||
|
{
|
||||||
|
if (BukkitTelnetClient.mainPanel != null)
|
||||||
|
{
|
||||||
|
BukkitTelnetClient.mainPanel.getConnectionManager().sendDelayedCommand(event.getActionCommand(), true, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (final FavoriteButtonData buttonData : buttonList)
|
||||||
|
{
|
||||||
|
final JButton button = new JButton();
|
||||||
|
button.setText(buttonData.getLabel());
|
||||||
|
button.setActionCommand(buttonData.getCommand());
|
||||||
|
button.addActionListener(actionListener);
|
||||||
|
|
||||||
|
final Dimension max = button.getMaximumSize();
|
||||||
|
max.setSize(max.getWidth(), 10);
|
||||||
|
button.setMaximumSize(max);
|
||||||
|
|
||||||
|
add(button);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLayout(LayoutManager lm)
|
||||||
|
{
|
||||||
|
//Disable
|
||||||
|
}
|
||||||
|
}
|
|
@ -368,6 +368,58 @@
|
||||||
</Component>
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
|
<Container class="javax.swing.JPanel" name="jPanel4">
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
|
||||||
|
<JTabbedPaneConstraints tabName="Commands">
|
||||||
|
<Property name="tabTitle" type="java.lang.String" value="Commands"/>
|
||||||
|
</JTabbedPaneConstraints>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="jScrollPane1" pref="293" max="32767" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="jScrollPane1" pref="400" max="32767" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
|
||||||
|
<Properties>
|
||||||
|
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||||
|
<Border info="null"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
|
||||||
|
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||||
|
<SubComponents>
|
||||||
|
<Container class="javax.swing.JPanel" name="jPanel5">
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new BTC_FavoriteButtonsPanel(favButtonList)"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
|
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
|
||||||
|
<Property name="useNullLayout" type="boolean" value="true"/>
|
||||||
|
</Layout>
|
||||||
|
</Container>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
|
|
|
@ -1,35 +1,16 @@
|
||||||
package me.StevenLawson.BukkitTelnetClient;
|
package me.StevenLawson.BukkitTelnetClient;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.*;
|
||||||
import java.awt.EventQueue;
|
|
||||||
import java.awt.Toolkit;
|
|
||||||
import java.awt.datatransfer.StringSelection;
|
import java.awt.datatransfer.StringSelection;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.*;
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
import java.awt.event.KeyAdapter;
|
|
||||||
import java.awt.event.KeyEvent;
|
|
||||||
import java.awt.event.MouseAdapter;
|
|
||||||
import java.awt.event.MouseEvent;
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
import javax.swing.JCheckBox;
|
import javax.swing.*;
|
||||||
import javax.swing.JMenuItem;
|
|
||||||
import javax.swing.JOptionPane;
|
|
||||||
import javax.swing.JPopupMenu;
|
|
||||||
import javax.swing.JScrollBar;
|
|
||||||
import javax.swing.JTable;
|
|
||||||
import javax.swing.ListSelectionModel;
|
|
||||||
import javax.swing.SwingUtilities;
|
|
||||||
import javax.swing.Timer;
|
import javax.swing.Timer;
|
||||||
import javax.swing.table.AbstractTableModel;
|
import javax.swing.table.AbstractTableModel;
|
||||||
import javax.swing.text.BadLocationException;
|
import javax.swing.text.*;
|
||||||
import javax.swing.text.SimpleAttributeSet;
|
|
||||||
import javax.swing.text.StyleConstants;
|
|
||||||
import javax.swing.text.StyleContext;
|
|
||||||
import javax.swing.text.StyledDocument;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.commons.lang3.SystemUtils;
|
import org.apache.commons.lang3.SystemUtils;
|
||||||
|
|
||||||
|
@ -39,8 +20,30 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
private final List<PlayerInfo> playerList = new ArrayList<>();
|
private final List<PlayerInfo> playerList = new ArrayList<>();
|
||||||
private final PlayerListTableModel playerListTableModel = new PlayerListTableModel(playerList);
|
private final PlayerListTableModel playerListTableModel = new PlayerListTableModel(playerList);
|
||||||
|
|
||||||
|
private final List<FavoriteButtonData> favButtonList = new ArrayList<>();
|
||||||
|
|
||||||
public BTC_MainPanel()
|
public BTC_MainPanel()
|
||||||
{
|
{
|
||||||
|
favButtonList.add(new FavoriteButtonData("Op All", "opall"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Deop All", "deopall"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Nick Clean", "nickclean"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Adminmode ON", "adminmode on"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Adminmode OFF", "adminmode off"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Cake", "cake"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Mob Purge", "mp"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Remove Drops", "rd"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Purge All", "purgeall"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Set Limit = 500", "setl"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Stop Server", "stop"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Toggle Water Placement", "toggle waterplace"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Toggle Fire Placement", "toggle fireplace"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Toggle Lava Placement", "toggle lavaplace"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Toggle Fluid Spread", "toggle fluidspread"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Toggle Lava Damage", "toggle lavadmg"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Toggle Fire Spread", "toggle firespread"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Toggle Lockdown", "toggle lockdown"));
|
||||||
|
favButtonList.add(new FavoriteButtonData("Toggle Explosives", "toggle explosives"));
|
||||||
|
|
||||||
initComponents();
|
initComponents();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +71,7 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
|
|
||||||
setupTablePopup();
|
setupTablePopup();
|
||||||
|
|
||||||
this.connectionManager.updateTitle(false);
|
this.getConnectionManager().updateTitle(false);
|
||||||
|
|
||||||
this.tblPlayers.setModel(playerListTableModel);
|
this.tblPlayers.setModel(playerListTableModel);
|
||||||
|
|
||||||
|
@ -352,7 +355,7 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
|
|
||||||
final String output = String.format(_command.getFormat(), _player.getName());
|
final String output = String.format(_command.getFormat(), _player.getName());
|
||||||
|
|
||||||
BTC_MainPanel.this.connectionManager.sendDelayedCommand(output, true, 100);
|
BTC_MainPanel.this.getConnectionManager().sendDelayedCommand(output, true, 100);
|
||||||
}
|
}
|
||||||
else if (_source instanceof PlayerListPopupItem)
|
else if (_source instanceof PlayerListPopupItem)
|
||||||
{
|
{
|
||||||
|
@ -482,7 +485,7 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
|
|
||||||
loadServerList();
|
loadServerList();
|
||||||
|
|
||||||
connectionManager.triggerConnect(entry.getAddress());
|
getConnectionManager().triggerConnect(entry.getAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
@ -513,6 +516,9 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
chkIgnoreServerCommands = new javax.swing.JCheckBox();
|
chkIgnoreServerCommands = new javax.swing.JCheckBox();
|
||||||
chkShowChatOnly = new javax.swing.JCheckBox();
|
chkShowChatOnly = new javax.swing.JCheckBox();
|
||||||
chkIgnoreErrors = new javax.swing.JCheckBox();
|
chkIgnoreErrors = new javax.swing.JCheckBox();
|
||||||
|
jPanel4 = new javax.swing.JPanel();
|
||||||
|
jScrollPane1 = new javax.swing.JScrollPane();
|
||||||
|
jPanel5 = new BTC_FavoriteButtonsPanel(favButtonList);
|
||||||
|
|
||||||
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
||||||
setTitle("BukkitTelnetClient");
|
setTitle("BukkitTelnetClient");
|
||||||
|
@ -712,6 +718,30 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
|
|
||||||
jTabbedPane1.addTab("Filters", jPanel1);
|
jTabbedPane1.addTab("Filters", jPanel1);
|
||||||
|
|
||||||
|
jScrollPane1.setBorder(null);
|
||||||
|
|
||||||
|
jPanel5.setLayout(null);
|
||||||
|
jScrollPane1.setViewportView(jPanel5);
|
||||||
|
|
||||||
|
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
|
||||||
|
jPanel4.setLayout(jPanel4Layout);
|
||||||
|
jPanel4Layout.setHorizontalGroup(
|
||||||
|
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jPanel4Layout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 293, Short.MAX_VALUE)
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
jPanel4Layout.setVerticalGroup(
|
||||||
|
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jPanel4Layout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
|
||||||
|
jTabbedPane1.addTab("Commands", jPanel4);
|
||||||
|
|
||||||
splitPane.setRightComponent(jTabbedPane1);
|
splitPane.setRightComponent(jTabbedPane1);
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
|
@ -742,7 +772,7 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
}
|
}
|
||||||
if (evt.getKeyCode() == KeyEvent.VK_ENTER)
|
if (evt.getKeyCode() == KeyEvent.VK_ENTER)
|
||||||
{
|
{
|
||||||
connectionManager.sendCommand(txtCommand.getText());
|
getConnectionManager().sendCommand(txtCommand.getText());
|
||||||
txtCommand.selectAll();
|
txtCommand.selectAll();
|
||||||
}
|
}
|
||||||
}//GEN-LAST:event_txtCommandKeyPressed
|
}//GEN-LAST:event_txtCommandKeyPressed
|
||||||
|
@ -762,7 +792,7 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
connectionManager.triggerDisconnect();
|
getConnectionManager().triggerDisconnect();
|
||||||
}//GEN-LAST:event_btnDisconnectActionPerformed
|
}//GEN-LAST:event_btnDisconnectActionPerformed
|
||||||
|
|
||||||
private void btnSendActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnSendActionPerformed
|
private void btnSendActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnSendActionPerformed
|
||||||
|
@ -771,7 +801,7 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
connectionManager.sendCommand(txtCommand.getText());
|
getConnectionManager().sendCommand(txtCommand.getText());
|
||||||
txtCommand.selectAll();
|
txtCommand.selectAll();
|
||||||
}//GEN-LAST:event_btnSendActionPerformed
|
}//GEN-LAST:event_btnSendActionPerformed
|
||||||
|
|
||||||
|
@ -802,6 +832,9 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
private javax.swing.JPanel jPanel1;
|
private javax.swing.JPanel jPanel1;
|
||||||
private javax.swing.JPanel jPanel2;
|
private javax.swing.JPanel jPanel2;
|
||||||
private javax.swing.JPanel jPanel3;
|
private javax.swing.JPanel jPanel3;
|
||||||
|
private javax.swing.JPanel jPanel4;
|
||||||
|
private javax.swing.JPanel jPanel5;
|
||||||
|
private javax.swing.JScrollPane jScrollPane1;
|
||||||
private javax.swing.JScrollPane jScrollPane2;
|
private javax.swing.JScrollPane jScrollPane2;
|
||||||
private javax.swing.JTabbedPane jTabbedPane1;
|
private javax.swing.JTabbedPane jTabbedPane1;
|
||||||
private javax.swing.JTextPane mainOutput;
|
private javax.swing.JTextPane mainOutput;
|
||||||
|
@ -872,4 +905,9 @@ public class BTC_MainPanel extends javax.swing.JFrame
|
||||||
{
|
{
|
||||||
return playerList;
|
return playerList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BTC_ConnectionManager getConnectionManager()
|
||||||
|
{
|
||||||
|
return connectionManager;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package me.StevenLawson.BukkitTelnetClient;
|
||||||
|
|
||||||
|
public class FavoriteButtonData
|
||||||
|
{
|
||||||
|
private final String label;
|
||||||
|
private final String command;
|
||||||
|
|
||||||
|
public FavoriteButtonData(String label, String command)
|
||||||
|
{
|
||||||
|
this.label = label;
|
||||||
|
this.command = command;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel()
|
||||||
|
{
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCommand()
|
||||||
|
{
|
||||||
|
return command;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue