Advertisement
Guest User

dasdasd

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