Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.*;
- import javax.swing.border.*;
- import java.awt.*;
- import java.awt.event.*;
- import java.io.File;
- import java.net.MalformedURLException;
- import java.rmi.Naming;
- import java.rmi.NotBoundException;
- import java.rmi.RemoteException;
- import java.util.*;
- public class ChatUI{
- private ChatClient client;
- private ChatServerInt server, zm;
- public void doConnect(){
- if (connect.getText().equals("Connect")){
- if (name.getText().length()<2){JOptionPane.showMessageDialog(frame, "You need to type a name."); return;}
- if (ip.getText().length()<2){JOptionPane.showMessageDialog(frame, "You need to type an IP."); return;}
- try{
- client=new ChatClient(name.getText());
- client.setGUI(this);
- server=(ChatServerInt)Naming.lookup("rmi://"+ip.getText()+"/myabc");
- server.login(client);
- updateUsers(server.getConnected());
- connect.setText("Disconnect");
- }catch(Exception e){e.printStackTrace();JOptionPane.showMessageDialog(frame, "ERROR, we wouldn't connect....");}
- }else{
- updateUsers(null);
- connect.setText("Connect");
- //Better to implement Logout ....
- }
- }
- public void sendText(){
- if (connect.getText().equals("Connect")){
- JOptionPane.showMessageDialog(frame, "You need to connect first."); return;
- }
- String st=tf.getText();
- st="["+name.getText()+"] "+st;
- tf.setText("");
- //Remove if you are going to implement for remote invocation
- try{
- server.publish(st);
- }catch(Exception e){e.printStackTrace();}
- }
- public void writeMsg(String st){ tx.setText(tx.getText()+"\n"+st); }
- public JList updateUsers(Vector v){
- DefaultListModel listModel = new DefaultListModel();
- if(v!=null) for (int i=0;i<v.size();i++){
- try{ String tmp=((ChatClientInt)v.get(i)).getName();
- listModel.addElement(tmp);
- }catch(Exception e){e.printStackTrace();}
- }
- lst.setModel(listModel);
- // model = (DefaultListModel) lst.getModel();
- return lst;
- }
- public static void main(String [] args){
- //System.out.println("Hello World !");
- ChatUI c=new ChatUI();
- }
- //User Interface code.
- public ChatUI(){
- frame=new JFrame("Group Chat");
- JPanel main =new JPanel();
- JPanel top =new JPanel();
- JPanel cn =new JPanel();
- JPanel bottom =new JPanel();
- JPanel left =new JPanel();
- //JPanel lefttop =new JPanel();
- // JPanel leftbot =new JPanel();
- //JFileChooser chooser = new JFileChooser();
- //JTextPane choice = new JTextPane();
- final Choice choice = new Choice();
- ip=new JTextField();
- tf=new JTextField();
- name=new JTextField();
- tx=new JTextArea();
- connect=new JButton("Connect");
- JButton bt=new JButton("Send");
- //model = new DefaultListModel();
- // JButton bt3=new JButton("choose file");
- JButton bt2=new JButton("Send file");
- //DefaultListModel model = new DefaultListModel();
- lst=new JList(); //refreshing
- main.setLayout(new BorderLayout(5,5));
- top.setLayout(new GridLayout(1,0,5,5));
- cn.setLayout(new BorderLayout(5,5));
- bottom.setLayout(new BorderLayout(5,5));
- left.setLayout(new BorderLayout(5,5));
- // lefttop.setLayout(new BorderLayout(5,5));
- //leftbot.setLayout(new BorderLayout(5,5));
- top.add(new JLabel("Your name: "));top.add(name);
- top.add(new JLabel("Server Address: "));top.add(ip);
- top.add(connect);
- cn.add(new JScrollPane(tx), BorderLayout.CENTER);
- lst = updateUsers(null);
- cn.add(lst, BorderLayout.EAST);
- bottom.add(tf, BorderLayout.CENTER);
- bottom.add(bt, BorderLayout.EAST);
- left.add(choice, BorderLayout.CENTER);
- //left.add(bt3, BorderLayout.CENTER);
- left.add(bt2, BorderLayout.SOUTH);
- // bot2.add(chooser, BorderLayout.SOUTH);
- main.add(top, BorderLayout.NORTH);
- main.add(cn, BorderLayout.CENTER);
- main.add(bottom, BorderLayout.SOUTH);
- main.add(left, BorderLayout.WEST);
- main.setBorder(new EmptyBorder(10, 10, 10, 10) );
- //Events
- connect.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ doConnect(); } });
- bt.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ sendText(); } });
- tf.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ sendText(); } });
- choice.addMouseListener(new MouseAdapter(){
- public void mouseClicked(MouseEvent e){
- JFileChooser chooser = new JFileChooser();
- chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
- chooser.showDialog(null, "Wybierz");
- chooser.setBounds(50, 50, 225, 150);
- File file = chooser.getSelectedFile();
- choice.add(file.getAbsolutePath());
- }
- });
- bt2.addMouseListener(new MouseAdapter(){
- public void mouseClicked(MouseEvent e){
- try {
- zm = (ChatServerInt) Naming.lookup("object");
- } catch (MalformedURLException | RemoteException | NotBoundException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- try {
- zm.setFile(choice.getItem(0), client);
- } catch (RemoteException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- try{
- Scanner s = new Scanner(System.in);
- while(true){
- String line = s.nextLine();
- }
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- }
- });
- frame.setContentPane(main);
- frame.setSize(600,600);
- frame.setVisible(true);
- }
- JTextArea tx;
- JTextField tf,ip, name;
- JButton connect;
- JList lst;
- JFrame frame;
- //DefaultListModel model;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement