Advertisement
Metziop

Untitled

Jun 8th, 2021
1,151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.38 KB | None | 0 0
  1. package controlador;
  2.  
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.io.DataInputStream;
  6. import java.io.DataOutputStream;
  7. import java.io.IOException;
  8. import java.net.Socket;
  9. import java.util.List;
  10. import java.util.StringTokenizer;
  11.  
  12. import javax.swing.ButtonGroup;
  13. import javax.swing.DefaultListModel;
  14. import javax.swing.JButton;
  15. import javax.swing.JFrame;
  16. import javax.swing.JLabel;
  17. import javax.swing.JList;
  18. import javax.swing.JOptionPane;
  19. import javax.swing.JRadioButton;
  20. import javax.swing.JTextArea;
  21. import javax.swing.JTextField;
  22. import javax.swing.SwingConstants;
  23.  
  24. /**
  25.  *
  26.  * @author Jesus Dario Rodriguez <http://jdr80.epizy.com/>
  27.  */
  28. public class ClientView extends JFrame {
  29.  
  30.    
  31.     private static final long serialVersionUID = 1L;
  32.     private JFrame frame;
  33.     private JTextField clientTypingBoard;
  34.     private JList clientActiveUsersList;
  35.     private JTextArea clientMessageBoard;
  36.     private JButton clientKillProcessBtn;
  37.     private JRadioButton oneToNRadioBtn;
  38.     private JRadioButton broadcastBtn;
  39.  
  40.     DataInputStream inputStream;
  41.     DataOutputStream outStream;
  42.     DefaultListModel<String> dm;
  43.     String id, clientIds = "";
  44.  
  45.  
  46.     /**
  47.      * Crea la aplicacion
  48.      */
  49.     public ClientView() {
  50.         initialize();
  51.     }
  52.  
  53.     public ClientView(String id, Socket s) { // constructor
  54.         initialize(); // inicializa  los componentes de la  UI
  55.         this.id = id;
  56.         try {
  57.             frame.setTitle("Conectado como: - " + id); // titulo del frame
  58.             dm = new DefaultListModel<String>();
  59.             clientActiveUsersList.setModel(dm);
  60.             inputStream = new DataInputStream(s.getInputStream());
  61.             outStream = new DataOutputStream(s.getOutputStream());
  62.             new Read().start();
  63.         } catch (Exception ex) {
  64.             ex.printStackTrace();
  65.         }
  66.     }
  67.  
  68.     class Read extends Thread {
  69.  
  70.         @Override
  71.         public void run() {
  72.             while (true) {
  73.                 try {
  74.                     String m = inputStream.readUTF();  
  75.                     System.out.println("inside read thread : " + m);
  76.                     if (m.contains(":;.,/=")) {
  77.                         m = m.substring(6);
  78.                         dm.clear();
  79.                         StringTokenizer st = new StringTokenizer(m, ",");
  80.                         while (st.hasMoreTokens()) {
  81.                             String u = st.nextToken();
  82.                             if (!id.equals(u))
  83.                             {
  84.                                 dm.addElement(u);
  85.                             }                                              
  86.                         }
  87.                     } else {
  88.                         clientMessageBoard.append("" + m + "\n");
  89.                     }
  90.                 } catch (Exception e) {
  91.                     e.printStackTrace();
  92.                     break;
  93.                 }
  94.             }
  95.         }
  96.     }
  97.  
  98.    
  99.     private void initialize() {
  100.         frame = new JFrame();
  101.         frame.setBounds(100, 100, 926, 705);
  102.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  103.         frame.getContentPane().setLayout(null);
  104.         frame.setTitle("Vista de cliente");
  105.  
  106.         clientMessageBoard = new JTextArea();
  107.         clientMessageBoard.setEditable(false);
  108.         clientMessageBoard.setBounds(12, 25, 530, 495);
  109.         frame.getContentPane().add(clientMessageBoard);
  110.  
  111.         clientTypingBoard = new JTextField();
  112.         clientTypingBoard.setHorizontalAlignment(SwingConstants.LEFT);
  113.         clientTypingBoard.setBounds(12, 533, 530, 84);
  114.         frame.getContentPane().add(clientTypingBoard);
  115.         clientTypingBoard.setColumns(10);
  116.  
  117.         JButton clientSendMsgBtn = new JButton("Enviar");
  118.         clientSendMsgBtn.addActionListener(new ActionListener() {
  119.             public void actionPerformed(ActionEvent e) {
  120.                 String textAreaMessage = clientTypingBoard.getText();
  121.                 if (textAreaMessage != null && !textAreaMessage.isEmpty()) {  
  122.                     try {
  123.                         String messageToBeSentToServer = "";
  124.                         String cast = "broadcast";
  125.                         int flag = 0;  
  126.                         if (oneToNRadioBtn.isSelected()) {
  127.                             cast = "multicast";
  128.                             List<String> clientList = clientActiveUsersList.getSelectedValuesList();
  129.                             if (clientList.size() == 0)
  130.                             {
  131.                                 flag = 1;
  132.                             }
  133.                             for (String selectedUsr : clientList) {
  134.                                 if (clientIds.isEmpty()) {
  135.                                     clientIds += selectedUsr;
  136.                                 } else {
  137.                                     clientIds += "," + selectedUsr;
  138.                                 }
  139.                             }
  140.                             messageToBeSentToServer = cast + ":" + clientIds + ":" + textAreaMessage;
  141.                         } else {
  142.                             messageToBeSentToServer = cast + ":" + textAreaMessage;
  143.                         }
  144.                         if (cast.equalsIgnoreCase("multicast")) {
  145.                             if (flag == 1) {
  146.                                 JOptionPane.showMessageDialog(frame, "No se selecciono destino");
  147.                             } else {
  148.                                 outStream.writeUTF(messageToBeSentToServer);
  149.                                 clientTypingBoard.setText("");
  150.                                 clientMessageBoard.append("< Envias a: " + clientIds + ">" + textAreaMessage + "\n");
  151.                             }
  152.                         } else {
  153.                             outStream.writeUTF(messageToBeSentToServer);
  154.                             clientTypingBoard.setText("");
  155.                             clientMessageBoard.append("< Envias a todos >" + textAreaMessage + "\n");
  156.                         }
  157.                         clientIds = "";
  158.                     } catch (Exception ex) {
  159.                         JOptionPane.showMessageDialog(frame, "El usuario abandono la sala.");
  160.                     }
  161.                 }
  162.             }
  163.         });
  164.         clientSendMsgBtn.setBounds(554, 533, 137, 84);
  165.         frame.getContentPane().add(clientSendMsgBtn);
  166.  
  167.         clientActiveUsersList = new JList();
  168.         clientActiveUsersList.setToolTipText("Usuarios Activos");
  169.         clientActiveUsersList.setBounds(554, 63, 327, 457);
  170.         frame.getContentPane().add(clientActiveUsersList);
  171.  
  172.         clientKillProcessBtn = new JButton("Cerrar chat");
  173.         clientKillProcessBtn.addActionListener(new ActionListener() {
  174.             public void actionPerformed(ActionEvent e) {
  175.                 try {
  176.                     outStream.writeUTF("Salir");
  177.                     // board
  178.                     clientMessageBoard.append("Usted esta desconectado.\n");
  179.                     frame.dispose();
  180.                 } catch (IOException e1) {
  181.                     e1.printStackTrace();
  182.                 }
  183.             }
  184.         });
  185.         clientKillProcessBtn.setBounds(703, 533, 193, 84);
  186.         frame.getContentPane().add(clientKillProcessBtn);
  187.  
  188.         JLabel lblNewLabel = new JLabel("Usuarios Activos");
  189.         lblNewLabel.setHorizontalAlignment(SwingConstants.LEFT);
  190.         lblNewLabel.setBounds(559, 43, 95, 16);
  191.         frame.getContentPane().add(lblNewLabel);
  192.  
  193.         oneToNRadioBtn = new JRadioButton("Multiples Usuarios");
  194.         oneToNRadioBtn.addActionListener(new ActionListener() {
  195.             public void actionPerformed(ActionEvent e) {
  196.                 clientActiveUsersList.setEnabled(true);
  197.             }
  198.         });
  199.         oneToNRadioBtn.setSelected(true);
  200.         oneToNRadioBtn.setBounds(682, 24, 72, 25);
  201.         frame.getContentPane().add(oneToNRadioBtn);
  202.  
  203.         broadcastBtn = new JRadioButton("Msj a todos");
  204.         broadcastBtn.addActionListener(new ActionListener() {
  205.             public void actionPerformed(ActionEvent e) {
  206.                 clientActiveUsersList.setEnabled(false);
  207.             }
  208.         });
  209.         broadcastBtn.setBounds(774, 24, 107, 25);
  210.         frame.getContentPane().add(broadcastBtn);
  211.  
  212.         ButtonGroup btngrp = new ButtonGroup();
  213.         btngrp.add(oneToNRadioBtn);
  214.         btngrp.add(broadcastBtn);
  215.  
  216.         frame.setVisible(true);
  217.     }
  218. }
  219.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement