Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package auto_crit_client;
- import java.net.*;
- import java.io.*;
- import java.util.*;
- import javax.swing.*;
- public class Auto_Crit_VTT extends javax.swing.JFrame {
- String username, address = "localhost";
- ArrayList<String> users = new ArrayList();
- int port = 2222;
- Boolean isConnected = false;
- Socket sock;
- BufferedReader reader;
- PrintWriter writer;
- String rollcommand = "d";
- Random generator = new Random();
- //--------------------------//
- public void ListenThread() {
- Thread IncomingReader = new Thread(new IncomingReader());
- IncomingReader.start();
- }
- //--------------------------//
- public void userAdd(String data) {
- users.add(data);
- }
- //--------------------------//
- public void userRemove(String data) {
- chatMessageBox.append(data + " is now offline.\n");
- }
- //--------------------------//
- public void writeUsers() {
- String[] tempList = new String[(users.size())];
- users.toArray(tempList);
- for (String token : tempList) {
- //users.append(token + "\n");
- }
- }
- //--------------------------//
- public void sendDisconnect() {
- String bye = (username + ": :Disconnect");
- try {
- writer.println(bye);
- writer.flush();
- } catch (Exception e) {
- chatMessageBox.append("Could not send Disconnect message.\n");
- }
- }
- //--------------------------//
- public void Disconnect() {
- try {
- chatMessageBox.append("Disconnected.\n");
- sock.close();
- } catch (Exception ex) {
- chatMessageBox.append("Failed to disconnect. \n");
- }
- isConnected = false;
- usernameTextField.setEditable(true);
- }
- private int roll(int noDice, int sides) {
- int sum = 0;
- for (int i = 0; i < noDice; i++) {
- sum += generator.nextInt(sides) + 1;
- }
- return sum;
- }
- public int diceRoll(String roll) {
- String minMax[] = roll.split("d");
- return roll(Integer.parseInt(minMax[0]), Integer.parseInt(minMax[1]));
- }
- public Auto_Crit_VTT() {
- initComponents();
- }
- //--------------------------//
- public class IncomingReader implements Runnable {
- @Override
- public void run() {
- String[] data;
- String stream, done = "Done", connect = "Connect", disconnect = "Disconnect", chat = "Chat";
- try {
- while ((stream = reader.readLine()) != null) {
- data = stream.split(":");
- if (data[2].equals(chat)) {
- chatMessageBox.append(data[0] + ": " + data[1] + "\n");
- chatMessageBox.setCaretPosition(chatMessageBox.getDocument().getLength());
- } else if (data[2].equals(connect)) {
- chatMessageBox.removeAll();
- userAdd(data[0]);
- } else if (data[2].equals(disconnect)) {
- userRemove(data[0]);
- } else if (data[2].equals(done)) {
- //users.setText("");
- writeUsers();
- users.clear();
- }
- }
- } catch (Exception ex) {
- }
- }
- }
- //--------------------------//
- @SuppressWarnings("unchecked")
- // <editor-fold defaultstate="collapsed" desc="Generated Code">
- private void initComponents() {
- lb_address = new javax.swing.JLabel();
- ipAddressTextField = new javax.swing.JTextField();
- lb_port = new javax.swing.JLabel();
- portTextField = new javax.swing.JTextField();
- lb_username = new javax.swing.JLabel();
- usernameTextField = new javax.swing.JTextField();
- lb_password = new javax.swing.JLabel();
- passwordTextField = new javax.swing.JTextField();
- connectButton = new javax.swing.JButton();
- disconnectButton = new javax.swing.JButton();
- anonymousButton = new javax.swing.JButton();
- jScrollPane1 = new javax.swing.JScrollPane();
- chatMessageBox = new javax.swing.JTextArea();
- messageSender = new javax.swing.JTextField();
- sendButton = new javax.swing.JButton();
- jPanel1 = new javax.swing.JPanel();
- importXMLJButton = new javax.swing.JButton();
- setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
- setTitle("Chat - Client's frame");
- setName("client"); // NOI18N
- setResizable(false);
- lb_address.setText("Address : ");
- ipAddressTextField.setText("localhost");
- ipAddressTextField.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- ipAddressTextFieldActionPerformed(evt);
- }
- });
- lb_port.setText("Port :");
- portTextField.setText("2222");
- portTextField.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- portTextFieldActionPerformed(evt);
- }
- });
- lb_username.setText("Username :");
- usernameTextField.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- usernameTextFieldActionPerformed(evt);
- }
- });
- lb_password.setText("Password : ");
- connectButton.setText("Connect");
- connectButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- connectButtonActionPerformed(evt);
- }
- });
- disconnectButton.setText("Disconnect");
- disconnectButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- disconnectButtonActionPerformed(evt);
- }
- });
- anonymousButton.setText("Anonymous Login");
- anonymousButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- anonymousButtonActionPerformed(evt);
- }
- });
- chatMessageBox.setColumns(20);
- chatMessageBox.setRows(5);
- jScrollPane1.setViewportView(chatMessageBox);
- messageSender.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- messageSenderActionPerformed(evt);
- }
- });
- sendButton.setText("SEND");
- sendButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- sendButtonActionPerformed(evt);
- }
- });
- jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
- javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
- jPanel1.setLayout(jPanel1Layout);
- jPanel1Layout.setHorizontalGroup(
- jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGap(0, 0, Short.MAX_VALUE)
- );
- jPanel1Layout.setVerticalGroup(
- jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGap(0, 0, Short.MAX_VALUE)
- );
- importXMLJButton.setText("Import Character Sheet");
- importXMLJButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- importXMLJButtonActionPerformed(evt);
- }
- });
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
- getContentPane().setLayout(layout);
- layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addContainerGap()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addGap(0, 315, Short.MAX_VALUE)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addGroup(layout.createSequentialGroup()
- .addComponent(lb_username, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(usernameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(lb_password)
- .addGap(18, 18, 18)
- .addComponent(passwordTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(layout.createSequentialGroup()
- .addComponent(lb_address, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(ipAddressTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(lb_port, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(18, 18, 18)
- .addComponent(portTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addGap(18, 18, 18)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addGroup(layout.createSequentialGroup()
- .addComponent(connectButton)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(disconnectButton))
- .addComponent(anonymousButton, javax.swing.GroupLayout.PREFERRED_SIZE, 164, javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addGroup(layout.createSequentialGroup()
- .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 240, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGroup(layout.createSequentialGroup()
- .addComponent(messageSender, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(sendButton))
- .addComponent(importXMLJButton))))
- .addContainerGap())
- );
- layout.setVerticalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addContainerGap()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(lb_address)
- .addComponent(ipAddressTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lb_port)
- .addComponent(portTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(anonymousButton))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(lb_username)
- .addComponent(lb_password)
- .addComponent(connectButton)
- .addComponent(disconnectButton)
- .addComponent(passwordTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(usernameTextField))
- .addGap(8, 8, 8)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 310, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(messageSender)
- .addComponent(sendButton))
- .addGap(10, 10, 10)
- .addComponent(importXMLJButton))
- .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addGap(27, 27, 27))
- );
- pack();
- }// </editor-fold>
- private void ipAddressTextFieldActionPerformed(java.awt.event.ActionEvent evt) {
- }
- private void portTextFieldActionPerformed(java.awt.event.ActionEvent evt) {
- }
- private void usernameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {
- }
- private void connectButtonActionPerformed(java.awt.event.ActionEvent evt) {
- if (isConnected == false) {
- username = usernameTextField.getText();
- usernameTextField.setEditable(false);
- try {
- sock = new Socket(address, port);
- InputStreamReader streamreader = new InputStreamReader(sock.getInputStream());
- reader = new BufferedReader(streamreader);
- writer = new PrintWriter(sock.getOutputStream());
- writer.println(username + ":has connected.:Connect");
- writer.flush();
- isConnected = true;
- } catch (Exception ex) {
- chatMessageBox.append("Cannot Connect! Try Again. \n");
- usernameTextField.setEditable(true);
- }
- ListenThread();
- } else if (isConnected == true) {
- chatMessageBox.append("You are already connected. \n");
- }
- }
- private void disconnectButtonActionPerformed(java.awt.event.ActionEvent evt) {
- sendDisconnect();
- Disconnect();
- }
- private void anonymousButtonActionPerformed(java.awt.event.ActionEvent evt) {
- usernameTextField.setText("");
- if (isConnected == false) {
- String anon = "anon";
- Random generator = new Random();
- int i = generator.nextInt(999) + 1;
- String is = String.valueOf(i);
- anon = anon.concat(is);
- username = anon;
- usernameTextField.setText(anon);
- usernameTextField.setEditable(false);
- try {
- sock = new Socket(address, port);
- InputStreamReader streamreader = new InputStreamReader(sock.getInputStream());
- reader = new BufferedReader(streamreader);
- writer = new PrintWriter(sock.getOutputStream());
- writer.println(anon + ":has connected.:Connect");
- writer.flush();
- isConnected = true;
- } catch (Exception ex) {
- chatMessageBox.append("Cannot Connect! Try Again. \n");
- usernameTextField.setEditable(true);
- }
- ListenThread();
- } else if (isConnected == true) {
- chatMessageBox.append("You are already connected. \n");
- }
- }
- private void sendButtonActionPerformed(java.awt.event.ActionEvent evt) {
- String nothing = "";
- if ((messageSender.getText()).equals(nothing)) {
- messageSender.setText("");
- messageSender.requestFocus();
- } else {
- try {
- writer.println(username + ":" + messageSender.getText() + ":" + "Chat");
- writer.flush(); // flushes the buffer
- } catch (Exception ex) {
- chatMessageBox.append("Message was not sent. \n");
- }
- }
- if ((messageSender.getText()).contains(rollcommand)) {
- Auto_Crit_VTT d = new Auto_Crit_VTT();
- writer.println(d.diceRoll(messageSender.getText()));
- writer.flush(); // flushes the buffer
- }
- messageSender.setText("");
- messageSender.requestFocus();
- }
- private void messageSenderActionPerformed(java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- }
- private void importXMLJButtonActionPerformed(java.awt.event.ActionEvent evt) {
- }
- public static void main(String args[]) {
- java.awt.EventQueue.invokeLater(new Runnable() {
- @Override
- public void run() {
- new Auto_Crit_VTT().setVisible(true);
- }
- });
- }
- // Variables declaration - do not modify
- private javax.swing.JButton anonymousButton;
- private javax.swing.JTextArea chatMessageBox;
- private javax.swing.JButton connectButton;
- private javax.swing.JButton disconnectButton;
- private javax.swing.JButton importXMLJButton;
- private javax.swing.JTextField ipAddressTextField;
- private javax.swing.JPanel jPanel1;
- private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JLabel lb_address;
- private javax.swing.JLabel lb_password;
- private javax.swing.JLabel lb_port;
- private javax.swing.JLabel lb_username;
- private javax.swing.JTextField messageSender;
- private javax.swing.JTextField passwordTextField;
- private javax.swing.JTextField portTextField;
- private javax.swing.JButton sendButton;
- private javax.swing.JTextField usernameTextField;
- // End of variables declaration
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement