Advertisement
Guest User

asdasd

a guest
Jun 25th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.92 KB | None | 0 0
  1. import javax.swing.*;
  2. import javax.swing.border.*;
  3.  
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import java.io.File;
  7. import java.net.MalformedURLException;
  8. import java.rmi.Naming;
  9. import java.rmi.NotBoundException;
  10. import java.rmi.RemoteException;
  11. import java.util.*;
  12.  
  13. public class ChatUI{
  14. private ChatClient client;
  15. private ChatServerInt server, zm;
  16. public void doConnect(){
  17. if (connect.getText().equals("Connect")){
  18. if (name.getText().length()<2){JOptionPane.showMessageDialog(frame, "You need to type a name."); return;}
  19. if (ip.getText().length()<2){JOptionPane.showMessageDialog(frame, "You need to type an IP."); return;}
  20. try{
  21. client=new ChatClient(name.getText());
  22. client.setGUI(this);
  23. server=(ChatServerInt)Naming.lookup("rmi://"+ip.getText()+"/myabc");
  24. server.login(client);
  25. updateUsers(server.getConnected());
  26. connect.setText("Disconnect");
  27.  
  28. }catch(Exception e){e.printStackTrace();JOptionPane.showMessageDialog(frame, "ERROR, we wouldn't connect....");}
  29. }else{
  30. updateUsers(null);
  31. connect.setText("Connect");
  32. //Better to implement Logout ....
  33. }
  34. }
  35.  
  36. public void sendText(){
  37. if (connect.getText().equals("Connect")){
  38. JOptionPane.showMessageDialog(frame, "You need to connect first."); return;
  39. }
  40. String st=tf.getText();
  41. st="["+name.getText()+"] "+st;
  42. tf.setText("");
  43. //Remove if you are going to implement for remote invocation
  44. try{
  45. server.publish(st);
  46. }catch(Exception e){e.printStackTrace();}
  47. }
  48.  
  49. public void writeMsg(String st){ tx.setText(tx.getText()+"\n"+st); }
  50.  
  51. public JList updateUsers(Vector v){
  52. DefaultListModel listModel = new DefaultListModel();
  53. if(v!=null) for (int i=0;i<v.size();i++){
  54. try{ String tmp=((ChatClientInt)v.get(i)).getName();
  55. listModel.addElement(tmp);
  56. }catch(Exception e){e.printStackTrace();}
  57. }
  58. lst.setModel(listModel);
  59. // model = (DefaultListModel) lst.getModel();
  60. return lst;
  61. }
  62.  
  63. public static void main(String [] args){
  64. //System.out.println("Hello World !");
  65. ChatUI c=new ChatUI();
  66. }
  67.  
  68. //User Interface code.
  69. public ChatUI(){
  70. frame=new JFrame("Group Chat");
  71. JPanel main =new JPanel();
  72. JPanel top =new JPanel();
  73. JPanel cn =new JPanel();
  74. JPanel bottom =new JPanel();
  75. JPanel left =new JPanel();
  76. //JPanel lefttop =new JPanel();
  77. // JPanel leftbot =new JPanel();
  78. //JFileChooser chooser = new JFileChooser();
  79. //JTextPane choice = new JTextPane();
  80. final Choice choice = new Choice();
  81. ip=new JTextField();
  82. tf=new JTextField();
  83. name=new JTextField();
  84. tx=new JTextArea();
  85. connect=new JButton("Connect");
  86. JButton bt=new JButton("Send");
  87. //model = new DefaultListModel();
  88. // JButton bt3=new JButton("choose file");
  89. JButton bt2=new JButton("Send file");
  90. //DefaultListModel model = new DefaultListModel();
  91. lst=new JList(); //refreshing
  92. main.setLayout(new BorderLayout(5,5));
  93. top.setLayout(new GridLayout(1,0,5,5));
  94. cn.setLayout(new BorderLayout(5,5));
  95. bottom.setLayout(new BorderLayout(5,5));
  96. left.setLayout(new BorderLayout(5,5));
  97. // lefttop.setLayout(new BorderLayout(5,5));
  98. //leftbot.setLayout(new BorderLayout(5,5));
  99. top.add(new JLabel("Your name: "));top.add(name);
  100. top.add(new JLabel("Server Address: "));top.add(ip);
  101. top.add(connect);
  102. cn.add(new JScrollPane(tx), BorderLayout.CENTER);
  103. lst = updateUsers(null);
  104. cn.add(lst, BorderLayout.EAST);
  105. bottom.add(tf, BorderLayout.CENTER);
  106. bottom.add(bt, BorderLayout.EAST);
  107. left.add(choice, BorderLayout.CENTER);
  108. //left.add(bt3, BorderLayout.CENTER);
  109. left.add(bt2, BorderLayout.SOUTH);
  110. // bot2.add(chooser, BorderLayout.SOUTH);
  111. main.add(top, BorderLayout.NORTH);
  112. main.add(cn, BorderLayout.CENTER);
  113. main.add(bottom, BorderLayout.SOUTH);
  114. main.add(left, BorderLayout.WEST);
  115. main.setBorder(new EmptyBorder(10, 10, 10, 10) );
  116. //Events
  117. connect.addActionListener(new ActionListener(){
  118. public void actionPerformed(ActionEvent e){ doConnect(); } });
  119. bt.addActionListener(new ActionListener(){
  120. public void actionPerformed(ActionEvent e){ sendText(); } });
  121. tf.addActionListener(new ActionListener(){
  122. public void actionPerformed(ActionEvent e){ sendText(); } });
  123. choice.addMouseListener(new MouseAdapter(){
  124. public void mouseClicked(MouseEvent e){
  125. JFileChooser chooser = new JFileChooser();
  126. chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
  127. chooser.showDialog(null, "Wybierz");
  128. chooser.setBounds(50, 50, 225, 150);
  129. File file = chooser.getSelectedFile();
  130. choice.add(file.getAbsolutePath());
  131.  
  132.  
  133.  
  134. }
  135. });
  136.  
  137. bt2.addMouseListener(new MouseAdapter(){
  138. public void mouseClicked(MouseEvent e){
  139.  
  140. try {
  141. zm = (ChatServerInt) Naming.lookup("object");
  142. } catch (MalformedURLException | RemoteException | NotBoundException e1) {
  143. // TODO Auto-generated catch block
  144. e1.printStackTrace();
  145. }
  146. try {
  147. zm.setFile(choice.getItem(0), client);
  148. } catch (RemoteException e1) {
  149. // TODO Auto-generated catch block
  150. e1.printStackTrace();
  151. }
  152. try{
  153. Scanner s = new Scanner(System.in);
  154. while(true){
  155. String line = s.nextLine();
  156. }
  157. } catch (Exception e1) {
  158. // TODO Auto-generated catch block
  159. e1.printStackTrace();
  160. }
  161. }
  162. });
  163.  
  164. frame.setContentPane(main);
  165. frame.setSize(600,600);
  166. frame.setVisible(true);
  167. }
  168. JTextArea tx;
  169. JTextField tf,ip, name;
  170. JButton connect;
  171. JList lst;
  172. JFrame frame;
  173. //DefaultListModel model;
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement