From 5f2efcc0443f0f4fde16a74575c45a0786f61c44 Mon Sep 17 00:00:00 2001 From: Ivan Nizhnikovskiy Date: Sat, 28 Nov 2015 16:07:21 +0200 Subject: [PATCH 01/13] 111 111 --- src/Caller.java | 7 +++ src/Command.java | 31 ++++++++++++++ src/CommandType.java | 4 ++ src/Connection.java | 95 +++++++++++++++++++++++++++++++++++++++++ src/MessageCommand.java | 22 ++++++++++ src/NickCommand.java | 35 +++++++++++++++ 6 files changed, 194 insertions(+) create mode 100644 src/Caller.java create mode 100644 src/Command.java create mode 100644 src/CommandType.java create mode 100644 src/Connection.java create mode 100644 src/MessageCommand.java create mode 100644 src/NickCommand.java diff --git a/src/Caller.java b/src/Caller.java new file mode 100644 index 0000000..dca29a9 --- /dev/null +++ b/src/Caller.java @@ -0,0 +1,7 @@ + +public class Caller { + + String NickName; + String IP; + +} diff --git a/src/Command.java b/src/Command.java new file mode 100644 index 0000000..a4584a7 --- /dev/null +++ b/src/Command.java @@ -0,0 +1,31 @@ + +public class Command { + + CommandType type; + + Command(CommandType type){ + this.type=type; + } + + + public static Command callCommand(String s){ + if(s.contains("Accepted")) { + return new Command(CommandType.ACCEPT); + } + if(s.contains("Rejected")) { + return new Command(CommandType.REJECT); + } + if(s.contains("Disconnect")) { + return new Command(CommandType.DISCONNECT); + } + if(s.contains("ChatApp 2015")) { + return new NickCommand(CommandType.NICK); + } + if(s.contains("Message")) { + return new MessageCommand(CommandType.MESSAGE); + } + return null; + } + + +} diff --git a/src/CommandType.java b/src/CommandType.java new file mode 100644 index 0000000..bb0774f --- /dev/null +++ b/src/CommandType.java @@ -0,0 +1,4 @@ + +public enum CommandType { + ACCEPT, REJECT, DISCONNECT, NICK, MESSAGE; +} diff --git a/src/Connection.java b/src/Connection.java new file mode 100644 index 0000000..a26718a --- /dev/null +++ b/src/Connection.java @@ -0,0 +1,95 @@ +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.Socket; +import java.util.Scanner; + + +class Connection { + + + private Socket socket; + + public final static int port=28411; + + private Scanner in; + private DataOutputStream out; + + + + public Connection(Socket socket) throws IOException{ + this.socket=socket; + + in=new Scanner(socket.getInputStream()); + out=new DataOutputStream(socket.getOutputStream()); + } + + + Command recieve(){ + Command c; + String s=in.nextLine(); + c=Command.callCommand(s); + return c; + } + + + void accept(){ + try { + out.writeUTF("Accpeted"); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + + void reject(){ + try { + out.writeUTF("Rejected"); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + + void disconnect(){ + try { + out.writeUTF("Disconnect"); + socket.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + + void userGreeting(String NickName){ + try { + out.writeUTF(new StringBuffer("ChatApp 2015").append(NickName).toString()); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + + void userBusy(String NickName){ + try { + out.writeUTF(new StringBuffer("ChatApp 2015").append(NickName).append("is busy").toString()); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + + void sendMessage(String message){ + try { + out.writeUTF(new StringBuffer("Message").append("\n").append(message).toString()); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + +} diff --git a/src/MessageCommand.java b/src/MessageCommand.java new file mode 100644 index 0000000..6ab1418 --- /dev/null +++ b/src/MessageCommand.java @@ -0,0 +1,22 @@ + +public class MessageCommand extends Command { + + + String message; + + + MessageCommand(CommandType type){ + super(type); + } + + + MessageCommand(CommandType type, String message){ + super(type); + this.message=message; + } + + + void setMessage(String message){ + this.message=message; + } +} diff --git a/src/NickCommand.java b/src/NickCommand.java new file mode 100644 index 0000000..cf71920 --- /dev/null +++ b/src/NickCommand.java @@ -0,0 +1,35 @@ + +public class NickCommand extends Command { + + String NickName; + boolean busy; + + + NickCommand(CommandType type){ + super(CommandType.NICK); + } + + + NickCommand(String s){ + super(CommandType.NICK); + if(s.contains("busy")){ + busy=true; + } + } + + + void setNickName(String NickName){ + this.NickName=NickName; + } + + + String getNickName(){ + return NickName; + } + + + boolean isBusy(){ + return busy; + } + +} From caca7df099e12dcd09e47b34b95d5c79fb5471ef Mon Sep 17 00:00:00 2001 From: Ivan Nizhnikovskiy Date: Sun, 29 Nov 2015 16:44:19 +0200 Subject: [PATCH 02/13] 222 222 --- src/Command.java | 8 ++++++-- src/MessageCommand.java | 8 ++++---- src/NickCommand.java | 5 ++++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/Command.java b/src/Command.java index a4584a7..b9fee95 100644 --- a/src/Command.java +++ b/src/Command.java @@ -1,3 +1,5 @@ +import java.util.Scanner; + public class Command { @@ -9,6 +11,8 @@ public class Command { public static Command callCommand(String s){ + String str=""; + Scanner in=new Scanner(System.in); if(s.contains("Accepted")) { return new Command(CommandType.ACCEPT); } @@ -19,10 +23,10 @@ public static Command callCommand(String s){ return new Command(CommandType.DISCONNECT); } if(s.contains("ChatApp 2015")) { - return new NickCommand(CommandType.NICK); + return new NickCommand(str); } if(s.contains("Message")) { - return new MessageCommand(CommandType.MESSAGE); + return new MessageCommand(in.nextLine().replace(":&:","\n")); } return null; } diff --git a/src/MessageCommand.java b/src/MessageCommand.java index 6ab1418..0e1b581 100644 --- a/src/MessageCommand.java +++ b/src/MessageCommand.java @@ -5,13 +5,13 @@ public class MessageCommand extends Command { String message; - MessageCommand(CommandType type){ - super(type); + MessageCommand(){ + super(CommandType.MESSAGE); } - MessageCommand(CommandType type, String message){ - super(type); + MessageCommand(String message){ + super(CommandType.MESSAGE); this.message=message; } diff --git a/src/NickCommand.java b/src/NickCommand.java index cf71920..a948215 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -5,7 +5,7 @@ public class NickCommand extends Command { boolean busy; - NickCommand(CommandType type){ + NickCommand(){ super(CommandType.NICK); } @@ -14,7 +14,10 @@ public class NickCommand extends Command { super(CommandType.NICK); if(s.contains("busy")){ busy=true; + s=s.replace(" busy", ""); } + s=s.replace("ChatApp 2015", ""); + NickName=s; } From a8da1910182e0097398b9ffa03499c566b380910 Mon Sep 17 00:00:00 2001 From: Ivan Nizhnikovskiy Date: Mon, 30 Nov 2015 00:44:17 +0200 Subject: [PATCH 03/13] 333 333 --- src/CallListener.java | 48 +++++++++++++++++++++++++++++++++++++++++++ src/Connection.java | 4 ++-- 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/CallListener.java diff --git a/src/CallListener.java b/src/CallListener.java new file mode 100644 index 0000000..c1f2011 --- /dev/null +++ b/src/CallListener.java @@ -0,0 +1,48 @@ +import java.io.IOException; +import java.net.ServerSocket; + + +public class CallListener { + + + ServerSocket ss; + String NickName; + boolean isBusy; + String ip; + Command c; + NickCommand nc; + + + CallListener(String NickName, boolean isBusy) throws IOException{ + ss=new ServerSocket(Connection.port); + this.NickName=NickName; + this.isBusy=isBusy; + } + + + Connection getConnection() throws IOException{ + Connection c=new Connection(ss.accept()); + if(!isBusy){ + c.chatApp2015(NickName); + this.c=c.recieve(); + + if(this.c.type==CommandType.NICK){ + nc=(NickCommand) this.c; + return c; + }else{ + return null; + } + + }else{ + c.userIsBusy(NickName); + c.disconnect(); + return null; + } + } + + public static void main(String[] args) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/Connection.java b/src/Connection.java index a26718a..9c4e00c 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -63,7 +63,7 @@ void disconnect(){ } - void userGreeting(String NickName){ + void chatApp2015(String NickName){ try { out.writeUTF(new StringBuffer("ChatApp 2015").append(NickName).toString()); } catch (IOException e) { @@ -73,7 +73,7 @@ void userGreeting(String NickName){ } - void userBusy(String NickName){ + void userIsBusy(String NickName){ try { out.writeUTF(new StringBuffer("ChatApp 2015").append(NickName).append("is busy").toString()); } catch (IOException e) { From 6f6302df0db8861ae80a551405f075a716b03c39 Mon Sep 17 00:00:00 2001 From: Ivan Nizhnikovskiy Date: Tue, 1 Dec 2015 19:49:51 +0200 Subject: [PATCH 04/13] 444 444 --- src/CallListener.java | 14 ++++++++------ src/CallListenerThread.java | 4 ++++ src/Caller.java | 20 +++++++++++++++++++- src/CommandListenerThread.java | 4 ++++ src/GUI.java | 4 ++++ 5 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 src/CallListenerThread.java create mode 100644 src/CommandListenerThread.java create mode 100644 src/GUI.java diff --git a/src/CallListener.java b/src/CallListener.java index c1f2011..8c89141 100644 --- a/src/CallListener.java +++ b/src/CallListener.java @@ -22,7 +22,13 @@ public class CallListener { Connection getConnection() throws IOException{ Connection c=new Connection(ss.accept()); - if(!isBusy){ + if(isBusy){ + + c.userIsBusy(NickName); + c.disconnect(); + return null; + + }else{ c.chatApp2015(NickName); this.c=c.recieve(); @@ -32,11 +38,7 @@ Connection getConnection() throws IOException{ }else{ return null; } - - }else{ - c.userIsBusy(NickName); - c.disconnect(); - return null; + /**/ } } diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java new file mode 100644 index 0000000..3d72644 --- /dev/null +++ b/src/CallListenerThread.java @@ -0,0 +1,4 @@ + +public class CallListenerThread { + +} diff --git a/src/Caller.java b/src/Caller.java index dca29a9..7575d97 100644 --- a/src/Caller.java +++ b/src/Caller.java @@ -1,7 +1,25 @@ +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; +import java.net.UnknownHostException; + public class Caller { + + InetAddress IP; String NickName; - String IP; + + Caller(String ip, String NickName) throws UnknownHostException{ + IP=InetAddress.getByName(ip); + this.NickName=NickName; + } + + + Connection call() throws IOException{ + Connection c=new Connection(new Socket(IP, Connection.port)); + c.chatApp2015(NickName); + return c; + } } diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java new file mode 100644 index 0000000..dff788b --- /dev/null +++ b/src/CommandListenerThread.java @@ -0,0 +1,4 @@ + +public class CommandListenerThread { + +} diff --git a/src/GUI.java b/src/GUI.java new file mode 100644 index 0000000..edc33d1 --- /dev/null +++ b/src/GUI.java @@ -0,0 +1,4 @@ + +public class GUI { + +} From aa79a6e69674d2ed1b188cc330bf5a445485fb38 Mon Sep 17 00:00:00 2001 From: Ivan Nizhnikovskiy Date: Tue, 1 Dec 2015 20:07:22 +0200 Subject: [PATCH 05/13] 555 555 --- src/CallListener.java | 17 +++++++---------- src/CallListenerThread.java | 10 +++++++++- src/CommandListenerThread.java | 10 +++++++++- src/Connection.java | 6 +++--- 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/CallListener.java b/src/CallListener.java index 8c89141..8053ce6 100644 --- a/src/CallListener.java +++ b/src/CallListener.java @@ -22,21 +22,18 @@ public class CallListener { Connection getConnection() throws IOException{ Connection c=new Connection(ss.accept()); - if(isBusy){ - + if(isBusy){ c.userIsBusy(NickName); c.disconnect(); - return null; - - }else{ + return null; + }else{ c.chatApp2015(NickName); - this.c=c.recieve(); - - if(this.c.type==CommandType.NICK){ + this.c=c.recieve(); + if(this.c.type==CommandType.NICK){ nc=(NickCommand) this.c; - return c; + return c; }else{ - return null; + return null; } /**/ } diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 3d72644..ef66ca3 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -1,4 +1,12 @@ +import java.util.Observable; -public class CallListenerThread { +public class CallListenerThread extends Observable implements Runnable { + + @Override + public void run() { + // TODO Auto-generated method stub + + } + } diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index dff788b..c1c34a0 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -1,4 +1,12 @@ +import java.util.Observable; -public class CommandListenerThread { + +public class CommandListenerThread extends Observable implements Runnable{ + + @Override + public void run() { + // TODO Auto-generated method stub + + } } diff --git a/src/Connection.java b/src/Connection.java index 9c4e00c..d51e8be 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -65,7 +65,7 @@ void disconnect(){ void chatApp2015(String NickName){ try { - out.writeUTF(new StringBuffer("ChatApp 2015").append(NickName).toString()); + out.writeUTF(new StringBuffer("ChatApp 2015 ").append(NickName).toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -75,7 +75,7 @@ void chatApp2015(String NickName){ void userIsBusy(String NickName){ try { - out.writeUTF(new StringBuffer("ChatApp 2015").append(NickName).append("is busy").toString()); + out.writeUTF(new StringBuffer("ChatApp 2015 ").append(NickName).append(" is busy").toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -85,7 +85,7 @@ void userIsBusy(String NickName){ void sendMessage(String message){ try { - out.writeUTF(new StringBuffer("Message").append("\n").append(message).toString()); + out.writeUTF(new StringBuffer("Message: ").append("\n").append(message).toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); From d7d95ea5ad62497299009c094b19cc09b8fd1c13 Mon Sep 17 00:00:00 2001 From: A6pAkal7a6pA Date: Tue, 1 Dec 2015 22:05:38 +0200 Subject: [PATCH 06/13] Revert "555" This reverts commit aa79a6e69674d2ed1b188cc330bf5a445485fb38. --- src/CallListener.java | 17 ++++++++++------- src/CallListenerThread.java | 10 +--------- src/CommandListenerThread.java | 10 +--------- src/Connection.java | 6 +++--- 4 files changed, 15 insertions(+), 28 deletions(-) diff --git a/src/CallListener.java b/src/CallListener.java index 8053ce6..8c89141 100644 --- a/src/CallListener.java +++ b/src/CallListener.java @@ -22,18 +22,21 @@ public class CallListener { Connection getConnection() throws IOException{ Connection c=new Connection(ss.accept()); - if(isBusy){ + if(isBusy){ + c.userIsBusy(NickName); c.disconnect(); - return null; - }else{ + return null; + + }else{ c.chatApp2015(NickName); - this.c=c.recieve(); - if(this.c.type==CommandType.NICK){ + this.c=c.recieve(); + + if(this.c.type==CommandType.NICK){ nc=(NickCommand) this.c; - return c; + return c; }else{ - return null; + return null; } /**/ } diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index ef66ca3..3d72644 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -1,12 +1,4 @@ -import java.util.Observable; +public class CallListenerThread { -public class CallListenerThread extends Observable implements Runnable { - - @Override - public void run() { - // TODO Auto-generated method stub - - } - } diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index c1c34a0..dff788b 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -1,12 +1,4 @@ -import java.util.Observable; - -public class CommandListenerThread extends Observable implements Runnable{ - - @Override - public void run() { - // TODO Auto-generated method stub - - } +public class CommandListenerThread { } diff --git a/src/Connection.java b/src/Connection.java index d51e8be..9c4e00c 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -65,7 +65,7 @@ void disconnect(){ void chatApp2015(String NickName){ try { - out.writeUTF(new StringBuffer("ChatApp 2015 ").append(NickName).toString()); + out.writeUTF(new StringBuffer("ChatApp 2015").append(NickName).toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -75,7 +75,7 @@ void chatApp2015(String NickName){ void userIsBusy(String NickName){ try { - out.writeUTF(new StringBuffer("ChatApp 2015 ").append(NickName).append(" is busy").toString()); + out.writeUTF(new StringBuffer("ChatApp 2015").append(NickName).append("is busy").toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -85,7 +85,7 @@ void userIsBusy(String NickName){ void sendMessage(String message){ try { - out.writeUTF(new StringBuffer("Message: ").append("\n").append(message).toString()); + out.writeUTF(new StringBuffer("Message").append("\n").append(message).toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); From 3f841d3273f175b5a6ee87d4fe150751c2a4b4ad Mon Sep 17 00:00:00 2001 From: A6pAkal7a6pA Date: Tue, 1 Dec 2015 22:43:54 +0200 Subject: [PATCH 07/13] 666 666 --- src/Interface.java | 23 +++++++++ src/LabelFrame.java | 111 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 src/Interface.java create mode 100644 src/LabelFrame.java diff --git a/src/Interface.java b/src/Interface.java new file mode 100644 index 0000000..0f3eec1 --- /dev/null +++ b/src/Interface.java @@ -0,0 +1,23 @@ +import javax.swing.*; +import java.awt.*; + +public class Interface { + + private static final Integer height = 400; + private static final Integer width = 600; + + public static void main(String[] args){ + + LabelFrame frame = new LabelFrame(); + + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(width, height); + frame.setResizable(false); + frame.setAlwaysOnTop(true); + frame.setLocationRelativeTo(null); + frame.setTitle("ChatAppMaxIvan"); + frame.setVisible(true); + + } + +} \ No newline at end of file diff --git a/src/LabelFrame.java b/src/LabelFrame.java new file mode 100644 index 0000000..66ff392 --- /dev/null +++ b/src/LabelFrame.java @@ -0,0 +1,111 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.border.*; + + +public class LabelFrame extends JFrame { + JPanel panel = new JPanel(); + + JButton button1; + JButton button2; + JButton button3; + JButton button4; + + JLabel lable1; + JLabel lable2; + JLabel lable3; + JLabel lable4; + JLabel lable5; + + JTextField textfieldlogin; + JTextField textfieldIP; + JTextField textfieldloclogin; + JTextField textfieldentermess; + + String name = "Чат"; + + Font font = new Font("Time New Romans", Font.BOLD, 13); + Color col = new Color(200, 200, 200); + LineBorder linebord = new LineBorder(Color.BLUE, 1); + + LabelFrame(){ + + JPanel panel = new JPanel(); + panel.setLayout(null); + panel.setBackground(Color.white); + + lable1 = new JLabel("Nickname:"); + lable1.setFont(font); + lable1.setForeground(Color.blue); + lable1.setBounds(15, 20, 100, 30); + + lable2 = new JLabel("IPaddress:"); + lable2.setFont(font); + lable2.setForeground(Color.blue); + lable2.setBounds(250, 20, 100, 30); + + lable4 = new JLabel("UserNickName:"); + lable4.setFont(font); + lable4.setForeground(Color.blue); + lable4.setBounds(220, 50, 120, 30); + + textfieldlogin = new JTextField(); + textfieldlogin.setBounds(90, 22, 115, 25); + textfieldlogin.setBorder(linebord); + + textfieldIP = new JTextField(); + textfieldIP.setBounds(320, 22, 115, 25); + textfieldIP.setBorder(linebord); + + textfieldloclogin = new JTextField(); + textfieldloclogin.setBounds(320, 50, 115, 25); + textfieldloclogin.setBorder(linebord); + + textfieldentermess = new JTextField(); + textfieldentermess.setBounds(45, 315, 400, 25); + textfieldentermess.setBorder(linebord); + + button3 = new JButton("Apply"); + button3.setFont(font); + button3.setBounds(90, 50, 115, 25); + button3.setForeground(Color.blue); + + lable3 = new JLabel(); + lable3.setBounds(45, 100, 505, 200); + lable3.setBorder(linebord); + + button2 = new JButton("Connect"); + button2.setBounds(435, 22, 115, 25); + button2.setFont(font); + button2.setForeground(Color.blue); + + button4 = new JButton("Disconnect"); + button4.setBounds(435, 50, 115, 25); + button4.setFont(font); + button4.setForeground(Color.blue); + + button1 = new JButton("Send"); + button1.setBounds(450, 315, 100, 25); + button1.setFont(font); + button1.setForeground(Color.blue); + + panel.add(lable1); + panel.add(lable2); + panel.add(lable3); + panel.add(lable4); + panel.add(textfieldlogin); + panel.add(textfieldIP); + panel.add(textfieldloclogin); + panel.add(textfieldentermess); + panel.add(button1); + panel.add(button2); + panel.add(button3); + panel.add(button4); + + this.add(panel); + + + } + +} \ No newline at end of file From a3d7544cf026c895a0a1b5f2d41eb63104090868 Mon Sep 17 00:00:00 2001 From: Ivan Nizhnikovskiy Date: Tue, 1 Dec 2015 23:10:46 +0200 Subject: [PATCH 08/13] 555 555 --- src/CallListenerThread.java | 10 +++++++++- src/CommandListenerThread.java | 10 +++++++++- src/GUI.java | 4 ---- 3 files changed, 18 insertions(+), 6 deletions(-) delete mode 100644 src/GUI.java diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 3d72644..ef66ca3 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -1,4 +1,12 @@ +import java.util.Observable; -public class CallListenerThread { +public class CallListenerThread extends Observable implements Runnable { + + @Override + public void run() { + // TODO Auto-generated method stub + + } + } diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index dff788b..c1c34a0 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -1,4 +1,12 @@ +import java.util.Observable; -public class CommandListenerThread { + +public class CommandListenerThread extends Observable implements Runnable{ + + @Override + public void run() { + // TODO Auto-generated method stub + + } } diff --git a/src/GUI.java b/src/GUI.java deleted file mode 100644 index edc33d1..0000000 --- a/src/GUI.java +++ /dev/null @@ -1,4 +0,0 @@ - -public class GUI { - -} From f8f02622129ab14d68d14b332eb3823a3884dd2e Mon Sep 17 00:00:00 2001 From: Ivan Nizhnikovskiy Date: Wed, 2 Dec 2015 21:50:25 +0200 Subject: [PATCH 09/13] 777 777 --- src/CallListener.java | 15 ++- src/CallListenerThread.java | 53 +++++++- src/Caller.java | 3 +- src/CommandListenerThread.java | 34 +++++- src/Interface.java | 4 +- src/LabelFrame.java | 214 +++++++++++++++++++++++++++------ src/MessageCommand.java | 4 + 7 files changed, 283 insertions(+), 44 deletions(-) diff --git a/src/CallListener.java b/src/CallListener.java index 8c89141..b93cc0c 100644 --- a/src/CallListener.java +++ b/src/CallListener.java @@ -15,6 +15,7 @@ public class CallListener { CallListener(String NickName, boolean isBusy) throws IOException{ ss=new ServerSocket(Connection.port); + this.NickName=NickName; this.isBusy=isBusy; } @@ -41,10 +42,18 @@ Connection getConnection() throws IOException{ /**/ } } + + + void setBusy(boolean isBusy){ + this.isBusy=isBusy; + } + + + String getNickName(){ + return NickName; + } + - public static void main(String[] args) { - // TODO Auto-generated method stub - } } diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index ef66ca3..592f94e 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -1,12 +1,63 @@ +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; import java.util.Observable; public class CallListenerThread extends Observable implements Runnable { + + CallListener cl; + Connection c; + String NickName; + volatile boolean b; + ServerSocket ss; + Socket s; + + @Override public void run() { - // TODO Auto-generated method stub + try{ + ss=new ServerSocket(Connection.port); + + while(true){ + + s=ss.accept(); + Connection c=new Connection(s); + + if(c!=null){ + CommandListenerThread clt=new CommandListenerThread(c); + clt.addObserver(LabelFrame.obj); + clt.start(); + c.chatApp2015(NickName); + } + + } + }catch (IOException e) { + e.printStackTrace();} + + } + + + + + + void start(){ + b=false; + Thread t=new Thread(this); + t.start(); + } + + + void stop(){ + b=true; } + + Connection getConnection(){ + return this.c; + } + + } diff --git a/src/Caller.java b/src/Caller.java index 7575d97..8894560 100644 --- a/src/Caller.java +++ b/src/Caller.java @@ -11,9 +11,8 @@ public class Caller { String NickName; - Caller(String ip, String NickName) throws UnknownHostException{ + Caller(String ip) throws UnknownHostException{ IP=InetAddress.getByName(ip); - this.NickName=NickName; } diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index c1c34a0..13e011a 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -3,10 +3,42 @@ public class CommandListenerThread extends Observable implements Runnable{ + Connection c; + volatile boolean b; + volatile Command com; + + public CommandListenerThread(Connection c) { + this.c=c; + } + @Override public void run() { // TODO Auto-generated method stub - + this.addObserver(LabelFrame.obj); + while(b!=true){ + synchronized(this){ + this.com=c.recieve(); + setChanged(); + this.notifyObservers(com); + + } + } + } + + public void start() { + this.b=false; + Thread t=new Thread(this); + t.start(); + } + + + public void stop(){ + b=true; + } + + + Connection getConnection(){ + return this.c; } } diff --git a/src/Interface.java b/src/Interface.java index 0f3eec1..ac1ce68 100644 --- a/src/Interface.java +++ b/src/Interface.java @@ -1,12 +1,14 @@ import javax.swing.*; + import java.awt.*; +import java.io.IOException; public class Interface { private static final Integer height = 400; private static final Integer width = 600; - public static void main(String[] args){ + public static void main(String[] args) throws IOException{ LabelFrame frame = new LabelFrame(); diff --git a/src/LabelFrame.java b/src/LabelFrame.java index 66ff392..0bcd589 100644 --- a/src/LabelFrame.java +++ b/src/LabelFrame.java @@ -1,35 +1,76 @@ import java.awt.*; import java.awt.event.*; +import java.io.IOException; +import java.net.UnknownHostException; +import java.text.SimpleDateFormat; +import java.util.Observable; +import java.util.Observer; + import javax.swing.*; import javax.swing.border.*; -public class LabelFrame extends JFrame { +public class LabelFrame extends JFrame implements Observer{ JPanel panel = new JPanel(); - + JTextArea textArea=new JTextArea(); + JTextArea textAreaMessage=new JTextArea(); JButton button1; JButton button2; - JButton button3; - JButton button4; + JButton button3; + JButton button4; JLabel lable1; JLabel lable2; JLabel lable3; - JLabel lable4; - JLabel lable5; + JLabel lable4; + JLabel lable5; JTextField textfieldlogin; JTextField textfieldIP; - JTextField textfieldloclogin; - JTextField textfieldentermess; + JTextField textfieldloclogin; + JTextField textfieldentermess; + + JScrollPane Scroll = new JScrollPane(textArea); + + - String name = "Чат"; + String name = "Чат"; Font font = new Font("Time New Romans", Font.BOLD, 13); Color col = new Color(200, 200, 200); LineBorder linebord = new LineBorder(Color.BLUE, 1); + + + String NickName; + String ip; + + CommandListenerThread comlt; + CallListenerThread clt; + + public static Observer obj; + + + public static void main(String aggs[]){ + SwingUtilities.invokeLater(new Runnable(){ - LabelFrame(){ + @Override + public void run() { + // TODO Auto-generated method stub + try { + new LabelFrame(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + }); + } + + + LabelFrame() throws IOException{ + + JPanel panel = new JPanel(); panel.setLayout(null); @@ -40,72 +81,173 @@ public class LabelFrame extends JFrame { lable1.setForeground(Color.blue); lable1.setBounds(15, 20, 100, 30); - lable2 = new JLabel("IPaddress:"); + lable2 = new JLabel("IPaddress:"); lable2.setFont(font); lable2.setForeground(Color.blue); lable2.setBounds(250, 20, 100, 30); - lable4 = new JLabel("UserNickName:"); + lable4 = new JLabel("UserNickName:"); lable4.setFont(font); lable4.setForeground(Color.blue); lable4.setBounds(220, 50, 120, 30); - textfieldlogin = new JTextField(); + textfieldlogin = new JTextField(); textfieldlogin.setBounds(90, 22, 115, 25); textfieldlogin.setBorder(linebord); - textfieldIP = new JTextField(); + textfieldIP = new JTextField(); textfieldIP.setBounds(320, 22, 115, 25); textfieldIP.setBorder(linebord); - textfieldloclogin = new JTextField(); + textfieldloclogin = new JTextField(); textfieldloclogin.setBounds(320, 50, 115, 25); textfieldloclogin.setBorder(linebord); - textfieldentermess = new JTextField(); + textfieldentermess = new JTextField(); textfieldentermess.setBounds(45, 315, 400, 25); textfieldentermess.setBorder(linebord); - button3 = new JButton("Apply"); + button3 = new JButton("Apply"); button3.setFont(font); button3.setBounds(90, 50, 115, 25); - button3.setForeground(Color.blue); + button3.setForeground(Color.blue); lable3 = new JLabel(); - lable3.setBounds(45, 100, 505, 200); + lable3.setBounds(45, 100, 505, 200); lable3.setBorder(linebord); button2 = new JButton("Connect"); - button2.setBounds(435, 22, 115, 25); + button2.setBounds(435, 22, 115, 25); button2.setFont(font); - button2.setForeground(Color.blue); + button2.setForeground(Color.blue); - button4 = new JButton("Disconnect"); - button4.setBounds(435, 50, 115, 25); + button4 = new JButton("Disconnect"); + button4.setBounds(435, 50, 115, 25); button4.setFont(font); - button4.setForeground(Color.blue); + button4.setForeground(Color.blue); button1 = new JButton("Send"); - button1.setBounds(450, 315, 100, 25); - button1.setFont(font); - button1.setForeground(Color.blue); + button1.setBounds(450, 315, 100, 25); + button1.setFont(font); + button1.setForeground(Color.blue); panel.add(lable1); - panel.add(lable2); - panel.add(lable3); - panel.add(lable4); + panel.add(lable2); + panel.add(lable3); + panel.add(lable4); panel.add(textfieldlogin); - panel.add(textfieldIP); - panel.add(textfieldloclogin); - panel.add(textfieldentermess); + panel.add(textfieldIP); + panel.add(textfieldloclogin); + panel.add(textfieldentermess); panel.add(button1); - panel.add(button2); - panel.add(button3); - panel.add(button4); + panel.add(button2); + panel.add(button3); + panel.add(button4); this.add(panel); + + + + + button1.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + String message=textfieldentermess.getText(); + long time=System.currentTimeMillis(); + String Stime = new SimpleDateFormat("HH:mm:ss").format(time); + textArea.append("\n" + " " + NickName + " " + Stime + ":" + "\n" + " " + message + "\n"); + textAreaMessage.setText(""); + if(comlt!=null){ + comlt.getConnection().sendMessage(message); + }else{ + clt.getConnection().sendMessage(message); + } + } + + }); + + + button2.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + ip=textfieldIP.getText(); + button2.setEnabled(false); + button4.setEnabled(true); + + try{ + Caller c=new Caller(NickName); + Connection con=c.call(); + if(con!=null){ + button1.setEnabled(true); + comlt=new CommandListenerThread(con); + comlt.addObserver(LabelFrame.this); + comlt.start(); + }else{ + textArea.append(" could not connect ip addr: " + ip +"\n"); + button2.setEnabled(true); + button4.setEnabled(false); + button3.setEnabled(true); + } + }catch(UnknownHostException e1){ + + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + }); + + + button3.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + NickName=textfieldloclogin.getText(); + button3.setEnabled(false); + } + + }); + clt=new CallListenerThread(); + clt.start(); + + + button4.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + button1.setEnabled(false); + button2.setEnabled(false); + button3.setEnabled(true); + } + + }); + } + @Override + public void update(Observable o, Object arg) { + // TODO Auto-generated method stub + button1.setEnabled(true); + button2.setEnabled(false); + NickCommand c; + MessageCommand mc; + + if(arg instanceof NickCommand){ + c=(NickCommand) arg; + //textArea.append(c.intoString()+"\n"); + } + if(arg instanceof MessageCommand){ + mc=(MessageCommand) arg; + textArea.append("Message: "+mc.getMessage()+"\n"); + } + } + } \ No newline at end of file diff --git a/src/MessageCommand.java b/src/MessageCommand.java index 0e1b581..0e9f322 100644 --- a/src/MessageCommand.java +++ b/src/MessageCommand.java @@ -19,4 +19,8 @@ public class MessageCommand extends Command { void setMessage(String message){ this.message=message; } + + String getMessage(){ + return message; + } } From 00a3baf93d8cc59fd55b909274af87bbca2c8e1e Mon Sep 17 00:00:00 2001 From: Ivan Nizhnikovskiy Date: Wed, 2 Dec 2015 21:53:11 +0200 Subject: [PATCH 10/13] 888 888 --- src/ServerConnection.java | 243 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 src/ServerConnection.java diff --git a/src/ServerConnection.java b/src/ServerConnection.java new file mode 100644 index 0000000..452c2ff --- /dev/null +++ b/src/ServerConnection.java @@ -0,0 +1,243 @@ +import java.sql.Connection; +import java.sql.*; +import java.util.*; + +public class ServerConnection { + + private String serverAddress; + private String localNick; + + private Connection con; + private Statement st; + + public ServerConnection(){ + + } + + public ServerConnection(String address){ + this(address, null); + } + + public ServerConnection(String address, String nick){ + if(nick!=null) + setLocalNick(nick); + if(address!=null){ + setServerAddress(address); + connect(); + }// if + } + + public void connect(){ + if(isConnected()) + return; + assert(serverAddress != null && !serverAddress.trim().isEmpty()); + try { + con = DriverManager.getConnection(serverAddress,"guest","guest"); + st = con.createStatement(); + } catch (SQLException e) { + // TODO throw real error + e.printStackTrace(); + }// catch + } + + public void disconnect(){ + if(st!=null){ + try { + st.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + st = null; + } + if(con!=null){ + try { + con.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + con=null; + }// if + } + + public boolean isConnected(){ + return st != null; + } + + public String getServerAddress() { + return serverAddress; + } + + public void setServerAddress(String serverAddress) { + if(serverAddress.equals(this.serverAddress)) + return; + boolean connected = isConnected(); + if(connected){ + goOffline(); + disconnect(); + } + this.serverAddress = serverAddress; + if(connected) + connect(); + } + + public String getLocalNick() { + return localNick; + } + + public void setLocalNick(String newNick) { + assert newNick!=null; + newNick = safe(newNick); + if(newNick.equals(this.localNick)) + return; + + boolean online = false; + if(isConnected()){ + online = isNickOnline(localNick); + if(online) + goOffline(); + } + + this.localNick = newNick; + if(online) + goOnline(); + } + + public void goOnline(){ + goOnline(28411); + } + + public void goOnline(int port){ + assert localNick != null; + assert isConnected(); + String q = "INSERT INTO user (nick, ip, online, port) values ('"+localNick+"', SUBSTRING_INDEX(USER(),'@',-1), 1,'"+port+"');"; + try { + st.executeUpdate(q); + } catch (SQLException e) { + boolean nick_collision=true; + try{ + if(getIpForNick(localNick)!=null){ // if nick collision + q = "UPDATE user set ip=SUBSTRING_INDEX(USER(),'@',-1), online=1, port="+port+" WHERE nick='"+localNick+"';"; + nick_collision = true; + } + else{ // if address collision + q = "UPDATE user set nick='"+localNick+"', online=1 WHERE ip=SUBSTRING_INDEX(USER(),'@',-1) AND port="+port+";"; + nick_collision = false; + } + st.executeUpdate(q); + }catch(SQLException e2){ + try { + if(nick_collision) + st.execute("DELETE FROM user WHERE ip=SUBSTRING_INDEX(USER(),'@',-1) AND port="+port+";"); + else + st.execute("DELETE FROM user WHERE nick='"+localNick+"';"); + st.execute(q); + } catch (SQLException e3) { + e2.printStackTrace(); + }// catch3 + }// catch2 + }// catch + }// goOnline + + public void goOffline(){ + assert localNick != null; + assert isConnected(); + try { + st.execute("INSERT INTO user (nick, ip, online) values ('"+localNick+"', SUBSTRING_INDEX(USER(),'@',-1), 0) ON DUPLICATE KEY UPDATE ip=VALUES(ip), online=VALUES(online);"); + } catch (SQLException e) { + e.printStackTrace(); + }// catch + } + + public String getIpForNick(String nick){ + assert isConnected(); + assert nick!=null; + nick = safe(nick); + ResultSet rs; + try { + rs = st.executeQuery("SELECT ip FROM user WHERE nick='"+nick+"'"); + if(!rs.next()) + return null; + return rs.getString(1); + } catch (SQLException e) { + e.printStackTrace(); + }// catch + return null; + } + + public int getPortForNick(String nick){ + assert isConnected(); + assert nick!=null; + nick = safe(nick); + ResultSet rs; + try { + rs = st.executeQuery("SELECT port FROM user WHERE nick='"+nick+"'"); + if(!rs.next()) + return 0; + return rs.getInt(1); + } catch (SQLException e) { + e.printStackTrace(); + }// catch + return 0; + } + + public boolean isNickOnline(String nick){ + if(nick==null) + return false; + + assert isConnected(); + nick = safe(nick); + ResultSet rs; + try { + rs = st.executeQuery("SELECT online FROM user WHERE nick='"+nick+"'"); + if(!rs.next()) + return false; + return rs.getBoolean(1); + } catch (SQLException e) { + e.printStackTrace(); + }// catch + return false; + } + + public String[] getAllNicks(){ + assert isConnected(); + ResultSet rs; + List res = new ArrayList(); + try { + rs = st.executeQuery("SELECT nick FROM user;"); + while(rs.next()){ + String nick = rs.getString(1); + res.add(nick); + }// while + } catch (SQLException e) { + e.printStackTrace(); + }// catch + return res.toArray(new String[0]); + } + + private static String safe(String s){ + return s.replaceAll("['\";]", "").replaceAll("\\s", ""); + } + + public static void main(String[] args) { + String nick1 = "latin&кириллица"; + String nick2 = "another"; + + ServerConnection c = new ServerConnection(); + c.setServerAddress("jdbc:mysql://files.litvinov.in.ua/chatapp_server?characterEncoding=utf-8&useUnicode=true"); + c.connect(); + assert c.isConnected(); + c.setLocalNick(nick1); + System.out.println("Before: " + c.isNickOnline(nick1)); + c.goOnline(); + System.out.println("After: " + c.isNickOnline(nick1)); + c.goOffline(); + System.out.println("After offline: " + c.isNickOnline(nick1)); + + System.out.println("Another nick: " + c.isNickOnline(nick2)); + System.out.println("My ip: " + c.getIpForNick(nick1)); + System.out.println("Other ip: " + c.getIpForNick(nick2)); + + System.out.println("My port: " + c.getPortForNick(nick1)); + System.out.println("Other port: " + c.getPortForNick(nick2)); + }// main +} From c49527a7b55e407a5a3e0f1810f0162e901e21f7 Mon Sep 17 00:00:00 2001 From: Ivan Nizhnikovskiy Date: Thu, 3 Dec 2015 00:12:58 +0200 Subject: [PATCH 11/13] 10 10 --- src/LabelFrame.java | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/LabelFrame.java b/src/LabelFrame.java index 0bcd589..1bcc2d5 100644 --- a/src/LabelFrame.java +++ b/src/LabelFrame.java @@ -11,13 +11,15 @@ public class LabelFrame extends JFrame implements Observer{ - JPanel panel = new JPanel(); + JPanel panel = new JPanel(); + JTextArea textArea=new JTextArea(); JTextArea textAreaMessage=new JTextArea(); - JButton button1; - JButton button2; - JButton button3; - JButton button4; + + JButton button1; //send + JButton button2; //connect + JButton button3; //apply + JButton button4; //disconnect JLabel lable1; JLabel lable2; @@ -47,7 +49,7 @@ public class LabelFrame extends JFrame implements Observer{ CommandListenerThread comlt; CallListenerThread clt; - public static Observer obj; + static Observer obj; public static void main(String aggs[]){ @@ -55,7 +57,6 @@ public static void main(String aggs[]){ @Override public void run() { - // TODO Auto-generated method stub try { new LabelFrame(); } catch (IOException e) { @@ -69,8 +70,10 @@ public void run() { LabelFrame() throws IOException{ + obj=this; - + clt=new CallListenerThread(); + clt.start(); JPanel panel = new JPanel(); panel.setLayout(null); @@ -143,12 +146,14 @@ public void run() { panel.add(button2); panel.add(button3); panel.add(button4); + panel.add(Scroll); this.add(panel); - - + Scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + panel.add(new JScrollPane(textArea)); + textArea.setEditable(false); button1.addActionListener(new ActionListener(){ @@ -213,8 +218,7 @@ public void actionPerformed(ActionEvent e) { } }); - clt=new CallListenerThread(); - clt.start(); + button4.addActionListener(new ActionListener(){ From 0cbb48f0f29dfa4f0e224a72e1d8f0e3f07e79b5 Mon Sep 17 00:00:00 2001 From: Ivan Nizhnikovskiy Date: Thu, 10 Dec 2015 02:26:21 +0200 Subject: [PATCH 12/13] 123 123 --- src/CallListener.java | 12 +- src/CallListenerThread.java | 4 +- src/Caller.java | 3 +- src/Command.java | 16 +- src/CommandListenerThread.java | 4 +- src/Connection.java | 3 +- src/Form.java | 371 +++++++++++++++++++++++++++++++++ src/Interface.java | 4 +- src/LabelFrame.java | 124 ++++++----- src/MessageCommand.java | 5 +- src/NickCommand.java | 5 +- 11 files changed, 477 insertions(+), 74 deletions(-) create mode 100644 src/Form.java diff --git a/src/CallListener.java b/src/CallListener.java index b93cc0c..22f85d2 100644 --- a/src/CallListener.java +++ b/src/CallListener.java @@ -1,5 +1,6 @@ import java.io.IOException; import java.net.ServerSocket; +import java.net.Socket; public class CallListener { @@ -13,19 +14,20 @@ public class CallListener { NickCommand nc; - CallListener(String NickName, boolean isBusy) throws IOException{ + /*CallListener(String NickName, boolean isBusy) throws IOException{ ss=new ServerSocket(Connection.port); this.NickName=NickName; this.isBusy=isBusy; - } + }*/ - Connection getConnection() throws IOException{ - Connection c=new Connection(ss.accept()); + Connection getConnection(Socket s) throws IOException{ + Connection c=new Connection(s); + c.chatApp2015(Connection.NickName); if(isBusy){ - c.userIsBusy(NickName); + c.userIsBusy(Connection.NickName); c.disconnect(); return null; diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 592f94e..9844c78 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -27,9 +27,9 @@ public void run() { if(c!=null){ CommandListenerThread clt=new CommandListenerThread(c); - clt.addObserver(LabelFrame.obj); + clt.addObserver(Form.obj); clt.start(); - c.chatApp2015(NickName); + c.chatApp2015(Connection.NickName); } } diff --git a/src/Caller.java b/src/Caller.java index 8894560..369a375 100644 --- a/src/Caller.java +++ b/src/Caller.java @@ -8,7 +8,6 @@ public class Caller { InetAddress IP; - String NickName; Caller(String ip) throws UnknownHostException{ @@ -18,7 +17,7 @@ public class Caller { Connection call() throws IOException{ Connection c=new Connection(new Socket(IP, Connection.port)); - c.chatApp2015(NickName); + c.chatApp2015(Connection.NickName); return c; } } diff --git a/src/Command.java b/src/Command.java index b9fee95..910eb40 100644 --- a/src/Command.java +++ b/src/Command.java @@ -4,15 +4,14 @@ public class Command { CommandType type; - Command(CommandType type){ this.type=type; } public static Command callCommand(String s){ - String str=""; - Scanner in=new Scanner(System.in); + + //Scanner in=new Scanner(System.in); if(s.contains("Accepted")) { return new Command(CommandType.ACCEPT); } @@ -23,13 +22,20 @@ public static Command callCommand(String s){ return new Command(CommandType.DISCONNECT); } if(s.contains("ChatApp 2015")) { - return new NickCommand(str); + return new NickCommand(CommandType.NICK, s.replaceAll("user ", "")); } if(s.contains("Message")) { - return new MessageCommand(in.nextLine().replace(":&:","\n")); + return new MessageCommand(CommandType.MESSAGE,s.replaceAll("Message", "")); } return null; } + public CommandType getType() { + return type; + } + + + + } diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index 13e011a..ddb4b70 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -8,13 +8,13 @@ public class CommandListenerThread extends Observable implements Runnable{ volatile Command com; public CommandListenerThread(Connection c) { - this.c=c; + this.c=c; } @Override public void run() { // TODO Auto-generated method stub - this.addObserver(LabelFrame.obj); + this.addObserver(Form.obj); while(b!=true){ synchronized(this){ this.com=c.recieve(); diff --git a/src/Connection.java b/src/Connection.java index 9c4e00c..828b1e6 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -10,6 +10,7 @@ class Connection { private Socket socket; public final static int port=28411; + public static String NickName; private Scanner in; private DataOutputStream out; @@ -65,7 +66,7 @@ void disconnect(){ void chatApp2015(String NickName){ try { - out.writeUTF(new StringBuffer("ChatApp 2015").append(NickName).toString()); + out.writeUTF(new StringBuffer("ChatApp 2015").append(Connection.NickName).toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/src/Form.java b/src/Form.java new file mode 100644 index 0000000..f252e94 --- /dev/null +++ b/src/Form.java @@ -0,0 +1,371 @@ +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.TextField; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.IOException; +import java.net.UnknownHostException; +import java.text.SimpleDateFormat; +import java.util.Observable; +import java.util.Observer; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.SwingUtilities; + + +public class Form implements Observer{ + + final JFrame frame = new JFrame("ChatApp2015"); + + + final JLabel TextNick = new JLabel(); + final JLabel TextIP = new JLabel(); + final JLabel forText3 = new JLabel(); + final JLabel forText4 = new JLabel(); + + + final JFrame frame1 = new JFrame(); //âñïëûâàþùåå îêíî + final JPanel mainPanel = new JPanel(); + final JPanel panel2 = new JPanel(); //íèê àéïè(?) + final JPanel nickPanel = new JPanel(); + final JPanel ipPanel = new JPanel(); + final JPanel inputPanel = new JPanel(); + final JPanel conPanel = new JPanel(); + final JPanel outputPanel = new JPanel(); + final JPanel panel8 = new JPanel(); //ñïëûâàþùàÿ ïàíåëü íå ðàáîòàåò + final JPanel ioPanel = new JPanel(); + final JPanel panel10 = new JPanel(); + + + final TextField textfieldloclogin = new TextField(35); + final TextField textfieldIP = new TextField(35); + final JTextArea textArea = new JTextArea(); + final JTextArea textfieldentermess = new JTextArea(); + + + final JButton disconnect = new JButton("Disconnect"); + final JButton accept = new JButton("Accept"); + final JButton reject = new JButton("Reject"); + final JButton apply = new JButton("Apply"); + final JButton connect = new JButton("Connect"); + final JButton send = new JButton("Send"); + + final JScrollPane areaScrollPane = new JScrollPane(textArea); + + + private CommandListenerThread comlt; + private CallListenerThread clt; + public static Observer obj; + + + public String NickName; + public String ip; + + + public static void main(String[] args) { + // TODO Auto-generated method stub + SwingUtilities.invokeLater(new Runnable(){ + public void run(){ + new Form(); + } + }); + } + + public Form(){ + obj=this; + + clt=new CallListenerThread(); + clt.start(); + + + Toolkit kit = Toolkit.getDefaultToolkit(); + Dimension screenSize = kit.getScreenSize(); + int screenWidth = screenSize.width; + int screenHeight = screenSize.height; + frame.setSize(400, 200); + + + mainPanel.setLayout(new BorderLayout()); + + + + //ââåðõíÿÿ ïàíåëü äëÿ ââîäà íèêà è ip äðóãà + panel2.setOpaque(false); + panel2.setMaximumSize(new Dimension(screenWidth, screenHeight)); + panel2.setPreferredSize(new Dimension(screenWidth /2 ,screenHeight / 7)); + panel2.setLayout(new BoxLayout(panel2, BoxLayout.X_AXIS)); + + + + //ïàíåëü äëÿ ñâîåãî íèêà + nickPanel.setOpaque(false); + nickPanel.add(Box.createVerticalStrut(15)); + nickPanel.setLayout(new BoxLayout(nickPanel, BoxLayout.Y_AXIS)); + + nickPanel.setPreferredSize(new Dimension(screenWidth/8,screenHeight / 8)); + nickPanel.setMaximumSize(new Dimension(screenWidth/4,screenHeight / 4)); + nickPanel.setMinimumSize(new Dimension(screenWidth/8,screenHeight / 8)); + nickPanel.setOpaque(false); + + TextNick.setText("My nickname: "); + nickPanel.add(TextNick); + textfieldloclogin.setMaximumSize(new Dimension(200 , 25)); + nickPanel.add(textfieldloclogin); + nickPanel.add(apply); + + + + + + //ïàíåëü äëÿ ip äðóãà + ipPanel.setOpaque(false); + ipPanel.add(Box.createVerticalStrut(15)); + ipPanel.setLayout(new BoxLayout(ipPanel, BoxLayout.Y_AXIS)); + + ipPanel.setPreferredSize(new Dimension(screenWidth/8,screenHeight / 8)); + ipPanel.setMaximumSize(new Dimension(screenWidth/4,screenHeight / 4)); + ipPanel.setMinimumSize(new Dimension(screenWidth/8,screenHeight / 8)); + ipPanel.setOpaque(false); + + TextIP.setText("IP for conection: "); + ipPanel.add(TextIP); + textfieldIP.setMaximumSize(new Dimension(200 , 25)); + ipPanel.add(textfieldIP, BorderLayout.SOUTH); + + + + + + //ïàíåëü ââîäà òåêñòà + inputPanel.setOpaque(false); + inputPanel.setMaximumSize(new Dimension(screenWidth /2, screenHeight / 25)); + inputPanel.setPreferredSize(new Dimension(screenWidth /2 ,screenHeight / 25)); + inputPanel.setMinimumSize(new Dimension(screenWidth/2,screenHeight / 25)); + + inputPanel.setLayout(new BoxLayout(inputPanel, BoxLayout.X_AXIS)); + + inputPanel.add(new JScrollPane(textfieldentermess)); + send.setEnabled(false); + inputPanel.add(send); + + + + + //ïàíåëü äëÿ âûâîäà ñîîáùåíèé íà ýêðàí + outputPanel.setOpaque(false); + outputPanel.setMaximumSize(new Dimension(screenWidth/2, 500)); + outputPanel.setPreferredSize(new Dimension(screenWidth/2 ,500)); + outputPanel.setMinimumSize(new Dimension(screenWidth/2,500)); + + outputPanel.setLayout(new BorderLayout()); + + areaScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + + outputPanel.add(new JScrollPane(textArea)); + textArea.setEditable(false); + + + + + //ïàíåëü äëÿ êíîïî÷åê + conPanel.setOpaque(false); + conPanel.setLayout(new BoxLayout(conPanel, BoxLayout.LINE_AXIS)); + disconnect.setEnabled(false); + conPanel.add(connect); + conPanel.add(disconnect); + + + + send.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + String message=textfieldentermess.getText(); + textArea.append("You: "+message+"\n"); + if(comlt!=null){ + comlt.getConnection().sendMessage(message); + }else{ + clt.getConnection().sendMessage(message); + } + } + + }); + + + connect.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + ip=textfieldIP.getText(); + textArea.append(ip +"\n"); + connect.setEnabled(false); + disconnect.setEnabled(true); + + try{ + Caller c=new Caller(ip); + Connection con=c.call(); + if(con!=null){ + send.setEnabled(true); + + comlt=new CommandListenerThread(con); + comlt.addObserver((Observer) Form.this);//!!! + comlt.start(); + }else{ + textArea.append("could not connect ip: " + ip +"\n"); + + connect.setEnabled(true); + disconnect.setEnabled(false); + apply.setEnabled(true); + } + }catch(UnknownHostException e1){ + + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + }); + + + apply.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + Connection.NickName=textfieldloclogin.getText(); + apply.setEnabled(false); + } + + }); + + + + disconnect.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + send.setEnabled(false); + connect.setEnabled(true); + apply.setEnabled(true); + } + + }); + + frame1.setLocationRelativeTo(null); + + panel8.add(accept); + panel8.add(reject); + + forText3.setText("User " + Connection.NickName + " tries to connect to you" + "\n"); + frame1.add(forText3); + + frame1.setSize(200, 100); + frame1.add(panel8, BorderLayout.SOUTH); + frame1.setAlwaysOnTop(true); + frame1.setVisible(false); //áóäåò òðó êîãäà çâîíÿò + + + accept.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + + //åñëè ñîåäèíèëñÿ + } + }); + + reject.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + + //åñëè îòêàçàëñÿ + } + }); + + + //äëÿ ââîäà è âûâîäà ñîîáùåíèé + ioPanel.setPreferredSize(new Dimension(screenWidth/2,600)); + ioPanel.setMaximumSize(new Dimension(screenWidth/2,600)); + ioPanel.setMinimumSize(new Dimension(screenWidth/2,600)); + + ioPanel.add(outputPanel, BorderLayout.CENTER); + ioPanel.add(inputPanel, BorderLayout.SOUTH); + frame.add(mainPanel); + mainPanel.add(ioPanel, BorderLayout.CENTER); + mainPanel.add(panel10, BorderLayout.EAST); + + mainPanel.add(panel2, BorderLayout.NORTH); + panel2.add(nickPanel); + panel2.add(ipPanel); + ipPanel.add(conPanel); + + + frame.pack(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setVisible(true); + + } + +public void update(Observable o, Object arg){ + send.setEnabled(true); + connect.setEnabled(false); + + + NickCommand nc; + MessageCommand mc; + Command com; + + if(arg instanceof NickCommand){ + nc=(NickCommand) arg; + nc.getNickName(); + textArea.append("Connected to: "+NickName+"\n"); + } + if(arg instanceof MessageCommand){ + mc=(MessageCommand) arg; + + long curTime = System.currentTimeMillis(); + String time = new SimpleDateFormat("HH:mm:ss").format(curTime); + + textArea.append("\n" +/* " " +NickName+*/ " " + time + ":" + "\n" + " " + mc.getMessage() + "\n"); + + } + if(arg instanceof Command){ + com =(Command) arg; + if (com.getType()==CommandType.ACCEPT){ + connect.setEnabled(false); + disconnect.setEnabled(true); + send.setEnabled(true); + apply.setEnabled(false); + } + + if (com.getType()==CommandType.REJECT){ + textArea.append("Declined"); + connect.setEnabled(true); + disconnect.setEnabled(false); + send.setEnabled(false); + apply.setEnabled(true); + } + + if (com.getType()==CommandType.DISCONNECT){ + textArea.append("Disconnected"); + connect.setEnabled(true); + disconnect.setEnabled(false); + send.setEnabled(false); + apply.setEnabled(true); + } + + + + + + } +} + +} diff --git a/src/Interface.java b/src/Interface.java index ac1ce68..20b4033 100644 --- a/src/Interface.java +++ b/src/Interface.java @@ -1,4 +1,4 @@ -import javax.swing.*; +/*import javax.swing.*; import java.awt.*; import java.io.IOException; @@ -22,4 +22,4 @@ public static void main(String[] args) throws IOException{ } -} \ No newline at end of file +}*/ \ No newline at end of file diff --git a/src/LabelFrame.java b/src/LabelFrame.java index 1bcc2d5..8d676d6 100644 --- a/src/LabelFrame.java +++ b/src/LabelFrame.java @@ -1,4 +1,4 @@ -import java.awt.*; +/*import java.awt.*; import java.awt.event.*; import java.io.IOException; import java.net.UnknownHostException; @@ -11,15 +11,30 @@ public class LabelFrame extends JFrame implements Observer{ + /** + * + */ +/* private static final long serialVersionUID = -4789525072053991912L; + + JFrame frame=new JFrame("ChatApp"); + JFrame upfr=new JFrame(); + JPanel panel = new JPanel(); JTextArea textArea=new JTextArea(); JTextArea textAreaMessage=new JTextArea(); - JButton button1; //send - JButton button2; //connect - JButton button3; //apply - JButton button4; //disconnect + JButton send; //send + JButton connect; //connect + JButton apply; //apply + JButton disconnect; //disconnect + + JPanel main=new JPanel(); + JPanel nickname_ip=new JPanel(); + JPanel nickname=new JPanel(); + + + JLabel lable1; JLabel lable2; @@ -33,9 +48,7 @@ public class LabelFrame extends JFrame implements Observer{ JTextField textfieldentermess; JScrollPane Scroll = new JScrollPane(textArea); - - - + String name = "Чат"; Font font = new Font("Time New Romans", Font.BOLD, 13); @@ -73,7 +86,14 @@ public void run() { obj=this; clt=new CallListenerThread(); - clt.start(); + clt.start(); + + Toolkit kit = Toolkit.getDefaultToolkit(); + Dimension screenSize = kit.getScreenSize(); + int screenWidth = screenSize.width; + int screenHeight = screenSize.height; + frame.setSize(screenWidth / 2, screenWidth / 2); + frame.setLocationRelativeTo(null); JPanel panel = new JPanel(); panel.setLayout(null); @@ -110,29 +130,29 @@ public void run() { textfieldentermess.setBounds(45, 315, 400, 25); textfieldentermess.setBorder(linebord); - button3 = new JButton("Apply"); - button3.setFont(font); - button3.setBounds(90, 50, 115, 25); - button3.setForeground(Color.blue); + apply = new JButton("Apply"); + apply.setFont(font); + apply.setBounds(90, 50, 115, 25); + apply.setForeground(Color.blue); lable3 = new JLabel(); lable3.setBounds(45, 100, 505, 200); lable3.setBorder(linebord); - button2 = new JButton("Connect"); - button2.setBounds(435, 22, 115, 25); - button2.setFont(font); - button2.setForeground(Color.blue); + connect = new JButton("Connect"); + connect.setBounds(435, 22, 115, 25); + connect.setFont(font); + connect.setForeground(Color.blue); - button4 = new JButton("Disconnect"); - button4.setBounds(435, 50, 115, 25); - button4.setFont(font); - button4.setForeground(Color.blue); + disconnect = new JButton("Disconnect"); + disconnect.setBounds(435, 50, 115, 25); + disconnect.setFont(font); + disconnect.setForeground(Color.blue); - button1 = new JButton("Send"); - button1.setBounds(450, 315, 100, 25); - button1.setFont(font); - button1.setForeground(Color.blue); + send = new JButton("Send"); + send.setBounds(450, 315, 100, 25); + send.setFont(font); + send.setForeground(Color.blue); panel.add(lable1); panel.add(lable2); @@ -142,20 +162,20 @@ public void run() { panel.add(textfieldIP); panel.add(textfieldloclogin); panel.add(textfieldentermess); - panel.add(button1); - panel.add(button2); - panel.add(button3); - panel.add(button4); + panel.add(send); + panel.add(connect); + panel.add(apply); + panel.add(disconnect); panel.add(Scroll); this.add(panel); - + //textAreaMessage.setText("aaaaa"); Scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); panel.add(new JScrollPane(textArea)); textArea.setEditable(false); - button1.addActionListener(new ActionListener(){ + send.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { @@ -163,8 +183,9 @@ public void actionPerformed(ActionEvent e) { String message=textfieldentermess.getText(); long time=System.currentTimeMillis(); String Stime = new SimpleDateFormat("HH:mm:ss").format(time); - textArea.append("\n" + " " + NickName + " " + Stime + ":" + "\n" + " " + message + "\n"); - textAreaMessage.setText(""); + String s="\n" + " " + NickName + " " + Stime + ":" + "\n" + " " + message + "\n"; + //textArea.append(); + textAreaMessage.setText(s); if(comlt!=null){ comlt.getConnection().sendMessage(message); }else{ @@ -175,28 +196,30 @@ public void actionPerformed(ActionEvent e) { }); - button2.addActionListener(new ActionListener(){ + connect.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub ip=textfieldIP.getText(); - button2.setEnabled(false); - button4.setEnabled(true); + connect.setEnabled(false); + disconnect.setEnabled(true); try{ Caller c=new Caller(NickName); Connection con=c.call(); if(con!=null){ - button1.setEnabled(true); + send.setEnabled(true); + comlt=new CommandListenerThread(con); comlt.addObserver(LabelFrame.this); comlt.start(); }else{ - textArea.append(" could not connect ip addr: " + ip +"\n"); - button2.setEnabled(true); - button4.setEnabled(false); - button3.setEnabled(true); + //textArea.append(" could not connect ip addr: " + ip +"\n"); + + connect.setEnabled(true); + disconnect.setEnabled(false); + apply.setEnabled(true); } }catch(UnknownHostException e1){ @@ -208,27 +231,27 @@ public void actionPerformed(ActionEvent e) { }); - button3.addActionListener(new ActionListener(){ + apply.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub NickName=textfieldloclogin.getText(); - button3.setEnabled(false); + apply.setEnabled(false); } }); - button4.addActionListener(new ActionListener(){ + disconnect.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub - button1.setEnabled(false); - button2.setEnabled(false); - button3.setEnabled(true); + send.setEnabled(false); + connect.setEnabled(false); + apply.setEnabled(true); } }); @@ -239,14 +262,13 @@ public void actionPerformed(ActionEvent e) { @Override public void update(Observable o, Object arg) { // TODO Auto-generated method stub - button1.setEnabled(true); - button2.setEnabled(false); + send.setEnabled(true); + connect.setEnabled(false); NickCommand c; MessageCommand mc; if(arg instanceof NickCommand){ c=(NickCommand) arg; - //textArea.append(c.intoString()+"\n"); } if(arg instanceof MessageCommand){ mc=(MessageCommand) arg; @@ -254,4 +276,4 @@ public void update(Observable o, Object arg) { } } -} \ No newline at end of file +}*/ \ No newline at end of file diff --git a/src/MessageCommand.java b/src/MessageCommand.java index 0e9f322..b984467 100644 --- a/src/MessageCommand.java +++ b/src/MessageCommand.java @@ -5,8 +5,9 @@ public class MessageCommand extends Command { String message; - MessageCommand(){ - super(CommandType.MESSAGE); + MessageCommand(CommandType type, String message){ + super(type); + this.setMessage(message); } diff --git a/src/NickCommand.java b/src/NickCommand.java index a948215..9d99eb5 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -5,8 +5,9 @@ public class NickCommand extends Command { boolean busy; - NickCommand(){ - super(CommandType.NICK); + NickCommand(CommandType type, String NickName){ + super(type); + this.NickName=NickName; } From 15ebf5111da73c79e3f7f41165b46a897ab7637c Mon Sep 17 00:00:00 2001 From: Ivan Nizhnikovskiy Date: Thu, 10 Dec 2015 10:51:55 +0200 Subject: [PATCH 13/13] 234 234 --- src/Connection.java | 4 +- src/Form.java | 156 ++++++++++++++++---------------------------- 2 files changed, 60 insertions(+), 100 deletions(-) diff --git a/src/Connection.java b/src/Connection.java index 828b1e6..d3d9493 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -74,14 +74,14 @@ void chatApp2015(String NickName){ } - void userIsBusy(String NickName){ + /*void userIsBusy(String NickName){ try { out.writeUTF(new StringBuffer("ChatApp 2015").append(NickName).append("is busy").toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } - } + }*/ void sendMessage(String message){ diff --git a/src/Form.java b/src/Form.java index f252e94..9c33882 100644 --- a/src/Form.java +++ b/src/Form.java @@ -22,42 +22,42 @@ public class Form implements Observer{ - final JFrame frame = new JFrame("ChatApp2015"); + JFrame frame = new JFrame("ChatApp2015"); - final JLabel TextNick = new JLabel(); - final JLabel TextIP = new JLabel(); - final JLabel forText3 = new JLabel(); - final JLabel forText4 = new JLabel(); + JLabel TextNick = new JLabel(); + JLabel TextIP = new JLabel(); + JLabel forText3 = new JLabel(); + JLabel forText4 = new JLabel(); - final JFrame frame1 = new JFrame(); //âñïëûâàþùåå îêíî - final JPanel mainPanel = new JPanel(); - final JPanel panel2 = new JPanel(); //íèê àéïè(?) - final JPanel nickPanel = new JPanel(); - final JPanel ipPanel = new JPanel(); - final JPanel inputPanel = new JPanel(); - final JPanel conPanel = new JPanel(); - final JPanel outputPanel = new JPanel(); - final JPanel panel8 = new JPanel(); //ñïëûâàþùàÿ ïàíåëü íå ðàáîòàåò - final JPanel ioPanel = new JPanel(); - final JPanel panel10 = new JPanel(); + JFrame frame1 = new JFrame(); //up wdw + JPanel mainPanel = new JPanel(); + JPanel nickip = new JPanel(); //íèê àéïè(?) + JPanel nickPanel = new JPanel(); + JPanel ipPanel = new JPanel(); + JPanel inputPanel = new JPanel(); + JPanel conPanel = new JPanel(); + JPanel outputPanel = new JPanel(); + JPanel panel1 = new JPanel(); + JPanel ioPanel = new JPanel(); + JPanel panel2 = new JPanel(); - final TextField textfieldloclogin = new TextField(35); - final TextField textfieldIP = new TextField(35); - final JTextArea textArea = new JTextArea(); - final JTextArea textfieldentermess = new JTextArea(); + TextField textfieldloclogin = new TextField(35); + TextField textfieldIP = new TextField(35); + JTextArea textArea = new JTextArea(); + JTextArea textfieldentermess = new JTextArea(); - final JButton disconnect = new JButton("Disconnect"); - final JButton accept = new JButton("Accept"); - final JButton reject = new JButton("Reject"); - final JButton apply = new JButton("Apply"); - final JButton connect = new JButton("Connect"); - final JButton send = new JButton("Send"); + JButton disconnect = new JButton("Disconnect"); + JButton accept = new JButton("Accept"); + JButton reject = new JButton("Reject"); + JButton apply = new JButton("Apply"); + JButton connect = new JButton("Connect"); + JButton send = new JButton("Send"); - final JScrollPane areaScrollPane = new JScrollPane(textArea); + JScrollPane areaScrollPane = new JScrollPane(textArea); private CommandListenerThread comlt; @@ -96,39 +96,32 @@ public Form(){ - //ââåðõíÿÿ ïàíåëü äëÿ ââîäà íèêà è ip äðóãà - panel2.setOpaque(false); - panel2.setMaximumSize(new Dimension(screenWidth, screenHeight)); - panel2.setPreferredSize(new Dimension(screenWidth /2 ,screenHeight / 7)); - panel2.setLayout(new BoxLayout(panel2, BoxLayout.X_AXIS)); + + nickip.setOpaque(false); + nickip.setMaximumSize(new Dimension(screenWidth, screenHeight)); + nickip.setPreferredSize(new Dimension(screenWidth /3 ,screenHeight / 8));//input + nickip.setLayout(new BoxLayout(nickip, BoxLayout.X_AXIS)); - //ïàíåëü äëÿ ñâîåãî íèêà nickPanel.setOpaque(false); nickPanel.add(Box.createVerticalStrut(15)); nickPanel.setLayout(new BoxLayout(nickPanel, BoxLayout.Y_AXIS)); - - nickPanel.setPreferredSize(new Dimension(screenWidth/8,screenHeight / 8)); + nickPanel.setPreferredSize(new Dimension(screenWidth/8,screenHeight / 8));//nickpanel nickPanel.setMaximumSize(new Dimension(screenWidth/4,screenHeight / 4)); nickPanel.setMinimumSize(new Dimension(screenWidth/8,screenHeight / 8)); nickPanel.setOpaque(false); - TextNick.setText("My nickname: "); + TextNick.setText("Nickname: "); nickPanel.add(TextNick); textfieldloclogin.setMaximumSize(new Dimension(200 , 25)); nickPanel.add(textfieldloclogin); nickPanel.add(apply); - - - - - //ïàíåëü äëÿ ip äðóãà + ipPanel.setOpaque(false); ipPanel.add(Box.createVerticalStrut(15)); ipPanel.setLayout(new BoxLayout(ipPanel, BoxLayout.Y_AXIS)); - ipPanel.setPreferredSize(new Dimension(screenWidth/8,screenHeight / 8)); ipPanel.setMaximumSize(new Dimension(screenWidth/4,screenHeight / 4)); ipPanel.setMinimumSize(new Dimension(screenWidth/8,screenHeight / 8)); @@ -140,10 +133,6 @@ public Form(){ ipPanel.add(textfieldIP, BorderLayout.SOUTH); - - - - //ïàíåëü ââîäà òåêñòà inputPanel.setOpaque(false); inputPanel.setMaximumSize(new Dimension(screenWidth /2, screenHeight / 25)); inputPanel.setPreferredSize(new Dimension(screenWidth /2 ,screenHeight / 25)); @@ -156,25 +145,16 @@ public Form(){ inputPanel.add(send); - - - //ïàíåëü äëÿ âûâîäà ñîîáùåíèé íà ýêðàí outputPanel.setOpaque(false); outputPanel.setMaximumSize(new Dimension(screenWidth/2, 500)); outputPanel.setPreferredSize(new Dimension(screenWidth/2 ,500)); outputPanel.setMinimumSize(new Dimension(screenWidth/2,500)); - - outputPanel.setLayout(new BorderLayout()); - + outputPanel.setLayout(new BorderLayout()); areaScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); - outputPanel.add(new JScrollPane(textArea)); textArea.setEditable(false); - - - //ïàíåëü äëÿ êíîïî÷åê conPanel.setOpaque(false); conPanel.setLayout(new BoxLayout(conPanel, BoxLayout.LINE_AXIS)); disconnect.setEnabled(false); @@ -189,7 +169,7 @@ public Form(){ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String message=textfieldentermess.getText(); - textArea.append("You: "+message+"\n"); + textArea.setText("You: "+message+"\n"); if(comlt!=null){ comlt.getConnection().sendMessage(message); }else{ @@ -206,10 +186,11 @@ public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub ip=textfieldIP.getText(); - textArea.append(ip +"\n"); + textArea.setText(ip +"\n"); connect.setEnabled(false); disconnect.setEnabled(true); + try{ Caller c=new Caller(ip); Connection con=c.call(); @@ -220,7 +201,7 @@ public void actionPerformed(ActionEvent e) { comlt.addObserver((Observer) Form.this);//!!! comlt.start(); }else{ - textArea.append("could not connect ip: " + ip +"\n"); + textArea.setText("Error!" +"\n"); connect.setEnabled(true); disconnect.setEnabled(false); @@ -261,36 +242,23 @@ public void actionPerformed(ActionEvent e) { }); - frame1.setLocationRelativeTo(null); + frame1.setLocationRelativeTo(null); - panel8.add(accept); - panel8.add(reject); - - forText3.setText("User " + Connection.NickName + " tries to connect to you" + "\n"); - frame1.add(forText3); + panel1.add(accept); + panel1.add(reject); - frame1.setSize(200, 100); - frame1.add(panel8, BorderLayout.SOUTH); - frame1.setAlwaysOnTop(true); - frame1.setVisible(false); //áóäåò òðó êîãäà çâîíÿò + forText3.setText("Somebody trying to get connection with you" + "\n"); + frame1.add(forText3); + frame1.setSize(200, 100); + frame1.add(panel1, BorderLayout.SOUTH); + frame1.setAlwaysOnTop(true); + frame1.setVisible(false); //(?) - accept.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - - //åñëè ñîåäèíèëñÿ - } - }); - reject.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - //åñëè îòêàçàëñÿ - } - }); - //äëÿ ââîäà è âûâîäà ñîîáùåíèé ioPanel.setPreferredSize(new Dimension(screenWidth/2,600)); ioPanel.setMaximumSize(new Dimension(screenWidth/2,600)); ioPanel.setMinimumSize(new Dimension(screenWidth/2,600)); @@ -299,11 +267,11 @@ public void actionPerformed(ActionEvent e) { ioPanel.add(inputPanel, BorderLayout.SOUTH); frame.add(mainPanel); mainPanel.add(ioPanel, BorderLayout.CENTER); - mainPanel.add(panel10, BorderLayout.EAST); + mainPanel.add(panel2, BorderLayout.EAST); - mainPanel.add(panel2, BorderLayout.NORTH); - panel2.add(nickPanel); - panel2.add(ipPanel); + mainPanel.add(nickip, BorderLayout.NORTH); + nickip.add(nickPanel); + nickip.add(ipPanel); ipPanel.add(conPanel); @@ -318,27 +286,19 @@ public void update(Observable o, Object arg){ connect.setEnabled(false); - NickCommand nc; MessageCommand mc; Command com; - if(arg instanceof NickCommand){ - nc=(NickCommand) arg; - nc.getNickName(); - textArea.append("Connected to: "+NickName+"\n"); - } + if(arg instanceof MessageCommand){ mc=(MessageCommand) arg; - long curTime = System.currentTimeMillis(); - String time = new SimpleDateFormat("HH:mm:ss").format(curTime); - - textArea.append("\n" +/* " " +NickName+*/ " " + time + ":" + "\n" + " " + mc.getMessage() + "\n"); - + textArea.setText(mc.getMessage()); } if(arg instanceof Command){ com =(Command) arg; if (com.getType()==CommandType.ACCEPT){ + textArea.setText("Accepted"); connect.setEnabled(false); disconnect.setEnabled(true); send.setEnabled(true); @@ -346,7 +306,7 @@ public void update(Observable o, Object arg){ } if (com.getType()==CommandType.REJECT){ - textArea.append("Declined"); + textArea.setText("Declined"); connect.setEnabled(true); disconnect.setEnabled(false); send.setEnabled(false); @@ -354,7 +314,7 @@ public void update(Observable o, Object arg){ } if (com.getType()==CommandType.DISCONNECT){ - textArea.append("Disconnected"); + textArea.setText("Disconnected"); connect.setEnabled(true); disconnect.setEnabled(false); send.setEnabled(false);