Advertisement
Guest User

Auto_Crit_Client

a guest
Mar 29th, 2017
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 19.35 KB | None | 0 0
  1. package auto_crit_client;
  2.  
  3. import java.net.*;
  4. import java.io.*;
  5. import java.util.*;
  6.  
  7. public class Auto_Crit_VTT extends javax.swing.JFrame {
  8.  
  9.     String username, address = "localhost";
  10.     ArrayList<String> users = new ArrayList();
  11.     int port = 2222;
  12.     Boolean isConnected = false;
  13.  
  14.     Socket sock;
  15.     BufferedReader reader;
  16.     PrintWriter writer;
  17.  
  18.     String dicetype = "1d20";
  19.     Random generator = new Random();
  20.  
  21.     //--------------------------//
  22.     public void ListenThread() {
  23.         Thread IncomingReader = new Thread(new IncomingReader());
  24.         IncomingReader.start();
  25.     }
  26.  
  27.     //--------------------------//
  28.     public void userAdd(String data) {
  29.         users.add(data);
  30.     }
  31.  
  32.     //--------------------------//
  33.     public void userRemove(String data) {
  34.         ta_chat.append(data + " is now offline.\n");
  35.     }
  36.  
  37.     //--------------------------//
  38.     public void writeUsers() {
  39.         String[] tempList = new String[(users.size())];
  40.         users.toArray(tempList);
  41.         for (String token : tempList) {
  42.             //users.append(token + "\n");
  43.         }
  44.     }
  45.  
  46.     //--------------------------//
  47.     public void sendDisconnect() {
  48.         String bye = (username + ": :Disconnect");
  49.         try {
  50.             writer.println(bye);
  51.             writer.flush();
  52.         } catch (Exception e) {
  53.             ta_chat.append("Could not send Disconnect message.\n");
  54.         }
  55.     }
  56.  
  57.     //--------------------------//
  58.     public void Disconnect() {
  59.         try {
  60.             ta_chat.append("Disconnected.\n");
  61.             sock.close();
  62.         } catch (Exception ex) {
  63.             ta_chat.append("Failed to disconnect. \n");
  64.         }
  65.         isConnected = false;
  66.         tf_username.setEditable(true);
  67.  
  68.     }
  69.  
  70.     private int roll(int noDice, int sides) {
  71.         int sum = 0;
  72.         for (int i = 0; i < noDice; i++) {
  73.             sum += generator.nextInt(sides) + 1;
  74.         }
  75.         return sum;
  76.     }
  77.  
  78.     public int diceRoll(String roll) {
  79.         String minMax[] = roll.split("d");
  80.         return roll(Integer.parseInt(minMax[0]), Integer.parseInt(minMax[1]));
  81.     }
  82.  
  83.     public Auto_Crit_VTT() {
  84.         initComponents();
  85.     }
  86.  
  87.     //--------------------------//
  88.     public class IncomingReader implements Runnable {
  89.  
  90.         @Override
  91.         public void run() {
  92.             String[] data;
  93.             String stream, done = "Done", connect = "Connect", disconnect = "Disconnect", chat = "Chat";
  94.  
  95.             try {
  96.                 while ((stream = reader.readLine()) != null) {
  97.                     data = stream.split(":");
  98.  
  99.                     if (data[2].equals(chat)) {
  100.                         ta_chat.append(data[0] + ": " + data[1] + "\n");
  101.                         ta_chat.setCaretPosition(ta_chat.getDocument().getLength());
  102.                     } else if (data[2].equals(connect)) {
  103.                         ta_chat.removeAll();
  104.                         userAdd(data[0]);
  105.                     } else if (data[2].equals(disconnect)) {
  106.                         userRemove(data[0]);
  107.                     } else if (data[2].equals(done)) {
  108.                         //users.setText("");
  109.                         writeUsers();
  110.                         users.clear();
  111.                     }
  112.                 }
  113.             } catch (Exception ex) {
  114.             }
  115.         }
  116.     }
  117.  
  118.     //--------------------------//
  119.     @SuppressWarnings("unchecked")
  120.     // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
  121.     private void initComponents() {
  122.  
  123.         lb_address = new javax.swing.JLabel();
  124.         tf_address = new javax.swing.JTextField();
  125.         lb_port = new javax.swing.JLabel();
  126.         tf_port = new javax.swing.JTextField();
  127.         lb_username = new javax.swing.JLabel();
  128.         tf_username = new javax.swing.JTextField();
  129.         lb_password = new javax.swing.JLabel();
  130.         tf_password = new javax.swing.JTextField();
  131.         b_connect = new javax.swing.JButton();
  132.         b_disconnect = new javax.swing.JButton();
  133.         b_anonymous = new javax.swing.JButton();
  134.         jScrollPane1 = new javax.swing.JScrollPane();
  135.         ta_chat = new javax.swing.JTextArea();
  136.         tf_chat = new javax.swing.JTextField();
  137.         b_send = new javax.swing.JButton();
  138.         jPanel1 = new javax.swing.JPanel();
  139.         importXMLJButton = new javax.swing.JButton();
  140.  
  141.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  142.         setTitle("Chat - Client's frame");
  143.         setName("client"); // NOI18N
  144.         setResizable(false);
  145.  
  146.         lb_address.setText("Address : ");
  147.  
  148.         tf_address.setText("localhost");
  149.         tf_address.addActionListener(new java.awt.event.ActionListener() {
  150.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  151.                 tf_addressActionPerformed(evt);
  152.             }
  153.         });
  154.  
  155.         lb_port.setText("Port :");
  156.  
  157.         tf_port.setText("2222");
  158.         tf_port.addActionListener(new java.awt.event.ActionListener() {
  159.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  160.                 tf_portActionPerformed(evt);
  161.             }
  162.         });
  163.  
  164.         lb_username.setText("Username :");
  165.  
  166.         tf_username.addActionListener(new java.awt.event.ActionListener() {
  167.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  168.                 tf_usernameActionPerformed(evt);
  169.             }
  170.         });
  171.  
  172.         lb_password.setText("Password : ");
  173.  
  174.         b_connect.setText("Connect");
  175.         b_connect.addActionListener(new java.awt.event.ActionListener() {
  176.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  177.                 b_connectActionPerformed(evt);
  178.             }
  179.         });
  180.  
  181.         b_disconnect.setText("Disconnect");
  182.         b_disconnect.addActionListener(new java.awt.event.ActionListener() {
  183.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  184.                 b_disconnectActionPerformed(evt);
  185.             }
  186.         });
  187.  
  188.         b_anonymous.setText("Anonymous Login");
  189.         b_anonymous.addActionListener(new java.awt.event.ActionListener() {
  190.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  191.                 b_anonymousActionPerformed(evt);
  192.             }
  193.         });
  194.  
  195.         ta_chat.setColumns(20);
  196.         ta_chat.setRows(5);
  197.         jScrollPane1.setViewportView(ta_chat);
  198.  
  199.         tf_chat.addActionListener(new java.awt.event.ActionListener() {
  200.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  201.                 tf_chatActionPerformed(evt);
  202.             }
  203.         });
  204.  
  205.         b_send.setText("SEND");
  206.         b_send.addActionListener(new java.awt.event.ActionListener() {
  207.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  208.                 b_sendActionPerformed(evt);
  209.             }
  210.         });
  211.  
  212.         jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
  213.  
  214.         javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
  215.         jPanel1.setLayout(jPanel1Layout);
  216.         jPanel1Layout.setHorizontalGroup(
  217.             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  218.             .addGap(0, 0, Short.MAX_VALUE)
  219.         );
  220.         jPanel1Layout.setVerticalGroup(
  221.             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  222.             .addGap(0, 0, Short.MAX_VALUE)
  223.         );
  224.  
  225.         importXMLJButton.setText("Import Character Sheet");
  226.         importXMLJButton.addActionListener(new java.awt.event.ActionListener() {
  227.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  228.                 importXMLJButtonActionPerformed(evt);
  229.             }
  230.         });
  231.  
  232.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  233.         getContentPane().setLayout(layout);
  234.         layout.setHorizontalGroup(
  235.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  236.             .addGroup(layout.createSequentialGroup()
  237.                 .addContainerGap()
  238.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  239.                     .addGroup(layout.createSequentialGroup()
  240.                         .addGap(0, 315, Short.MAX_VALUE)
  241.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  242.                             .addGroup(layout.createSequentialGroup()
  243.                                 .addComponent(lb_username, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
  244.                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  245.                                 .addComponent(tf_username, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
  246.                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  247.                                 .addComponent(lb_password)
  248.                                 .addGap(18, 18, 18)
  249.                                 .addComponent(tf_password, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
  250.                             .addGroup(layout.createSequentialGroup()
  251.                                 .addComponent(lb_address, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
  252.                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  253.                                 .addComponent(tf_address, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
  254.                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  255.                                 .addComponent(lb_port, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
  256.                                 .addGap(18, 18, 18)
  257.                                 .addComponent(tf_port, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)))
  258.                         .addGap(18, 18, 18)
  259.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  260.                             .addGroup(layout.createSequentialGroup()
  261.                                 .addComponent(b_connect)
  262.                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  263.                                 .addComponent(b_disconnect))
  264.                             .addComponent(b_anonymous, javax.swing.GroupLayout.PREFERRED_SIZE, 164, javax.swing.GroupLayout.PREFERRED_SIZE)))
  265.                     .addGroup(layout.createSequentialGroup()
  266.                         .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  267.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  268.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  269.                             .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 240, javax.swing.GroupLayout.PREFERRED_SIZE)
  270.                             .addGroup(layout.createSequentialGroup()
  271.                                 .addComponent(tf_chat, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
  272.                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  273.                                 .addComponent(b_send))
  274.                             .addComponent(importXMLJButton))))
  275.                 .addContainerGap())
  276.         );
  277.         layout.setVerticalGroup(
  278.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  279.             .addGroup(layout.createSequentialGroup()
  280.                 .addContainerGap()
  281.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  282.                     .addComponent(lb_address)
  283.                     .addComponent(tf_address, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  284.                     .addComponent(lb_port)
  285.                     .addComponent(tf_port, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  286.                     .addComponent(b_anonymous))
  287.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  288.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  289.                     .addComponent(lb_username)
  290.                     .addComponent(lb_password)
  291.                     .addComponent(b_connect)
  292.                     .addComponent(b_disconnect)
  293.                     .addComponent(tf_password, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  294.                     .addComponent(tf_username))
  295.                 .addGap(8, 8, 8)
  296.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  297.                     .addGroup(layout.createSequentialGroup()
  298.                         .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 310, javax.swing.GroupLayout.PREFERRED_SIZE)
  299.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  300.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  301.                             .addComponent(tf_chat)
  302.                             .addComponent(b_send))
  303.                         .addGap(10, 10, 10)
  304.                         .addComponent(importXMLJButton))
  305.                     .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  306.                 .addGap(27, 27, 27))
  307.         );
  308.  
  309.         pack();
  310.     }// </editor-fold>                        
  311.  
  312.     private void tf_addressActionPerformed(java.awt.event.ActionEvent evt) {                                          
  313.  
  314.     }                                          
  315.  
  316.     private void tf_portActionPerformed(java.awt.event.ActionEvent evt) {                                        
  317.  
  318.     }                                      
  319.  
  320.     private void tf_usernameActionPerformed(java.awt.event.ActionEvent evt) {                                            
  321.  
  322.     }                                          
  323.  
  324.     private void b_connectActionPerformed(java.awt.event.ActionEvent evt) {                                          
  325.         if (isConnected == false) {
  326.             username = tf_username.getText();
  327.             tf_username.setEditable(false);
  328.  
  329.             try {
  330.                 sock = new Socket(address, port);
  331.                 InputStreamReader streamreader = new InputStreamReader(sock.getInputStream());
  332.                 reader = new BufferedReader(streamreader);
  333.                 writer = new PrintWriter(sock.getOutputStream());
  334.                 writer.println(username + ":has connected.:Connect");
  335.                 writer.flush();
  336.                 isConnected = true;
  337.             } catch (Exception ex) {
  338.                 ta_chat.append("Cannot Connect! Try Again. \n");
  339.                 tf_username.setEditable(true);
  340.             }
  341.  
  342.             ListenThread();
  343.  
  344.         } else if (isConnected == true) {
  345.             ta_chat.append("You are already connected. \n");
  346.         }
  347.     }                                        
  348.  
  349.     private void b_disconnectActionPerformed(java.awt.event.ActionEvent evt) {                                            
  350.         sendDisconnect();
  351.         Disconnect();
  352.     }                                            
  353.  
  354.     private void b_anonymousActionPerformed(java.awt.event.ActionEvent evt) {                                            
  355.         tf_username.setText("");
  356.         if (isConnected == false) {
  357.             String anon = "anon";
  358.             Random generator = new Random();
  359.             int i = generator.nextInt(999) + 1;
  360.             String is = String.valueOf(i);
  361.             anon = anon.concat(is);
  362.             username = anon;
  363.  
  364.             tf_username.setText(anon);
  365.             tf_username.setEditable(false);
  366.  
  367.             try {
  368.                 sock = new Socket(address, port);
  369.                 InputStreamReader streamreader = new InputStreamReader(sock.getInputStream());
  370.                 reader = new BufferedReader(streamreader);
  371.                 writer = new PrintWriter(sock.getOutputStream());
  372.                 writer.println(anon + ":has connected.:Connect");
  373.                 writer.flush();
  374.                 isConnected = true;
  375.             } catch (Exception ex) {
  376.                 ta_chat.append("Cannot Connect! Try Again. \n");
  377.                 tf_username.setEditable(true);
  378.             }
  379.  
  380.             ListenThread();
  381.  
  382.         } else if (isConnected == true) {
  383.             ta_chat.append("You are already connected. \n");
  384.         }
  385.     }                                          
  386.  
  387.     private void b_sendActionPerformed(java.awt.event.ActionEvent evt) {                                      
  388.         String nothing = "";
  389.         if ((tf_chat.getText()).equals(nothing)) {
  390.             tf_chat.setText("");
  391.             tf_chat.requestFocus();
  392.         } else {
  393.             try {
  394.                 writer.println(username + ":" + tf_chat.getText() + ":" + "Chat");
  395.                 writer.flush(); // flushes the buffer
  396.             } catch (Exception ex) {
  397.                 ta_chat.append("Message was not sent. \n");
  398.             }
  399.         }
  400.  
  401.         if ((tf_chat.getText()).equals(dicetype)) {
  402.                 Auto_Crit_VTT d = new Auto_Crit_VTT();
  403.                 writer.println(d.diceRoll(tf_chat.getText()));
  404.         }
  405.         tf_chat.setText("");
  406.         tf_chat.requestFocus();
  407.     }                                      
  408.  
  409.     private void tf_chatActionPerformed(java.awt.event.ActionEvent evt) {                                        
  410.         // TODO add your handling code here:
  411.     }                                      
  412.  
  413.     private void importXMLJButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                
  414.  
  415.     }                                                
  416.  
  417.     public static void main(String args[]) {
  418.         java.awt.EventQueue.invokeLater(new Runnable() {
  419.             @Override
  420.             public void run() {
  421.                 new Auto_Crit_VTT().setVisible(true);
  422.             }
  423.         });
  424.     }
  425.  
  426.     // Variables declaration - do not modify                    
  427.     private javax.swing.JButton b_anonymous;
  428.     private javax.swing.JButton b_connect;
  429.     private javax.swing.JButton b_disconnect;
  430.     private javax.swing.JButton b_send;
  431.     private javax.swing.JButton importXMLJButton;
  432.     private javax.swing.JPanel jPanel1;
  433.     private javax.swing.JScrollPane jScrollPane1;
  434.     private javax.swing.JLabel lb_address;
  435.     private javax.swing.JLabel lb_password;
  436.     private javax.swing.JLabel lb_port;
  437.     private javax.swing.JLabel lb_username;
  438.     private javax.swing.JTextArea ta_chat;
  439.     private javax.swing.JTextField tf_address;
  440.     private javax.swing.JTextField tf_chat;
  441.     private javax.swing.JTextField tf_password;
  442.     private javax.swing.JTextField tf_port;
  443.     private javax.swing.JTextField tf_username;
  444.     // End of variables declaration                  
  445. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement