From 0fbff29f228200632b91f585f5315f0d673e58d9 Mon Sep 17 00:00:00 2001 From: Vadim Date: Wed, 4 Nov 2015 18:50:11 +0200 Subject: [PATCH 01/50] Connection(not quite finished) and othet stuff(does not work) --- src/ChatApp.form | 65 ++++++++++++++++++++++++++++++++++++ src/ChatApp.java | 15 +++++++++ src/Connection.java | 80 +++++++++++++++++++++++++++++++++++++++++++++ src/Main.java | 12 +++++++ 4 files changed, 172 insertions(+) create mode 100644 src/ChatApp.form create mode 100644 src/ChatApp.java create mode 100644 src/Connection.java create mode 100644 src/Main.java diff --git a/src/ChatApp.form b/src/ChatApp.form new file mode 100644 index 0000000..d417640 --- /dev/null +++ b/src/ChatApp.form @@ -0,0 +1,65 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/ChatApp.java b/src/ChatApp.java new file mode 100644 index 0000000..2894061 --- /dev/null +++ b/src/ChatApp.java @@ -0,0 +1,15 @@ +import javax.swing.*; + +public class ChatApp { + + private JTextArea textArea1; + private JPanel panel1; + private JButton button1; + private JButton button2; + private JTextField textField1; + private JList list1; + private JButton button3; + + public ChatApp() { + } +} diff --git a/src/Connection.java b/src/Connection.java new file mode 100644 index 0000000..541b608 --- /dev/null +++ b/src/Connection.java @@ -0,0 +1,80 @@ + +import java.net.*; +import java.io.*; +public class Connection{ + private ServerSocket ss; + private Socket s; + private final static int PORT = 28411; + private String distNick; + private String myNick; + + public Connection(String nick, String ip) throws IOException{ + ss = new ServerSocket(PORT); + s = ss.accept(); + } + + public void sendMessage(String message){ + try { + BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); + PrintWriter out = new PrintWriter(s.getOutputStream(),true); + String input; + while((input = in.readLine()) != null){ + out.write(message); + input = in.readLine(); + } + } catch (IOException e){ + e.printStackTrace(); + } + } + + public void Disconnect(){ + try { + s.close(); + }catch (IOException e){ + e.printStackTrace(); + } + } + + public void SetConnetion(Connection newUser) throws IOException{ + Connection user = new Connection("2","2"); + getNick(newUser); + sendNick(newUser); + } + + public String getDistNick() { + return distNick; + } + + public String getMyNick() { + return myNick; + } + + public void getNick(Connection user){ + this.distNick = user.getMyNick(); + } + + public void sendNick(Connection user){ + user.distNick = getMyNick(); + } + + public void HelloMessage(String s){ + sendMessage("ChatApp 2015 user " + this.getMyNick()); + } + + public void Busy(){ + if(s.isConnected()){ + sendMessage("ChatApp 2015 user " + this.getMyNick() + " busy"); + } + } + + public void accept(Connection newUser) throws IOException{ + SetConnetion(newUser); + HelloMessage(newUser.getDistNick()); + } + + public void decline(){ + Busy(); + Disconnect(); + } + +} diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..d548faf --- /dev/null +++ b/src/Main.java @@ -0,0 +1,12 @@ + +import java.net.*; +import java.io.*; +public class Main { + public static void main(String[] args) throws IOException { +// InetAddress a = InetAddress.getByName(args[0]); + ServerSocket ss = new ServerSocket(); + Socket s = new Socket("files.litvinov.in.ua",28411); + Connection c = new Connection(s); + + } +} From 57315517f3783d083d4ec9d02906174b6f834795 Mon Sep 17 00:00:00 2001 From: Vadim Date: Wed, 4 Nov 2015 19:50:39 +0200 Subject: [PATCH 02/50] Rewrote Connection, should work properly now. --- ChatApp.iml | 11 ++++++ src/Command.java | 5 +++ src/Connection.java | 84 ++++++++++++++++----------------------------- 3 files changed, 46 insertions(+), 54 deletions(-) create mode 100644 ChatApp.iml create mode 100644 src/Command.java diff --git a/ChatApp.iml b/ChatApp.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/ChatApp.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/Command.java b/src/Command.java new file mode 100644 index 0000000..48b8bff --- /dev/null +++ b/src/Command.java @@ -0,0 +1,5 @@ +/** + * Created by Вадим on 04.11.2015. + */ +public class Command { +} diff --git a/src/Connection.java b/src/Connection.java index 541b608..4260c61 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -2,79 +2,55 @@ import java.net.*; import java.io.*; public class Connection{ - private ServerSocket ss; private Socket s; private final static int PORT = 28411; - private String distNick; - private String myNick; + private final static String ENCODING = "UTF-8"; + private String nick; + private DataOutputStream out; + private DataInputStream in; public Connection(String nick, String ip) throws IOException{ - ss = new ServerSocket(PORT); - s = ss.accept(); + s = new Socket(ip,PORT); + out = new DataOutputStream(s.getOutputStream()); + in = new DataInputStream(s.getInputStream()); + this.nick = nick; } - public void sendMessage(String message){ - try { - BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); - PrintWriter out = new PrintWriter(s.getOutputStream(),true); - String input; - while((input = in.readLine()) != null){ - out.write(message); - input = in.readLine(); - } - } catch (IOException e){ - e.printStackTrace(); - } - } - - public void Disconnect(){ - try { - s.close(); - }catch (IOException e){ - e.printStackTrace(); - } + public void sendMessage(String message) throws IOException{ + out.writeUTF("Message\n" + message+"\n"); + out.flush(); } - public void SetConnetion(Connection newUser) throws IOException{ - Connection user = new Connection("2","2"); - getNick(newUser); - sendNick(newUser); + public void Disconnect() throws IOException{ + out.writeUTF("Disconnect\n"); + out.close(); + in.close(); + s.close(); } - public String getDistNick() { - return distNick; - } - - public String getMyNick() { - return myNick; - } - public void getNick(Connection user){ - this.distNick = user.getMyNick(); + public void sendNickHello(String nick) throws IOException { + out.writeUTF("ChatApp 2015 user " + nick+"\n"); + out.flush(); } - public void sendNick(Connection user){ - user.distNick = getMyNick(); - } - - public void HelloMessage(String s){ - sendMessage("ChatApp 2015 user " + this.getMyNick()); - } - - public void Busy(){ + public void sendNickBusy() throws IOException { if(s.isConnected()){ - sendMessage("ChatApp 2015 user " + this.getMyNick() + " busy"); + out.writeUTF("ChatApp 2015 user " + nick+" busy\n"); + out.flush(); } } public void accept(Connection newUser) throws IOException{ - SetConnetion(newUser); - HelloMessage(newUser.getDistNick()); + out.writeUTF("Accepted\n"); + out.flush(); } - public void decline(){ - Busy(); - Disconnect(); + public void reject() throws IOException { + out.writeUTF("Rejected"); + out.flush(); + } + public Command recieve(){ + return null; } - } From 043d74892088838f92be4d8c55e56e05e73b3d9e Mon Sep 17 00:00:00 2001 From: Vadim Date: Wed, 4 Nov 2015 20:39:21 +0200 Subject: [PATCH 03/50] Changed GUI, still should implement it in some way --- src/ChatApp.form | 162 +++++++++++++++++++++++++++++++++++++---------- src/ChatApp.java | 13 ++-- src/Main.java | 7 +- 3 files changed, 141 insertions(+), 41 deletions(-) diff --git a/src/ChatApp.form b/src/ChatApp.form index d417640..bdff5b0 100644 --- a/src/ChatApp.form +++ b/src/ChatApp.form @@ -1,60 +1,158 @@
- - + - + - + + + - - - - - - - - - + + - + - - + + + - - - - - - + - + + - + + - - - + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + diff --git a/src/ChatApp.java b/src/ChatApp.java index 2894061..5e39753 100644 --- a/src/ChatApp.java +++ b/src/ChatApp.java @@ -4,12 +4,17 @@ public class ChatApp { private JTextArea textArea1; private JPanel panel1; - private JButton button1; - private JButton button2; + private JButton sendButton; private JTextField textField1; - private JList list1; - private JButton button3; + private JTextField remoteAdressTextField; + private JTextField remoteLoginTextField; + private JButton disconnectButton; + private JTextField localLoginTextField; + private JButton applyButton; + private JButton connectButton; public ChatApp() { + + } } diff --git a/src/Main.java b/src/Main.java index d548faf..1bfbb28 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,12 +1,9 @@ +import javax.swing.*; import java.net.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { -// InetAddress a = InetAddress.getByName(args[0]); - ServerSocket ss = new ServerSocket(); - Socket s = new Socket("files.litvinov.in.ua",28411); - Connection c = new Connection(s); - + ChatApp chat = new ChatApp(); } } From 2f827feaaeca19ef095e61362b1ed8adbd0ff964 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Thu, 5 Nov 2015 18:21:10 +0200 Subject: [PATCH 04/50] =?UTF-8?q?=D1=8F=20=D0=BD=D0=B8=D1=87=D0=B5=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=BD=D0=B5=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Command.java | 5 ++--- src/MessageCommand.java | 4 ++++ src/NickCommand.java | 4 ++++ 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 src/MessageCommand.java create mode 100644 src/NickCommand.java diff --git a/src/Command.java b/src/Command.java index 48b8bff..2e89551 100644 --- a/src/Command.java +++ b/src/Command.java @@ -1,5 +1,4 @@ -/** - * Created by Вадим on 04.11.2015. - */ + public class Command { + } diff --git a/src/MessageCommand.java b/src/MessageCommand.java new file mode 100644 index 0000000..eef4d36 --- /dev/null +++ b/src/MessageCommand.java @@ -0,0 +1,4 @@ + +public class MessageCommand extends Command { + +} diff --git a/src/NickCommand.java b/src/NickCommand.java new file mode 100644 index 0000000..0bd366e --- /dev/null +++ b/src/NickCommand.java @@ -0,0 +1,4 @@ + +public class NickCommand extends Command{ + +} From dfb10463ad965bf66e9fde05e7f23f955e1e4539 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Thu, 5 Nov 2015 19:57:18 +0200 Subject: [PATCH 05/50] =?UTF-8?q?=D0=B5=D1=81=D0=BB=D0=B8=20=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BD=D1=8F=D0=BB,=20=D1=82=D0=BE=20=D0=B4=D0=BE=D0=BB?= =?UTF-8?q?=D0=B6=D0=BD=D0=BE=20=D0=B1=D1=8B=D1=82=D1=8C=20=D1=87=D1=82?= =?UTF-8?q?=D0=BE-=D1=82=D0=BE=20=D1=82=D0=B8=D0=BF=D0=BE=20=D1=82=D0=B0?= =?UTF-8?q?=D0=BA=D0=BE=D0=B3=D0=BE...=20=D1=8F=20=D0=B4=D0=BE=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BB=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20Command?= =?UTF-8?q?=20=D0=B8=20=D0=B5=D0=B3=D0=BE=20=D0=BD=D0=B0=D1=81=D0=BB=D0=B5?= =?UTF-8?q?=D0=B4=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Command.java | 4 +++- src/MessageCommand.java | 2 +- src/NickCommand.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Command.java b/src/Command.java index 2e89551..9169774 100644 --- a/src/Command.java +++ b/src/Command.java @@ -1,4 +1,6 @@ public class Command { - + private String disconnect = "Disconnect\n"; + private String accept = "Accepted\n"; + private String decline = "Decline\n"; } diff --git a/src/MessageCommand.java b/src/MessageCommand.java index eef4d36..35ff936 100644 --- a/src/MessageCommand.java +++ b/src/MessageCommand.java @@ -1,4 +1,4 @@ public class MessageCommand extends Command { - + private String message = "Message\n"; } diff --git a/src/NickCommand.java b/src/NickCommand.java index 0bd366e..4a32403 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -1,4 +1,5 @@ public class NickCommand extends Command{ - + private String nickname = "ChatApp 2015 user "; + private Boolean isBusy = true; } From cf4346ccd6cd8772f82e15dae11323cf46d13ed6 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Thu, 5 Nov 2015 20:12:54 +0200 Subject: [PATCH 06/50] =?UTF-8?q?=D0=B5=D1=81=D0=BB=D0=B8=20=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BD=D1=8F=D0=BB,=20=D1=82=D0=BE=20=D0=B4=D0=BE=D0=BB?= =?UTF-8?q?=D0=B6=D0=BD=D0=BE=20=D0=B1=D1=8B=D1=82=D1=8C=20=D1=87=D1=82?= =?UTF-8?q?=D0=BE-=D1=82=D0=BE=20=D1=82=D0=B8=D0=BF=D0=BE=20=D1=82=D0=B0?= =?UTF-8?q?=D0=BA=D0=BE=D0=B3=D0=BE...=20=D1=8F=20=D0=B4=D0=BE=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BB=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20Command?= =?UTF-8?q?=20=D0=B8=20=D0=B5=D0=B3=D0=BE=20=D0=BD=D0=B0=D1=81=D0=BB=D0=B5?= =?UTF-8?q?=D0=B4=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20+=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D0=BE=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Command.java | 8 +++++++- src/MessageCommand.java | 4 ++++ src/NickCommand.java | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Command.java b/src/Command.java index 9169774..186054a 100644 --- a/src/Command.java +++ b/src/Command.java @@ -2,5 +2,11 @@ public class Command { private String disconnect = "Disconnect\n"; private String accept = "Accepted\n"; - private String decline = "Decline\n"; + private String reject = "Reject\n"; + + public Command() { + this.accept = accept; + this.disconnect = disconnect; + this.reject = reject; + } } diff --git a/src/MessageCommand.java b/src/MessageCommand.java index 35ff936..84d4159 100644 --- a/src/MessageCommand.java +++ b/src/MessageCommand.java @@ -1,4 +1,8 @@ public class MessageCommand extends Command { private String message = "Message\n"; + + public MessageCommand() { + this.message = message; + } } diff --git a/src/NickCommand.java b/src/NickCommand.java index 4a32403..c06192d 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -2,4 +2,9 @@ public class NickCommand extends Command{ private String nickname = "ChatApp 2015 user "; private Boolean isBusy = true; + + public NickCommand() { + this.nickname = nickname; + this.isBusy = isBusy; + } } From a1e5aa4daef8def3155b325949c74cbf188074f1 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Tue, 10 Nov 2015 17:58:56 +0200 Subject: [PATCH 07/50] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20static=20=D0=B2=20=D0=BF=D0=BE=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MessageCommand.java | 2 +- src/NickCommand.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/MessageCommand.java b/src/MessageCommand.java index 84d4159..c7ea7c7 100644 --- a/src/MessageCommand.java +++ b/src/MessageCommand.java @@ -1,6 +1,6 @@ public class MessageCommand extends Command { - private String message = "Message\n"; + private static String message = "Message\n"; public MessageCommand() { this.message = message; diff --git a/src/NickCommand.java b/src/NickCommand.java index c06192d..0e245c7 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -1,7 +1,7 @@ public class NickCommand extends Command{ - private String nickname = "ChatApp 2015 user "; - private Boolean isBusy = true; + private static String nickname = "ChatApp 2015 user "; + private static Boolean isBusy = true; public NickCommand() { this.nickname = nickname; From d2dda1694f35ffed030114c44389a47b22fb9241 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Tue, 10 Nov 2015 18:10:17 +0200 Subject: [PATCH 08/50] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B5=D1=89=D0=B5=20final,=20=D0=BD=D0=BE=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B2=D1=82=D1=80=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D1=8E=D1=82=20=D0=BA=D0=BE=D0=B5=20=D1=87?= =?UTF-8?q?=D1=82=D0=BE,=20=D1=8D=D1=82=D0=BE=20=D0=B5=D1=89=D0=B5=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=BE=D0=BA=D0=BE=D0=BD=D1=87=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8?= =?UTF-8?q?=D1=8F,=20=D0=BD=D0=B0=20=D1=8D=D1=82=D0=BE=20=D1=81=D0=BC?= =?UTF-8?q?=D0=BE=D1=82=D1=80=D0=B5=D1=82=D1=8C=20=D0=BD=D0=B5=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B4=D0=BE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Command.java | 6 +++--- src/MessageCommand.java | 2 +- src/NickCommand.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Command.java b/src/Command.java index 186054a..7ccfdb4 100644 --- a/src/Command.java +++ b/src/Command.java @@ -1,8 +1,8 @@ public class Command { - private String disconnect = "Disconnect\n"; - private String accept = "Accepted\n"; - private String reject = "Reject\n"; + private static final String disconnect = "Disconnect\n"; + private static final String accept = "Accepted\n"; + private static final String reject = "Reject\n"; public Command() { this.accept = accept; diff --git a/src/MessageCommand.java b/src/MessageCommand.java index c7ea7c7..b950a36 100644 --- a/src/MessageCommand.java +++ b/src/MessageCommand.java @@ -1,6 +1,6 @@ public class MessageCommand extends Command { - private static String message = "Message\n"; + private static final String message = "Message\n"; public MessageCommand() { this.message = message; diff --git a/src/NickCommand.java b/src/NickCommand.java index 0e245c7..b457ada 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -1,6 +1,6 @@ public class NickCommand extends Command{ - private static String nickname = "ChatApp 2015 user "; + private static final String nickname = "ChatApp 2015 user "; private static Boolean isBusy = true; public NickCommand() { From 366729a45b44476391a5a6be03df3df6f491dfa4 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Thu, 12 Nov 2015 19:05:11 +0200 Subject: [PATCH 09/50] ... --- src/Command.java | 15 ++++++++++++--- src/MessageCommand.java | 10 +++++++++- src/NickCommand.java | 12 +++++++++--- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/Command.java b/src/Command.java index 7ccfdb4..0788a3e 100644 --- a/src/Command.java +++ b/src/Command.java @@ -5,8 +5,17 @@ public class Command { private static final String reject = "Reject\n"; public Command() { - this.accept = accept; - this.disconnect = disconnect; - this.reject = reject; + } + + public String getDisconnect() { + return disconnect; + } + + public String getAccept() { + return accept; + } + + public String getReject() { + return reject; } } diff --git a/src/MessageCommand.java b/src/MessageCommand.java index b950a36..bbbf199 100644 --- a/src/MessageCommand.java +++ b/src/MessageCommand.java @@ -1,8 +1,16 @@ public class MessageCommand extends Command { private static final String message = "Message\n"; + private static final String messageText = ""; public MessageCommand() { - this.message = message; + } + + public String getMessage() { + return message; + } + + public String getTextmessage() { + return messageText; } } diff --git a/src/NickCommand.java b/src/NickCommand.java index b457ada..586fb3e 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -1,10 +1,16 @@ public class NickCommand extends Command{ private static final String nickname = "ChatApp 2015 user "; - private static Boolean isBusy = true; + private static final Boolean isBusy = true; public NickCommand() { - this.nickname = nickname; - this.isBusy = isBusy; + } + + public String getNickname() { + return nickname; + } + + public Boolean getIsBusy() { + return isBusy; } } From dd9fec9f8695b60700cc7485cab4f10351fa4364 Mon Sep 17 00:00:00 2001 From: MariyaKlimenko Date: Thu, 12 Nov 2015 20:58:06 +0200 Subject: [PATCH 10/50] =?UTF-8?q?GUI=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8?= =?UTF-8?q?=D1=8F=201.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit пока так, потом переделаю немного) --- bin/ChatApp.form | 163 ++++++++++++++++++++++++++++++++++++++++++++ src/ChatWindow.java | 141 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 304 insertions(+) create mode 100644 bin/ChatApp.form create mode 100644 src/ChatWindow.java diff --git a/bin/ChatApp.form b/bin/ChatApp.form new file mode 100644 index 0000000..bdff5b0 --- /dev/null +++ b/bin/ChatApp.form @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ChatWindow.java b/src/ChatWindow.java new file mode 100644 index 0000000..6c42d3d --- /dev/null +++ b/src/ChatWindow.java @@ -0,0 +1,141 @@ +import javax.swing.*; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +public class ChatWindow extends JFrame { + + private ChatWindow() { + this.setSize(900, 900); + final JPanel panel = new JPanel(); + final JPanel field1 = new JPanel(); + final JPanel field2 = new JPanel(); + final JPanel field3 = new JPanel(); + final JPanel messArea = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + + + + final JLabel txt1 = new JLabel(" local login"); + final JLabel txt2 = new JLabel("remote login"); + final JLabel txt3 = new JLabel("remote addr"); + + final JTextField text1 = new JTextField(10); + final JTextField text2 = new JTextField(10); + final JTextField text3 = new JTextField(10); + final JTextArea textmess = new JTextArea(3, 72); + final JTextArea mess = new JTextArea(15, 75); + textmess.setLineWrap(true); + mess.setLineWrap(true); + + final JButton but1 = new JButton("Apply"); + final JButton but2 = new JButton("Connect"); + final JButton but3 = new JButton("Disconnect"); + final JButton sendb = new JButton("Send"); + + but1.setPreferredSize(new Dimension(100, 25)); + but2.setPreferredSize(new Dimension(100, 25)); + but3.setPreferredSize(new Dimension(100, 25)); + sendb.setPreferredSize(new Dimension(70, 50)); + + field1.add(txt1); + field2.add(txt2); + field3.add(txt3); + field1.add(text1); + field2.add(text2); + field3.add(text3); + field1.add(but1); + field2.add(but2); + field3.add(but3); + messArea.add(textmess); + messArea.add(sendb); + + panel.setBackground(new Color(220, 243, 246)); + field1.setBackground(new Color(220, 243, 246)); + field2.setBackground(new Color(220, 243, 246)); + field3.setBackground(new Color(220, 243, 246)); + messArea.setBackground(new Color(220, 243, 246)); + mess.setBackground(new Color(237, 245, 246)); + + but1.setBackground(new Color(116, 199, 209)); + but2.setBackground(new Color(116, 199, 209)); + but3.setBackground(new Color(116, 199, 209)); + sendb.setBackground(new Color(116, 199, 209)); + + class SendAction implements ActionListener{ + private String messege; + + SendAction(){ + } + + public void actionPerformed(ActionEvent event) { + messege = textmess.getText(); + mess.append(messege); + textmess.setText(""); + } + } + class ApplyAction implements ActionListener{ + private String text; + + ApplyAction(){ + } + + public void actionPerformed(ActionEvent event) { + text = txt1.getText(); + // Apply + } + } + class ConnectAction implements ActionListener{ + private String textc; + + ConnectAction(){ + } + + public void actionPerformed(ActionEvent event) { + textc = txt2.getText(); + // Connect + } + } + class DisconnectAction implements ActionListener{ + + DisconnectAction(){ + } + + public void actionPerformed(ActionEvent event) { + + // Disconnect + } + } + + + SendAction send = new SendAction(); + sendb.addActionListener(send); + ApplyAction applyact = new ApplyAction(); + but1.addActionListener(applyact); + ConnectAction connectact = new ConnectAction(); + but2.addActionListener(connectact); + DisconnectAction disconnectact = new DisconnectAction(); + but3.addActionListener(disconnectact); + + panel.add(field1); + panel.add(field2); + panel.add(field3); + panel.add(mess); + panel.add(messArea); + + this.add(panel); + this.setVisible(true); + this.setDefaultCloseOperation(EXIT_ON_CLOSE); + } + + public static void main(String[] args) { + ChatWindow a = new ChatWindow(); + a.setTitle("This is CHAT "); + + ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); + a.setIconImage(image.getImage()); + } +} From f81a2d539e58945627de37e6e50a725d40155ddd Mon Sep 17 00:00:00 2001 From: Nicholas Date: Thu, 12 Nov 2015 23:07:23 +0200 Subject: [PATCH 11/50] =?UTF-8?q?=D0=95=D1=89=D0=B5=20=D0=BE=D0=B4=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=84=D0=BE=D1=80=D0=BC=D0=BE=D1=87=D0=BA=D0=B0=20+?= =?UTF-8?q?=20=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ChatApp.form | 163 ------------------------------------ src/ChatApp.java | 20 ----- src/ChatWindow.java | 81 ++++++++---------- src/Connection.java | 7 +- src/IncomingConnection.java | 40 +++++++++ src/Main.java | 2 +- 6 files changed, 79 insertions(+), 234 deletions(-) delete mode 100644 src/ChatApp.form delete mode 100644 src/ChatApp.java create mode 100644 src/IncomingConnection.java diff --git a/src/ChatApp.form b/src/ChatApp.form deleted file mode 100644 index bdff5b0..0000000 --- a/src/ChatApp.form +++ /dev/null @@ -1,163 +0,0 @@ - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/src/ChatApp.java b/src/ChatApp.java deleted file mode 100644 index 5e39753..0000000 --- a/src/ChatApp.java +++ /dev/null @@ -1,20 +0,0 @@ -import javax.swing.*; - -public class ChatApp { - - private JTextArea textArea1; - private JPanel panel1; - private JButton sendButton; - private JTextField textField1; - private JTextField remoteAdressTextField; - private JTextField remoteLoginTextField; - private JButton disconnectButton; - private JTextField localLoginTextField; - private JButton applyButton; - private JButton connectButton; - - public ChatApp() { - - - } -} diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 6c42d3d..d5bf32a 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -1,23 +1,19 @@ import javax.swing.*; - import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; +import java.awt.event.*; public class ChatWindow extends JFrame { - private ChatWindow() { - this.setSize(900, 900); + public ChatWindow() { + this.setSize(900, 700); + this.setTitle("This is CHAT"); + final JPanel panel = new JPanel(); final JPanel field1 = new JPanel(); final JPanel field2 = new JPanel(); final JPanel field3 = new JPanel(); final JPanel messArea = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); - - final JLabel txt1 = new JLabel(" local login"); final JLabel txt2 = new JLabel("remote login"); @@ -26,9 +22,9 @@ private ChatWindow() { final JTextField text1 = new JTextField(10); final JTextField text2 = new JTextField(10); final JTextField text3 = new JTextField(10); - final JTextArea textmess = new JTextArea(3, 72); + final JTextArea textArea = new JTextArea(3, 72); final JTextArea mess = new JTextArea(15, 75); - textmess.setLineWrap(true); + textArea.setLineWrap(true); mess.setLineWrap(true); final JButton but1 = new JButton("Apply"); @@ -50,7 +46,7 @@ private ChatWindow() { field1.add(but1); field2.add(but2); field3.add(but3); - messArea.add(textmess); + messArea.add(textArea); messArea.add(sendb); panel.setBackground(new Color(220, 243, 246)); @@ -66,51 +62,45 @@ private ChatWindow() { sendb.setBackground(new Color(116, 199, 209)); class SendAction implements ActionListener{ - private String messege; - - SendAction(){ - } + private String message; public void actionPerformed(ActionEvent event) { - messege = textmess.getText(); - mess.append(messege); - textmess.setText(""); + message = textArea.getText(); + mess.append(message + "\n"); + textArea.setText(""); } } + class ApplyAction implements ActionListener{ - private String text; - - ApplyAction(){ - } - + private String apply; + public void actionPerformed(ActionEvent event) { - text = txt1.getText(); - // Apply + apply = txt1.getText(); + text1.setText(""); + } } + class ConnectAction implements ActionListener{ - private String textc; - - ConnectAction(){ - } - + private String connect; + public void actionPerformed(ActionEvent event) { - textc = txt2.getText(); - // Connect + connect = txt2.getText(); + text2.setText(""); + } } + class DisconnectAction implements ActionListener{ - - DisconnectAction(){ - } - + private String disconnect; + public void actionPerformed(ActionEvent event) { - - // Disconnect + disconnect = txt3.getText(); + text3.setText(""); + } } - - + SendAction send = new SendAction(); sendb.addActionListener(send); ApplyAction applyact = new ApplyAction(); @@ -127,15 +117,14 @@ public void actionPerformed(ActionEvent event) { panel.add(messArea); this.add(panel); - this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); + this.setVisible(true); } public static void main(String[] args) { - ChatWindow a = new ChatWindow(); - a.setTitle("This is CHAT "); + ChatWindow chatWindow = new ChatWindow(); - ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); - a.setIconImage(image.getImage()); + /*ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); + chatWindow.setIconImage(image.getImage());*/ } } diff --git a/src/Connection.java b/src/Connection.java index 4260c61..bba6ebb 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -17,7 +17,7 @@ public Connection(String nick, String ip) throws IOException{ } public void sendMessage(String message) throws IOException{ - out.writeUTF("Message\n" + message+"\n"); + out.writeUTF("Message\n" + message + "\n"); out.flush(); } @@ -28,15 +28,14 @@ public void Disconnect() throws IOException{ s.close(); } - public void sendNickHello(String nick) throws IOException { - out.writeUTF("ChatApp 2015 user " + nick+"\n"); + out.writeUTF("ChatApp 2015 user " + nick + "\n"); out.flush(); } public void sendNickBusy() throws IOException { if(s.isConnected()){ - out.writeUTF("ChatApp 2015 user " + nick+" busy\n"); + out.writeUTF("ChatApp 2015 user " + nick + " busy\n"); out.flush(); } } diff --git a/src/IncomingConnection.java b/src/IncomingConnection.java new file mode 100644 index 0000000..38a7da6 --- /dev/null +++ b/src/IncomingConnection.java @@ -0,0 +1,40 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class IncomingConnection extends JFrame{ + + public IncomingConnection() { + this.setSize(450,200); + this.setTitle("Incoming Connection"); + + final JPanel jPanel = new JPanel(); + jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.X_AXIS)); + + final JLabel jLabel = new JLabel("User XXX from IP Y.Y.Y.Y wants to chat"); + + final JButton jButton = new JButton("Accept"); + final JButton jButton1 = new JButton("Decline"); + + class ButtonListener implements ActionListener { + + public void actionPerformed(ActionEvent e) { + + } + } + + jPanel.add(jLabel); + jPanel.add(jButton); + jPanel.add(jButton1); + jLabel.setAlignmentX(CENTER_ALIGNMENT); + + this.add(jPanel); + this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + this.setVisible(true); + } + + public static void main(String[] args) { + IncomingConnection incomingConnection = new IncomingConnection(); + } +} diff --git a/src/Main.java b/src/Main.java index 1bfbb28..ca19c15 100644 --- a/src/Main.java +++ b/src/Main.java @@ -4,6 +4,6 @@ import java.io.*; public class Main { public static void main(String[] args) throws IOException { - ChatApp chat = new ChatApp(); + // ChatApp chat = new ChatApp(); } } From 9b687932d1857819e6e63c5e8ddbf1b18e16928c Mon Sep 17 00:00:00 2001 From: Jojorr Date: Sat, 14 Nov 2015 18:16:42 +0200 Subject: [PATCH 12/50] Wrote Caller, improved (IMO) connection --- src/Caller.java | 52 ++++++++++++++ src/ChatApp.form | 163 -------------------------------------------- src/ChatApp.java | 20 ------ src/Connection.java | 5 +- src/Main.java | 3 +- 5 files changed, 56 insertions(+), 187 deletions(-) create mode 100644 src/Caller.java delete mode 100644 src/ChatApp.form delete mode 100644 src/ChatApp.java diff --git a/src/Caller.java b/src/Caller.java new file mode 100644 index 0000000..ab15bee --- /dev/null +++ b/src/Caller.java @@ -0,0 +1,52 @@ +import java.net.*; +import java.io.*; +public class Caller { + private Socket s; + private String nick; + private int port; + private InetAddress IP; + private String distNick; + + public Caller(InetAddress ip, int port) throws IOException{ + this.IP = ip; + this.port = port; + s = new Socket(IP,port); + } + + public Connection call() throws IOException { + Connection c = new Connection(s,nick); + return c; + } + + public String getNick() { + return nick; + } + + public void setNick(String nick) { + this.nick = nick; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + + public InetAddress getIP() { + return IP; + } + + public void setIP(InetAddress IP) { + this.IP = IP; + } + + public String getDistNick() { + return distNick; + } + + public void setDistNick(String distNick) { + this.distNick = distNick; + } +} diff --git a/src/ChatApp.form b/src/ChatApp.form deleted file mode 100644 index bdff5b0..0000000 --- a/src/ChatApp.form +++ /dev/null @@ -1,163 +0,0 @@ - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/src/ChatApp.java b/src/ChatApp.java deleted file mode 100644 index 5e39753..0000000 --- a/src/ChatApp.java +++ /dev/null @@ -1,20 +0,0 @@ -import javax.swing.*; - -public class ChatApp { - - private JTextArea textArea1; - private JPanel panel1; - private JButton sendButton; - private JTextField textField1; - private JTextField remoteAdressTextField; - private JTextField remoteLoginTextField; - private JButton disconnectButton; - private JTextField localLoginTextField; - private JButton applyButton; - private JButton connectButton; - - public ChatApp() { - - - } -} diff --git a/src/Connection.java b/src/Connection.java index 4260c61..38462da 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -9,11 +9,12 @@ public class Connection{ private DataOutputStream out; private DataInputStream in; - public Connection(String nick, String ip) throws IOException{ - s = new Socket(ip,PORT); + public Connection(Socket s, String nick) throws IOException{ + this.s = s; out = new DataOutputStream(s.getOutputStream()); in = new DataInputStream(s.getInputStream()); this.nick = nick; + sendMessage(s.getInetAddress()+" connected. Type your message."); } public void sendMessage(String message) throws IOException{ diff --git a/src/Main.java b/src/Main.java index 1bfbb28..bcf3c2e 100644 --- a/src/Main.java +++ b/src/Main.java @@ -4,6 +4,5 @@ import java.io.*; public class Main { public static void main(String[] args) throws IOException { - ChatApp chat = new ChatApp(); - } +} } From ad2c1f1c1b09d272d8648f1e88c77d0d976d0428 Mon Sep 17 00:00:00 2001 From: MariyaKlimenko Date: Sun, 15 Nov 2015 21:02:35 +0200 Subject: [PATCH 13/50] =?UTF-8?q?GUI=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8?= =?UTF-8?q?=D1=8F=201.2Added=20more=20layouts,=20scroll=20bar=20and=20set?= =?UTF-8?q?=20sizes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Теперь при растягивании окошка всё тоже растягивается, и в главной части, где все сообщения выводятся, есть прокрутка) --- bin/ChatApp.form | 163 -------------------------------------------- src/ChatWindow.java | 116 ++++++++++++++++++++----------- 2 files changed, 75 insertions(+), 204 deletions(-) delete mode 100644 bin/ChatApp.form diff --git a/bin/ChatApp.form b/bin/ChatApp.form deleted file mode 100644 index bdff5b0..0000000 --- a/bin/ChatApp.form +++ /dev/null @@ -1,163 +0,0 @@ - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 6c42d3d..059f4df 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -9,38 +9,68 @@ public class ChatWindow extends JFrame { private ChatWindow() { - this.setSize(900, 900); + this.setSize(500, 600); final JPanel panel = new JPanel(); final JPanel field1 = new JPanel(); final JPanel field2 = new JPanel(); final JPanel field3 = new JPanel(); + final JPanel fieldmess = new JPanel(); + final JPanel field = new JPanel(); final JPanel messArea = new JPanel(); - panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); - - + final JButton but1 = new JButton("Apply"); + final JButton but2 = new JButton("Connect"); + final JButton but3 = new JButton("Disconnect"); + final JButton sendb = new JButton("Send"); - final JLabel txt1 = new JLabel(" local login"); + final JLabel txt1 = new JLabel("local login"); final JLabel txt2 = new JLabel("remote login"); final JLabel txt3 = new JLabel("remote addr"); - - final JTextField text1 = new JTextField(10); - final JTextField text2 = new JTextField(10); - final JTextField text3 = new JTextField(10); - final JTextArea textmess = new JTextArea(3, 72); + + final JTextField text1 = new JTextField(); + final JTextField text2 = new JTextField(); + final JTextField text3 = new JTextField(); + final JTextArea textmess = new JTextArea(); final JTextArea mess = new JTextArea(15, 75); + + messArea.setLayout(new BoxLayout(messArea, BoxLayout.X_AXIS)); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + field.setLayout(new BoxLayout(field, BoxLayout.X_AXIS)); + fieldmess.setLayout(new BoxLayout(fieldmess, BoxLayout.X_AXIS)); + field1.setLayout(new BoxLayout(field1, BoxLayout.Y_AXIS)); + field2.setLayout(new BoxLayout(field2, BoxLayout.Y_AXIS)); + field3.setLayout(new BoxLayout(field3, BoxLayout.Y_AXIS)); + textmess.setLineWrap(true); + mess.setCaretPosition(0); mess.setLineWrap(true); - - final JButton but1 = new JButton("Apply"); - final JButton but2 = new JButton("Connect"); - final JButton but3 = new JButton("Disconnect"); - final JButton sendb = new JButton("Send"); + + textmess.setMaximumSize(new Dimension(1500, 50)); + textmess.setPreferredSize(new Dimension(400, 50)); + text1.setMaximumSize(new Dimension(100, 25)); + text2.setMaximumSize(new Dimension(100, 25)); + text3.setMaximumSize(new Dimension(100, 25)); but1.setPreferredSize(new Dimension(100, 25)); + but1.setMaximumSize(new Dimension(100, 25)); but2.setPreferredSize(new Dimension(100, 25)); + but2.setMaximumSize(new Dimension(100, 25)); but3.setPreferredSize(new Dimension(100, 25)); + but3.setMaximumSize(new Dimension(100, 25)); + sendb.setMaximumSize(new Dimension(70, 50)); sendb.setPreferredSize(new Dimension(70, 50)); - + + but1.setAlignmentX(JComponent.CENTER_ALIGNMENT); + text1.setAlignmentX(JComponent.CENTER_ALIGNMENT); + txt1.setAlignmentX(JComponent.CENTER_ALIGNMENT); + + but2.setAlignmentX(JComponent.CENTER_ALIGNMENT); + text2.setAlignmentX(JComponent.CENTER_ALIGNMENT); + txt2.setAlignmentX(JComponent.CENTER_ALIGNMENT); + + but3.setAlignmentX(JComponent.CENTER_ALIGNMENT); + text3.setAlignmentX(JComponent.CENTER_ALIGNMENT); + txt3.setAlignmentX(JComponent.CENTER_ALIGNMENT); + field1.add(txt1); field2.add(txt2); field3.add(txt3); @@ -64,53 +94,55 @@ private ChatWindow() { but2.setBackground(new Color(116, 199, 209)); but3.setBackground(new Color(116, 199, 209)); sendb.setBackground(new Color(116, 199, 209)); - - class SendAction implements ActionListener{ + + final JScrollPane scrollPane = new JScrollPane(mess); + fieldmess.add(scrollPane); + scrollPane + .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + + class SendAction implements ActionListener { private String messege; - - SendAction(){ + + SendAction() { } - + public void actionPerformed(ActionEvent event) { messege = textmess.getText(); - mess.append(messege); + mess.append(messege + "\n"); textmess.setText(""); } } - class ApplyAction implements ActionListener{ + class ApplyAction implements ActionListener { private String text; - - ApplyAction(){ + + ApplyAction() { } - + public void actionPerformed(ActionEvent event) { text = txt1.getText(); // Apply } } - class ConnectAction implements ActionListener{ + class ConnectAction implements ActionListener { private String textc; - - ConnectAction(){ + + ConnectAction() { } - + public void actionPerformed(ActionEvent event) { textc = txt2.getText(); // Connect } } - class DisconnectAction implements ActionListener{ - - DisconnectAction(){ + class DisconnectAction implements ActionListener { + + DisconnectAction() { } - + public void actionPerformed(ActionEvent event) { - // Disconnect } } - - SendAction send = new SendAction(); sendb.addActionListener(send); ApplyAction applyact = new ApplyAction(); @@ -120,10 +152,12 @@ public void actionPerformed(ActionEvent event) { DisconnectAction disconnectact = new DisconnectAction(); but3.addActionListener(disconnectact); - panel.add(field1); - panel.add(field2); - panel.add(field3); - panel.add(mess); + fieldmess.add(mess); + field.add(field1); + field.add(field2); + field.add(field3); + panel.add(field); + panel.add(fieldmess); panel.add(messArea); this.add(panel); From a66be33be2bd285428b83e632bb001f3376e1cf4 Mon Sep 17 00:00:00 2001 From: MariyaKlimenko Date: Sun, 15 Nov 2015 21:14:47 +0200 Subject: [PATCH 14/50] =?UTF-8?q?GUI=201.2.2=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ChatWindow.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 059f4df..409bfcb 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -31,7 +31,7 @@ private ChatWindow() { final JTextField text3 = new JTextField(); final JTextArea textmess = new JTextArea(); final JTextArea mess = new JTextArea(15, 75); - + messArea.setLayout(new BoxLayout(messArea, BoxLayout.X_AXIS)); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); field.setLayout(new BoxLayout(field, BoxLayout.X_AXIS)); @@ -95,10 +95,7 @@ private ChatWindow() { but3.setBackground(new Color(116, 199, 209)); sendb.setBackground(new Color(116, 199, 209)); - final JScrollPane scrollPane = new JScrollPane(mess); - fieldmess.add(scrollPane); - scrollPane - .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + class SendAction implements ActionListener { private String messege; @@ -153,6 +150,11 @@ public void actionPerformed(ActionEvent event) { but3.addActionListener(disconnectact); fieldmess.add(mess); + final JScrollPane scrollPane = new JScrollPane(mess); + fieldmess.add(scrollPane); + + scrollPane + .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); field.add(field1); field.add(field2); field.add(field3); From b6fed15099d0707ee07db5991919ddf46f64ee51 Mon Sep 17 00:00:00 2001 From: Jojorr Date: Tue, 17 Nov 2015 22:53:18 +0200 Subject: [PATCH 15/50] Wrote CallListener --- src/CallListener.java | 59 +++++++++++++++++++++++++++++++++++++++++++ src/ChatWindow.java | 3 +-- src/Connection.java | 2 +- 3 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 src/CallListener.java diff --git a/src/CallListener.java b/src/CallListener.java new file mode 100644 index 0000000..4cc8667 --- /dev/null +++ b/src/CallListener.java @@ -0,0 +1,59 @@ +import java.io.*; +import java.net.*; + +public class CallListener { + private String localNick = "default"; + private Boolean isBusy; + private static final int localPort = 28411; + private final static String IP = "localhost"; + private SocketAddress remoteAddress; + private SocketAddress localAddress; + private ServerSocket serverSocket; + + + public CallListener(String userName, String remoteAdress){ + localNick = userName; + remoteAddress = new InetSocketAddress(IP, localPort); + } + + public Connection getConnection() throws IOException{ + if (StatusBusy()){ + return null; + }else{ + serverSocket = new ServerSocket(localPort); + return new Connection(serverSocket.accept(), localNick); + } + } + + public SocketAddress getListenAddress() throws IOException{ + return serverSocket.getLocalSocketAddress(); + } + + public String getLocalNick() { + return localNick; + } + + public SocketAddress getLocalAddress(){ + return localAddress; + } + + public Boolean StatusBusy(){ + return isBusy; + } + + public void setStatus(Boolean statusBusy){ + this.isBusy = statusBusy; + } + + public SocketAddress getRemoteAddress(){ + return remoteAddress; + } + + public void setRemoteAddress(SocketAddress remoteAddress){ + this.remoteAddress = remoteAddress; + } + + public int getLocalPort(){ + return localPort; + } +} \ No newline at end of file diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 409bfcb..5814d2e 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -1,10 +1,10 @@ import javax.swing.*; - import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.net.*; public class ChatWindow extends JFrame { @@ -128,7 +128,6 @@ class ConnectAction implements ActionListener { public void actionPerformed(ActionEvent event) { textc = txt2.getText(); - // Connect } } class DisconnectAction implements ActionListener { diff --git a/src/Connection.java b/src/Connection.java index 38462da..7daef4e 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -1,6 +1,6 @@ - import java.net.*; import java.io.*; + public class Connection{ private Socket s; private final static int PORT = 28411; From 49394a7479839eafc0ef48549d610ff64b232980 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Wed, 18 Nov 2015 20:03:07 +0200 Subject: [PATCH 16/50] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20Command?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Command.java | 19 +++---------------- src/CommandListenerThread.java | 2 +- src/CommandTypes.java | 8 ++++++++ src/MessageCommand.java | 15 ++++++--------- src/NickCommand.java | 15 ++++++--------- 5 files changed, 24 insertions(+), 35 deletions(-) create mode 100644 src/CommandTypes.java diff --git a/src/Command.java b/src/Command.java index 0788a3e..4e01b9c 100644 --- a/src/Command.java +++ b/src/Command.java @@ -1,21 +1,8 @@ public class Command { - private static final String disconnect = "Disconnect\n"; - private static final String accept = "Accepted\n"; - private static final String reject = "Reject\n"; + protected CommandTypes commandTypes; - public Command() { - } - - public String getDisconnect() { - return disconnect; - } - - public String getAccept() { - return accept; - } - - public String getReject() { - return reject; + public Command(CommandTypes ctypes) { + this.commandTypes = ctypes; } } diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index 58a0776..5680f9b 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -1,6 +1,6 @@ import java.util.*; -public class CommandListenerThread extends Thread implements { +public class CommandListenerThread extends Thread { private Connection connection; private Command lastCommand; private List observers; diff --git a/src/CommandTypes.java b/src/CommandTypes.java new file mode 100644 index 0000000..182cd83 --- /dev/null +++ b/src/CommandTypes.java @@ -0,0 +1,8 @@ + +public enum CommandTypes { + disconnect, + accept, + reject, + nickname, + message, +} diff --git a/src/MessageCommand.java b/src/MessageCommand.java index bbbf199..a13be83 100644 --- a/src/MessageCommand.java +++ b/src/MessageCommand.java @@ -1,16 +1,13 @@ public class MessageCommand extends Command { - private static final String message = "Message\n"; - private static final String messageText = ""; + protected String messagetext; - public MessageCommand() { + public MessageCommand(CommandTypes type) { + super(type); } - public String getMessage() { - return message; - } - - public String getTextmessage() { - return messageText; + public MessageCommand(CommandTypes type, String messagetext) { + super(type); + this.messagetext = messagetext; } } diff --git a/src/NickCommand.java b/src/NickCommand.java index 586fb3e..a074cf4 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -1,16 +1,13 @@ public class NickCommand extends Command{ - private static final String nickname = "ChatApp 2015 user "; - private static final Boolean isBusy = true; + protected String nick; - public NickCommand() { + public NickCommand(CommandTypes ctp) { + super(ctp); } - public String getNickname() { - return nickname; - } - - public Boolean getIsBusy() { - return isBusy; + public NickCommand(CommandTypes ctp, String nick) { + super(ctp); + this.nick = nick; } } From dabb9825b4178451ee41954c23ce2ac1ef8d9539 Mon Sep 17 00:00:00 2001 From: MariyaKlimenko Date: Wed, 18 Nov 2015 20:15:25 +0200 Subject: [PATCH 17/50] =?UTF-8?q?=D0=B2=D0=BE=D1=82=20=D0=BF=D1=83=D1=81?= =?UTF-8?q?=D1=82=D1=8B=D0=B5=20=D1=84=D0=BE=D1=80=D0=BC=D0=BE=D1=87=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ChatWindow.java | 29 +++++++----- src/IncomingConnection.java | 89 +++++++++++++++++++++++++------------ 2 files changed, 78 insertions(+), 40 deletions(-) diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 5814d2e..e8b798a 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -1,4 +1,5 @@ import javax.swing.*; + import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -8,8 +9,12 @@ public class ChatWindow extends JFrame { - private ChatWindow() { + public ChatWindow() { this.setSize(500, 600); + this.setTitle("This is CHAT "); + ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); + this.setIconImage(image.getImage()); + final JPanel panel = new JPanel(); final JPanel field1 = new JPanel(); final JPanel field2 = new JPanel(); @@ -30,8 +35,8 @@ private ChatWindow() { final JTextField text2 = new JTextField(); final JTextField text3 = new JTextField(); final JTextArea textmess = new JTextArea(); - final JTextArea mess = new JTextArea(15, 75); - + final JTextArea mess = new JTextArea(); + messArea.setLayout(new BoxLayout(messArea, BoxLayout.X_AXIS)); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); field.setLayout(new BoxLayout(field, BoxLayout.X_AXIS)); @@ -45,7 +50,7 @@ private ChatWindow() { mess.setLineWrap(true); textmess.setMaximumSize(new Dimension(1500, 50)); - textmess.setPreferredSize(new Dimension(400, 50)); + textmess.setPreferredSize(new Dimension(70, 50)); text1.setMaximumSize(new Dimension(100, 25)); text2.setMaximumSize(new Dimension(100, 25)); text3.setMaximumSize(new Dimension(100, 25)); @@ -95,8 +100,6 @@ private ChatWindow() { but3.setBackground(new Color(116, 199, 209)); sendb.setBackground(new Color(116, 199, 209)); - - class SendAction implements ActionListener { private String messege; @@ -107,6 +110,7 @@ public void actionPerformed(ActionEvent event) { messege = textmess.getText(); mess.append(messege + "\n"); textmess.setText(""); + //send } } class ApplyAction implements ActionListener { @@ -117,7 +121,9 @@ class ApplyAction implements ActionListener { public void actionPerformed(ActionEvent event) { text = txt1.getText(); - // Apply + //apply + + } } class ConnectAction implements ActionListener { @@ -128,6 +134,7 @@ class ConnectAction implements ActionListener { public void actionPerformed(ActionEvent event) { textc = txt2.getText(); + //connect } } class DisconnectAction implements ActionListener { @@ -151,7 +158,7 @@ public void actionPerformed(ActionEvent event) { fieldmess.add(mess); final JScrollPane scrollPane = new JScrollPane(mess); fieldmess.add(scrollPane); - + scrollPane .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); field.add(field1); @@ -163,14 +170,12 @@ public void actionPerformed(ActionEvent event) { this.add(panel); this.setVisible(true); + this.setLocationRelativeTo(null); this.setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] args) { ChatWindow a = new ChatWindow(); - a.setTitle("This is CHAT "); - - ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); - a.setIconImage(image.getImage()); + } } diff --git a/src/IncomingConnection.java b/src/IncomingConnection.java index 38a7da6..3f97bb4 100644 --- a/src/IncomingConnection.java +++ b/src/IncomingConnection.java @@ -1,40 +1,73 @@ import javax.swing.*; + import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -public class IncomingConnection extends JFrame{ - - public IncomingConnection() { - this.setSize(450,200); - this.setTitle("Incoming Connection"); - - final JPanel jPanel = new JPanel(); - jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.X_AXIS)); - - final JLabel jLabel = new JLabel("User XXX from IP Y.Y.Y.Y wants to chat"); - - final JButton jButton = new JButton("Accept"); - final JButton jButton1 = new JButton("Decline"); +public class IncomingConnection extends JFrame { - class ButtonListener implements ActionListener { + public IncomingConnection() { + this.setSize(380, 150); + this.setTitle("Incoming Connection"); + ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); + this.setIconImage(image.getImage()); + final int x = 0; + final JPanel jPanel = new JPanel(); + jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS)); + final JPanel pan1 = new JPanel(); + final JPanel pan2 = new JPanel(); + final JLabel jLabel = new JLabel( + "User XXX from IP Y.Y.Y.Y wants to chat"); - public void actionPerformed(ActionEvent e) { + final JButton jButton = new JButton("Accept"); + final JButton jButton1 = new JButton("Decline"); - } - } + + + jButton.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e){ + // + - jPanel.add(jLabel); - jPanel.add(jButton); - jPanel.add(jButton1); - jLabel.setAlignmentX(CENTER_ALIGNMENT); + } + }); + + + jButton1.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e){ + // + - this.add(jPanel); - this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - this.setVisible(true); - } + } + }); + + jButton1.setPreferredSize(new Dimension(100, 25)); + jButton.setPreferredSize(new Dimension(100, 25)); + + jButton1.setBackground(new Color(116, 199, 209)); + jButton.setBackground(new Color(116, 199, 209)); + pan1.setBackground(new Color(220, 243, 246)); + pan2.setBackground(new Color(220, 243, 246)); + pan1.add(jLabel); + pan2.add(jButton); + pan2.add(jButton1); - public static void main(String[] args) { - IncomingConnection incomingConnection = new IncomingConnection(); - } + jPanel.add(pan1); + jPanel.add(pan2); + + this.add(jPanel); + this.setLocationRelativeTo(null); + this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + this.setVisible(true); + + } + + public static void main(String[] args) { + IncomingConnection incomingConnection = new IncomingConnection(); + + } } From 934fd4d19ed789eef646ecaf2c9fc459dfcebdf9 Mon Sep 17 00:00:00 2001 From: Jojorr Date: Wed, 18 Nov 2015 20:19:56 +0200 Subject: [PATCH 18/50] Finished Recieve --- src/CallListenerThread.java | 4 ++-- src/Connection.java | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index b8537e7..4aa3d8e 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -21,7 +21,7 @@ public void removeConnectionObserver(Observer o) { } public void run() { - try { + /* try { while (true) { if () { @@ -29,6 +29,6 @@ public void run() { } } catch (InterruptedException e){ e.printStackTrace(); - } + }*/ } } diff --git a/src/Connection.java b/src/Connection.java index 6c73d7c..5f1b10d 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -50,7 +50,14 @@ public void reject() throws IOException { out.writeUTF("Rejected"); out.flush(); } + public Command recieve(){ - return null; + String s=""; + if(s.contains("Accepted")) return new Command(CommandTypes.accept); + if(s.contains("Rejected")) return new Command(CommandTypes.reject); + if(s.contains("ChatApp 2015")) return new NickCommand(CommandTypes.nickname); + if(s.contains("Disconnect")) return new Command(CommandTypes.disconnect); + if(s.contains("Message")) return new MessageCommand(CommandTypes.message); + else return null; } } From f7b3ffa1f39553c0aaf757e338d115efcfd0dc27 Mon Sep 17 00:00:00 2001 From: MariyaKlimenko Date: Wed, 18 Nov 2015 20:33:37 +0200 Subject: [PATCH 19/50] =?UTF-8?q?=D0=B2=D0=BE=D1=82=20[2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ChatWindow.java | 2 +- src/IncomingConnection.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ChatWindow.java b/src/ChatWindow.java index e8b798a..b9c335c 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -10,7 +10,7 @@ public class ChatWindow extends JFrame { public ChatWindow() { - this.setSize(500, 600); + this.setSize(650, 500); this.setTitle("This is CHAT "); ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); this.setIconImage(image.getImage()); diff --git a/src/IncomingConnection.java b/src/IncomingConnection.java index 3f97bb4..6954c5c 100644 --- a/src/IncomingConnection.java +++ b/src/IncomingConnection.java @@ -11,7 +11,6 @@ public IncomingConnection() { this.setTitle("Incoming Connection"); ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); this.setIconImage(image.getImage()); - final int x = 0; final JPanel jPanel = new JPanel(); jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS)); final JPanel pan1 = new JPanel(); From 7d56de21d2bc4c5d59e0ca6f5a9549c6b0934e6b Mon Sep 17 00:00:00 2001 From: Jojorr Date: Wed, 18 Nov 2015 21:22:22 +0200 Subject: [PATCH 20/50] Testing Connection (just in time) --- src/Command.java | 1 + src/CommandListenerThread.java | 4 ++-- src/Connection.java | 11 +++++------ src/Main.java | 13 ++++++++++++- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Command.java b/src/Command.java index 4e01b9c..707ae47 100644 --- a/src/Command.java +++ b/src/Command.java @@ -5,4 +5,5 @@ public class Command { public Command(CommandTypes ctypes) { this.commandTypes = ctypes; } + } diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index 5680f9b..c7544fa 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -19,7 +19,7 @@ public void removeCommandObserver(Observer o) { } public void run() { - try { + /*try { while (true) { if () { @@ -27,6 +27,6 @@ public void run() { } } catch (InterruptedException e) { e.printStackTrace(); - } + }*/ } } diff --git a/src/Connection.java b/src/Connection.java index 5f1b10d..dccf2d0 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -11,10 +11,9 @@ public class Connection{ public Connection(Socket s, String nick) throws IOException{ this.s = s; - out = new DataOutputStream(s.getOutputStream()); - in = new DataInputStream(s.getInputStream()); + out = new DataOutputStream(this.s.getOutputStream()); + in = new DataInputStream(this.s.getInputStream()); this.nick = nick; - sendMessage(s.getInetAddress()+" connected. Type your message."); } public void sendMessage(String message) throws IOException{ @@ -29,7 +28,7 @@ public void Disconnect() throws IOException{ s.close(); } - public void sendNickHello(String nick) throws IOException { + public void sendNickHello() throws IOException { out.writeUTF("ChatApp 2015 user " + nick + "\n"); out.flush(); } @@ -41,13 +40,13 @@ public void sendNickBusy() throws IOException { } } - public void accept(Connection newUser) throws IOException{ + public void accept() throws IOException{ out.writeUTF("Accepted\n"); out.flush(); } public void reject() throws IOException { - out.writeUTF("Rejected"); + out.writeUTF("Rejected\n"); out.flush(); } diff --git a/src/Main.java b/src/Main.java index 24c5e5e..4d64b59 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,6 +1,17 @@ import java.io.*; - +import java.net.Socket; +import java.util.*; public class Main { public static void main(String[] args) throws IOException { + + Socket s = new Socket("files.litvinov.in.ua",28411); + Connection c = new Connection(s,"azazaza"); + c.sendNickHello(); + Scanner in = new Scanner(System.in); + String string; + while (true){ + string = in.nextLine(); + c.sendMessage(string); + } } } From 01507cb856400a655ac1685d5ba7c157049a3c24 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Wed, 18 Nov 2015 21:42:09 +0200 Subject: [PATCH 21/50] =?UTF-8?q?=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/CallListenerThread.java | 4 ++-- src/ChatWindow.java | 9 +++------ src/IncomingConnection.java | 17 ++++------------- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 4aa3d8e..b8537e7 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -21,7 +21,7 @@ public void removeConnectionObserver(Observer o) { } public void run() { - /* try { + try { while (true) { if () { @@ -29,6 +29,6 @@ public void run() { } } catch (InterruptedException e){ e.printStackTrace(); - }*/ + } } } diff --git a/src/ChatWindow.java b/src/ChatWindow.java index e8b798a..a1c46b3 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -10,7 +10,7 @@ public class ChatWindow extends JFrame { public ChatWindow() { - this.setSize(500, 600); + this.setSize(650, 500); this.setTitle("This is CHAT "); ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); this.setIconImage(image.getImage()); @@ -122,8 +122,7 @@ class ApplyAction implements ActionListener { public void actionPerformed(ActionEvent event) { text = txt1.getText(); //apply - - + } } class ConnectAction implements ActionListener { @@ -159,8 +158,7 @@ public void actionPerformed(ActionEvent event) { final JScrollPane scrollPane = new JScrollPane(mess); fieldmess.add(scrollPane); - scrollPane - .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); field.add(field1); field.add(field2); field.add(field3); @@ -176,6 +174,5 @@ public void actionPerformed(ActionEvent event) { public static void main(String[] args) { ChatWindow a = new ChatWindow(); - } } diff --git a/src/IncomingConnection.java b/src/IncomingConnection.java index 3f97bb4..23bb53c 100644 --- a/src/IncomingConnection.java +++ b/src/IncomingConnection.java @@ -1,8 +1,6 @@ import javax.swing.*; - import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; +import java.awt.event.*; public class IncomingConnection extends JFrame { @@ -11,24 +9,19 @@ public IncomingConnection() { this.setTitle("Incoming Connection"); ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); this.setIconImage(image.getImage()); - final int x = 0; final JPanel jPanel = new JPanel(); jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS)); final JPanel pan1 = new JPanel(); final JPanel pan2 = new JPanel(); - final JLabel jLabel = new JLabel( - "User XXX from IP Y.Y.Y.Y wants to chat"); - + final JLabel jLabel = new JLabel("User XXX from IP Y.Y.Y.Y wants to chat"); final JButton jButton = new JButton("Accept"); final JButton jButton1 = new JButton("Decline"); - - jButton.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ - // + //������� } @@ -39,7 +32,7 @@ public void actionPerformed(ActionEvent e){ @Override public void actionPerformed(ActionEvent e){ - // + //��������� } @@ -63,11 +56,9 @@ public void actionPerformed(ActionEvent e){ this.setLocationRelativeTo(null); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); this.setVisible(true); - } public static void main(String[] args) { IncomingConnection incomingConnection = new IncomingConnection(); - } } From 76668d1579cad073a55097134a62c88c23333e55 Mon Sep 17 00:00:00 2001 From: MariyaKlimenko Date: Wed, 18 Nov 2015 23:22:57 +0200 Subject: [PATCH 22/50] ... --- src/ChatWindow.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ChatWindow.java b/src/ChatWindow.java index a1c46b3..2e3558e 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -48,6 +48,7 @@ public ChatWindow() { textmess.setLineWrap(true); mess.setCaretPosition(0); mess.setLineWrap(true); + mess.setEditable(false); textmess.setMaximumSize(new Dimension(1500, 50)); textmess.setPreferredSize(new Dimension(70, 50)); @@ -108,7 +109,7 @@ class SendAction implements ActionListener { public void actionPerformed(ActionEvent event) { messege = textmess.getText(); - mess.append(messege + "\n"); + mess.append(/*nick + */ " : " + messege + "\n"); textmess.setText(""); //send } From 4777ac95770343b703ba2ff0584471f1e17e817e Mon Sep 17 00:00:00 2001 From: Jojorr Date: Thu, 19 Nov 2015 01:36:07 +0200 Subject: [PATCH 23/50] Some changes,don`t even remember what, too sleepy --- src/Caller.java | 12 ++++-------- src/ChatWindow.java | 21 +++++++++++++++++++-- src/Connection.java | 42 ++++++++++++++++++++++++++---------------- src/Main.java | 22 ++++++++++++++-------- 4 files changed, 63 insertions(+), 34 deletions(-) diff --git a/src/Caller.java b/src/Caller.java index ab15bee..47f7a5c 100644 --- a/src/Caller.java +++ b/src/Caller.java @@ -3,18 +3,18 @@ public class Caller { private Socket s; private String nick; - private int port; + private final static int port = 28411; private InetAddress IP; private String distNick; public Caller(InetAddress ip, int port) throws IOException{ this.IP = ip; - this.port = port; s = new Socket(IP,port); } - public Connection call() throws IOException { - Connection c = new Connection(s,nick); + public Connection call(InetAddress ip, int port,String nick) throws IOException { + Connection c = new Connection(new Socket(ip,port),nick); + c.sendNickHello(nick); return c; } @@ -30,10 +30,6 @@ public int getPort() { return port; } - public void setPort(int port) { - this.port = port; - } - public InetAddress getIP() { return IP; } diff --git a/src/ChatWindow.java b/src/ChatWindow.java index e8b798a..fa69e89 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -6,8 +6,13 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.net.*; +import java.util.Observable; +import java.util.Observer; -public class ChatWindow extends JFrame { +public class ChatWindow extends JFrame implements Observer { + + private CallListenerThread callt; + private CommandListenerThread comt; public ChatWindow() { this.setSize(500, 600); @@ -37,6 +42,7 @@ public ChatWindow() { final JTextArea textmess = new JTextArea(); final JTextArea mess = new JTextArea(); + messArea.setLayout(new BoxLayout(messArea, BoxLayout.X_AXIS)); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); field.setLayout(new BoxLayout(field, BoxLayout.X_AXIS)); @@ -175,7 +181,18 @@ public void actionPerformed(ActionEvent event) { } public static void main(String[] args) { - ChatWindow a = new ChatWindow(); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + new ChatWindow(); + } + }); + //ChatWindow a = new ChatWindow(); } + + @Override + public void update(Observable o, Object arg) { + + } } diff --git a/src/Connection.java b/src/Connection.java index dccf2d0..e9f1484 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -6,52 +6,62 @@ public class Connection{ private final static int PORT = 28411; private final static String ENCODING = "UTF-8"; private String nick; - private DataOutputStream out; - private DataInputStream in; + private OutputStream out; + private PrintWriter sout; + private DataInputStream reader; public Connection(Socket s, String nick) throws IOException{ this.s = s; - out = new DataOutputStream(this.s.getOutputStream()); - in = new DataInputStream(this.s.getInputStream()); + out = this.s.getOutputStream(); + sout = new PrintWriter(out); + reader = new DataInputStream(this.s.getInputStream()); this.nick = nick; } public void sendMessage(String message) throws IOException{ - out.writeUTF("Message\n" + message + "\n"); + sout.print("Message\n" + message + "\n"); out.flush(); } - public void Disconnect() throws IOException{ - out.writeUTF("Disconnect\n"); + public void disconnect() throws IOException{ + sout.print("Disconnect\n"); out.close(); - in.close(); + reader.close(); s.close(); } - public void sendNickHello() throws IOException { - out.writeUTF("ChatApp 2015 user " + nick + "\n"); + public void sendNickHello(String nick) throws IOException { + sout.print("ChatApp 2015 user " + nick + "\n"); out.flush(); } - public void sendNickBusy() throws IOException { + public void sendNickBusy(String nick) throws IOException { if(s.isConnected()){ - out.writeUTF("ChatApp 2015 user " + nick + " busy\n"); + sout.print("ChatApp 2015 user " + nick + " busy\n"); out.flush(); } } public void accept() throws IOException{ - out.writeUTF("Accepted\n"); + sout.print("Accepted\n"); out.flush(); } public void reject() throws IOException { - out.writeUTF("Rejected\n"); + sout.print("Rejected\n"); out.flush(); } - public Command recieve(){ - String s=""; + public String testRecieve() throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); + String string; + string = reader.readLine(); + return string; + } + + public Command recieve() throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); + String s = reader.readLine(); if(s.contains("Accepted")) return new Command(CommandTypes.accept); if(s.contains("Rejected")) return new Command(CommandTypes.reject); if(s.contains("ChatApp 2015")) return new NickCommand(CommandTypes.nickname); diff --git a/src/Main.java b/src/Main.java index 4d64b59..9237b70 100644 --- a/src/Main.java +++ b/src/Main.java @@ -3,15 +3,21 @@ import java.util.*; public class Main { public static void main(String[] args) throws IOException { - Socket s = new Socket("files.litvinov.in.ua",28411); Connection c = new Connection(s,"azazaza"); - c.sendNickHello(); - Scanner in = new Scanner(System.in); + //Scanner in = new Scanner(System.in); String string; - while (true){ - string = in.nextLine(); - c.sendMessage(string); - } -} + //while (true){ + c.sendNickHello("azazazaz"); + System.out.println(c.testRecieve()); + //c.accept(); + System.out.println(c.testRecieve()); + c.reject(); + System.out.println(c.testRecieve()); + //string = in.nextLine(); + c.disconnect(); + //c.sendMessage(string); + //System.out.println(c.testRecieve()); + //} + } } From 9645c2dda89e0cc75dff78e7e97ad8c0c60181ca Mon Sep 17 00:00:00 2001 From: Nicholas Date: Thu, 19 Nov 2015 01:37:23 +0200 Subject: [PATCH 24/50] =?UTF-8?q?=D0=B1=D0=B5=D0=B7=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8=D0=B5=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/CallListenerThread.java | 14 ++++---------- src/CommandListenerThread.java | 19 ++++++++----------- src/Connection.java | 2 +- 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index b8537e7..08b8af2 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -1,23 +1,17 @@ import java.util.*; -public class CallListenerThread extends Thread { +public class CallListenerThread extends Observable implements Runnable { private String nick; private final static int port = 28411; private final static String ip = "localhost"; private String available = "Available"; - private List observers; - private Observable observable = new Observable(); - - public CallListenerThread() { - observers = new ArrayList(); - } public void addConnectionObserver(Observer o) { - observers.add(o); + addObserver(o); } public void removeConnectionObserver(Observer o) { - observers.remove(o); + deleteObserver(o); } public void run() { @@ -31,4 +25,4 @@ public void run() { e.printStackTrace(); } } -} +} \ No newline at end of file diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index 5680f9b..ddb1d14 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -1,27 +1,24 @@ import java.util.*; -public class CommandListenerThread extends Thread { +public class CommandListenerThread extends Observable implements Runnable { private Connection connection; private Command lastCommand; - private List observers; - private Observable observable = new Observable(); - - public CommandListenerThread() { - observers = new ArrayList(); - } public void addCommandObserver(Observer o) { - observers.add(o); + addObserver(o); } public void removeCommandObserver(Observer o) { - observers.remove(o); + deleteObserver(o); } public void run() { try { while (true) { - if () { + if (connection.accept()) { + addCommandObserver(); + } + else if (connection.reject();) { } } @@ -29,4 +26,4 @@ public void run() { e.printStackTrace(); } } -} +} \ No newline at end of file diff --git a/src/Connection.java b/src/Connection.java index 5f1b10d..d925fc6 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -14,7 +14,7 @@ public Connection(Socket s, String nick) throws IOException{ out = new DataOutputStream(s.getOutputStream()); in = new DataInputStream(s.getInputStream()); this.nick = nick; - sendMessage(s.getInetAddress()+" connected. Type your message."); + sendMessage(s.getInetAddress() + " connected. Type your message."); } public void sendMessage(String message) throws IOException{ From b3f271308913d4f4e7494f182fa62f82cdb3d130 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Thu, 19 Nov 2015 15:03:30 +0200 Subject: [PATCH 25/50] =?UTF-8?q?=D0=B1=D0=B5=D0=B7=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8=D0=B5=D0=B2=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/CallListenerThread.java | 4 ++-- src/CommandListenerThread.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 08b8af2..760f54b 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -15,7 +15,7 @@ public void removeConnectionObserver(Observer o) { } public void run() { - try { + /* try { while (true) { if () { @@ -23,6 +23,6 @@ public void run() { } } catch (InterruptedException e){ e.printStackTrace(); - } + }*/ } } \ No newline at end of file diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index ddb1d14..ab9bd95 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -13,7 +13,7 @@ public void removeCommandObserver(Observer o) { } public void run() { - try { + /*try { while (true) { if (connection.accept()) { addCommandObserver(); @@ -24,6 +24,6 @@ public void run() { } } catch (InterruptedException e) { e.printStackTrace(); - } + }*/ } } \ No newline at end of file From 96de34b70e2e6e72fd02ee4382772d3249cb6f7b Mon Sep 17 00:00:00 2001 From: Jojorr Date: Thu, 19 Nov 2015 15:12:14 +0200 Subject: [PATCH 26/50] work --- src/Connection.java | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/Connection.java b/src/Connection.java index e48cda3..e6c5b04 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -1,5 +1,6 @@ import java.net.*; import java.io.*; +import java.util.Scanner; public class Connection{ private Socket s; @@ -7,63 +8,59 @@ public class Connection{ private final static String ENCODING = "UTF-8"; private String nick; private OutputStream out; - private PrintWriter sout; + private DataOutputStream sout; private DataInputStream reader; public Connection(Socket s, String nick) throws IOException{ this.s = s; out = this.s.getOutputStream(); - sout = new PrintWriter(out); + sout = new DataOutputStream(out); reader = new DataInputStream(this.s.getInputStream()); this.nick = nick; -<<<<<<< HEAD -======= - sendMessage(s.getInetAddress() + " connected. Type your message."); ->>>>>>> origin/master } public void sendMessage(String message) throws IOException{ - sout.print("Message\n" + message + "\n"); + sout.write(new StringBuilder("Message\n").append(message).append("\n").toString().getBytes()); out.flush(); } public void disconnect() throws IOException{ - sout.print("Disconnect\n"); + sout.write(new StringBuilder("Disconnect\n").toString().getBytes()); out.close(); reader.close(); s.close(); } public void sendNickHello(String nick) throws IOException { - sout.print("ChatApp 2015 user " + nick + "\n"); + sout.write(new StringBuilder("ChatApp 2015 user ").append(nick).append("\n").toString().getBytes()); out.flush(); } public void sendNickBusy(String nick) throws IOException { if(s.isConnected()){ - sout.print("ChatApp 2015 user " + nick + " busy\n"); + sout.write(new StringBuilder("ChatApp 2015 user ").append(nick).append(" busy\n").toString().getBytes()); out.flush(); } } public void accept() throws IOException{ - sout.print("Accepted\n"); + sout.write(new StringBuilder("Accepted\n").toString().getBytes()); out.flush(); } public void reject() throws IOException { - sout.print("Rejected\n"); + sout.write(new StringBuilder("Rejected\n").toString().getBytes()); out.flush(); } - public String testRecieve() throws IOException { + public void testRecieve() throws IOException { + PrintWriter w = new PrintWriter(s.getOutputStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); String string; - while((string = reader.readLine())!=null) { - if (string.equalsIgnoreCase("\n")) break; - sout.println(); + Scanner r = new Scanner(new InputStreamReader(s.getInputStream(),"UTF-8")); + while(r.hasNextLine()) { + System.out.println(r.nextLine()); } - return string; } public Command recieve() throws IOException { From 463ad5b91555f5f83d05dcd14b512e03b6d05f13 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Thu, 19 Nov 2015 22:44:32 +0200 Subject: [PATCH 27/50] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=BF=D0=BE=D1=82=D0=BE=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/CallListener.java | 5 ++++ src/CallListenerThread.java | 51 ++++++++++++++++++++++++---------- src/Command.java | 4 +-- src/CommandListenerThread.java | 41 ++++++++++++++++++--------- src/CommandObserver.java | 12 ++++++++ src/Connection.java | 5 ++++ src/DisconnectObserver.java | 18 ++++++++++++ src/Main.java | 4 +-- src/MessageObserver.java | 19 +++++++++++++ 9 files changed, 127 insertions(+), 32 deletions(-) create mode 100644 src/CommandObserver.java create mode 100644 src/DisconnectObserver.java create mode 100644 src/MessageObserver.java diff --git a/src/CallListener.java b/src/CallListener.java index 4cc8667..60f7100 100644 --- a/src/CallListener.java +++ b/src/CallListener.java @@ -3,6 +3,7 @@ public class CallListener { private String localNick = "default"; + private String remoteNick; private Boolean isBusy; private static final int localPort = 28411; private final static String IP = "localhost"; @@ -56,4 +57,8 @@ public void setRemoteAddress(SocketAddress remoteAddress){ public int getLocalPort(){ return localPort; } + + public String getRemoteNick() { + return remoteNick; + } } \ No newline at end of file diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 760f54b..7627069 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -1,28 +1,49 @@ -import java.util.*; +import java.io.*; -public class CallListenerThread extends Observable implements Runnable { +public class CallListenerThread implements Runnable { private String nick; - private final static int port = 28411; - private final static String ip = "localhost"; - private String available = "Available"; + private String lastAction; + private String ip; + private String remoteNick; + private boolean isBusy; + private Connection remoteConnection; + private CallListener callListener; + private boolean flag; + private IncomingConnection IC; + /*private поле с объектом формочки*/ - public void addConnectionObserver(Observer o) { - addObserver(o); + public CallListenerThread(String nick,/*адресс типо*/ /*здесь должен быть объект работающей формочки*/) { + callListener = CallListener(nick, /*адресс типо*/); + /*this.формочка = формочка*/ } - public void removeConnectionObserver(Observer o) { - deleteObserver(o); + public Connection getRemoteConection() { + return remoteConnection; } - public void run() { - /* try { - while (true) { - if () { + public void Stop() { + flag = true; + } + public void run() { + try { + while (!flag) { + remoteConnection = callListener.getConnection(); + if (remoteConnection == null) { + continue; } + remoteNick = callListener.getRemoteNick(); + IC = new IncomingConnection(remoteConnection, /*формочка*/); + /*формочка.setRemoteNick(remoteNick)*/ + + /*в этой форме будет метод + public void setRemoteNick(String nick){ + remoteNick = nick; + } */ + } - } catch (InterruptedException e){ + } catch (IOException e){ e.printStackTrace(); - }*/ + } } } \ No newline at end of file diff --git a/src/Command.java b/src/Command.java index 707ae47..198c308 100644 --- a/src/Command.java +++ b/src/Command.java @@ -2,8 +2,8 @@ public class Command { protected CommandTypes commandTypes; - public Command(CommandTypes ctypes) { - this.commandTypes = ctypes; + public Command(CommandTypes commandTypes) { + this.commandTypes = commandTypes; } } diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index 738beef..82cf7c9 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -1,29 +1,44 @@ import java.util.*; +import java.io.*; -public class CommandListenerThread extends Observable implements Runnable { +public class CommandListenerThread implements Runnable { private Connection connection; private Command lastCommand; + private boolean flag; + private HashMap observers; + /*private поле с объектом формочки*/ - public void addCommandObserver(Observer o) { - addObserver(o); + public CommandListenerThread(Connection connection, /*здесь должен быть объект работающей формочки*/) { + this.connection = connection; + /*this.формочка = формочка*/ } - public void removeCommandObserver(Observer o) { - deleteObserver(o); + public void addCommandObserver(CommandObserver commandObserver) { + observers.put(CommandObserver.getType(),commandObserver); + } + + public void removeCommandObserver(CommandObserver commandObserver) { + observers.remove(CommandObserver.getType()); + } + + public void stop() { + flag = true; } public void run() { - /*try { - while (true) { - if (connection.accept()) { - addCommandObserver(); + try { + while (!flag) { + lastCommand = connection.recieve(); + if (lastCommand.commandTypes == CommandTypes.message) { + MessageCommand messageCommand = (MessageCommand) lastCommand; + /*формочка добавляет сообщение*/ } - else if (connection.reject();) { - + if (lastCommand.commandTypes == CommandTypes.disconnect) { + /*формочка дисконектится*/ } } - } catch (InterruptedException e) { + } catch (IOException e) { e.printStackTrace(); - }*/ + } } } diff --git a/src/CommandObserver.java b/src/CommandObserver.java new file mode 100644 index 0000000..ec1f117 --- /dev/null +++ b/src/CommandObserver.java @@ -0,0 +1,12 @@ + +public abstract class CommandObserver { + protected CommandListenerThread commandListenerThread; + + public void update(Connection connection) { + + } + + CommandTypes getType() { + return null; + } +} diff --git a/src/Connection.java b/src/Connection.java index e6c5b04..a581bf0 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -10,6 +10,7 @@ public class Connection{ private OutputStream out; private DataOutputStream sout; private DataInputStream reader; + private CommandTypes lastCommand; public Connection(Socket s, String nick) throws IOException{ this.s = s; @@ -53,6 +54,10 @@ public void reject() throws IOException { out.flush(); } + public CommandTypes getLastCommand() { + return lastCommand; + } + public void testRecieve() throws IOException { PrintWriter w = new PrintWriter(s.getOutputStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); diff --git a/src/DisconnectObserver.java b/src/DisconnectObserver.java new file mode 100644 index 0000000..20572f3 --- /dev/null +++ b/src/DisconnectObserver.java @@ -0,0 +1,18 @@ + +public class DisconnectObserver extends CommandObserver { + private CommandTypes type = CommandTypes.disconnect; + Connection connection; + + public DisconnectObserver(CommandListenerThread commandListenerThread, Connection connection) { + this.commandListenerThread = commandListenerThread; + this.connection = connection; + } + + public void update(Command command) { + + } + + public CommandTypes getType() { + return type; + } +} diff --git a/src/Main.java b/src/Main.java index 9237b70..ec3e025 100644 --- a/src/Main.java +++ b/src/Main.java @@ -3,7 +3,7 @@ import java.util.*; public class Main { public static void main(String[] args) throws IOException { - Socket s = new Socket("files.litvinov.in.ua",28411); + /*Socket s = new Socket("files.litvinov.in.ua",28411); Connection c = new Connection(s,"azazaza"); //Scanner in = new Scanner(System.in); String string; @@ -18,6 +18,6 @@ public static void main(String[] args) throws IOException { c.disconnect(); //c.sendMessage(string); //System.out.println(c.testRecieve()); - //} + //}*/ } } diff --git a/src/MessageObserver.java b/src/MessageObserver.java new file mode 100644 index 0000000..c748dd6 --- /dev/null +++ b/src/MessageObserver.java @@ -0,0 +1,19 @@ + +public class MessageObserver extends CommandObserver{ + private CommandTypes type = CommandTypes.accept; + private MessageCommand messageCommand; + + public MessageObserver(CommandListenerThread commandListenerThread /*ссылка на форму*/){ + this.commandListenerThread = commandListenerThread; + commandListenerThread.addCommandObserver(this); + } + + public void update(Command command) { + messageCommand = (MessageCommand) command; + + } + + public CommandTypes getType() { + return type; + } +} From 8e85046cf7c1caad02e2597b01e8fed2d0ced55a Mon Sep 17 00:00:00 2001 From: Nicholas Date: Wed, 25 Nov 2015 20:08:54 +0200 Subject: [PATCH 28/50] fix threads --- src/CallListenerThread.java | 70 ++++++++++++++++++---------------- src/Caller.java | 1 + src/ChatWindow.java | 3 +- src/Command.java | 1 - src/CommandListenerThread.java | 57 +++++++++++++++------------ src/CommandObserver.java | 12 ------ src/Connection.java | 2 - src/DisconnectObserver.java | 18 --------- src/MessageObserver.java | 19 --------- src/Protocol.java | 6 +++ src/TestIP.java | 56 --------------------------- 11 files changed, 79 insertions(+), 166 deletions(-) delete mode 100644 src/CommandObserver.java delete mode 100644 src/DisconnectObserver.java delete mode 100644 src/MessageObserver.java create mode 100644 src/Protocol.java delete mode 100644 src/TestIP.java diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 7627069..ac6f417 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -1,48 +1,54 @@ import java.io.*; +import java.util.*; +import java.net.*; -public class CallListenerThread implements Runnable { - private String nick; - private String lastAction; - private String ip; - private String remoteNick; - private boolean isBusy; - private Connection remoteConnection; +public class CallListenerThread extends Observable implements Runnable { private CallListener callListener; - private boolean flag; - private IncomingConnection IC; - /*private поле с объектом формочки*/ + private String nick; + private Socket socket; + private ServerSocket serverSocket; + private volatile boolean disconnected; + + public void start() { + this.disconnected = false; + Thread t = new Thread(this); + t.start(); + } - public CallListenerThread(String nick,/*адресс типо*/ /*здесь должен быть объект работающей формочки*/) { - callListener = CallListener(nick, /*адресс типо*/); - /*this.формочка = формочка*/ + public boolean isDisconnected() { + return disconnected; } - public Connection getRemoteConection() { - return remoteConnection; + public void stop() { + disconnected = true; } - public void Stop() { - flag = true; + public Connection getConnection(){ + if(socket!=null){ + try { + return new Connection(socket, nick); + } catch (IOException e) { + e.printStackTrace(); + } + } + return null; } - public void run() { + @Override + public void run(){ try { - while (!flag) { - remoteConnection = callListener.getConnection(); - if (remoteConnection == null) { - continue; + serverSocket = new ServerSocket(Protocol.PORT); + while (true){ + socket = serverSocket.accept(); + Connection connection = new Connection(socket, nick); + if (connection!=null) { + CommandListenerThread clt = new CommandListenerThread(connection); + clt.addObserver(ChatWindow.observer); + clt.start(); + connection.sendNickHello(Protocol.nickname); } - remoteNick = callListener.getRemoteNick(); - IC = new IncomingConnection(remoteConnection, /*формочка*/); - /*формочка.setRemoteNick(remoteNick)*/ - - /*в этой форме будет метод - public void setRemoteNick(String nick){ - remoteNick = nick; - } */ - } - } catch (IOException e){ + } catch (IOException e) { e.printStackTrace(); } } diff --git a/src/Caller.java b/src/Caller.java index 47f7a5c..1c2aa05 100644 --- a/src/Caller.java +++ b/src/Caller.java @@ -1,5 +1,6 @@ import java.net.*; import java.io.*; + public class Caller { private Socket s; private String nick; diff --git a/src/ChatWindow.java b/src/ChatWindow.java index fa7d0c6..b789f24 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -10,11 +10,12 @@ import java.util.Observer; public class ChatWindow extends JFrame implements Observer { - private CallListenerThread callt; private CommandListenerThread comt; + public static Observer observer; public ChatWindow() { + observer = this; this.setSize(650, 500); this.setTitle("This is CHAT "); ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); diff --git a/src/Command.java b/src/Command.java index 198c308..95cadf9 100644 --- a/src/Command.java +++ b/src/Command.java @@ -5,5 +5,4 @@ public class Command { public Command(CommandTypes commandTypes) { this.commandTypes = commandTypes; } - } diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index 82cf7c9..334d176 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -1,44 +1,51 @@ import java.util.*; import java.io.*; -public class CommandListenerThread implements Runnable { +public class CommandListenerThread extends Observable implements Runnable { private Connection connection; - private Command lastCommand; - private boolean flag; - private HashMap observers; - /*private поле с объектом формочки*/ + private volatile Command lastCommand; + private volatile boolean disconnected; - public CommandListenerThread(Connection connection, /*здесь должен быть объект работающей формочки*/) { - this.connection = connection; - /*this.формочка = формочка*/ + public void start() { + this.disconnected = false; + Thread t = new Thread(this); + t.start(); } - public void addCommandObserver(CommandObserver commandObserver) { - observers.put(CommandObserver.getType(),commandObserver); + public boolean isDisconnected() { + return disconnected; } - public void removeCommandObserver(CommandObserver commandObserver) { - observers.remove(CommandObserver.getType()); + public void stop() { + disconnected = true; } - public void stop() { - flag = true; + public Connection getConnection(){ + return this.connection; } + public CommandListenerThread(Connection connection) { + this.connection = connection; + } + + public Command getLastCommand() { + return lastCommand; + } + + @Override public void run() { - try { - while (!flag) { - lastCommand = connection.recieve(); - if (lastCommand.commandTypes == CommandTypes.message) { - MessageCommand messageCommand = (MessageCommand) lastCommand; - /*формочка добавляет сообщение*/ - } - if (lastCommand.commandTypes == CommandTypes.disconnect) { - /*формочка дисконектится*/ + while (isDisconnected() != true) { + synchronized (this) { + try { + this.lastCommand = connection.recieve(); + notifyObservers(connection.recieve()); + this.addObserver(ChatWindow.observer); + setChanged(); + this.notifyObservers(lastCommand); + } catch (IOException e) { + e.printStackTrace(); } } - } catch (IOException e) { - e.printStackTrace(); } } } diff --git a/src/CommandObserver.java b/src/CommandObserver.java deleted file mode 100644 index ec1f117..0000000 --- a/src/CommandObserver.java +++ /dev/null @@ -1,12 +0,0 @@ - -public abstract class CommandObserver { - protected CommandListenerThread commandListenerThread; - - public void update(Connection connection) { - - } - - CommandTypes getType() { - return null; - } -} diff --git a/src/Connection.java b/src/Connection.java index a581bf0..b282839 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -4,8 +4,6 @@ public class Connection{ private Socket s; - private final static int PORT = 28411; - private final static String ENCODING = "UTF-8"; private String nick; private OutputStream out; private DataOutputStream sout; diff --git a/src/DisconnectObserver.java b/src/DisconnectObserver.java deleted file mode 100644 index 20572f3..0000000 --- a/src/DisconnectObserver.java +++ /dev/null @@ -1,18 +0,0 @@ - -public class DisconnectObserver extends CommandObserver { - private CommandTypes type = CommandTypes.disconnect; - Connection connection; - - public DisconnectObserver(CommandListenerThread commandListenerThread, Connection connection) { - this.commandListenerThread = commandListenerThread; - this.connection = connection; - } - - public void update(Command command) { - - } - - public CommandTypes getType() { - return type; - } -} diff --git a/src/MessageObserver.java b/src/MessageObserver.java deleted file mode 100644 index c748dd6..0000000 --- a/src/MessageObserver.java +++ /dev/null @@ -1,19 +0,0 @@ - -public class MessageObserver extends CommandObserver{ - private CommandTypes type = CommandTypes.accept; - private MessageCommand messageCommand; - - public MessageObserver(CommandListenerThread commandListenerThread /*ссылка на форму*/){ - this.commandListenerThread = commandListenerThread; - commandListenerThread.addCommandObserver(this); - } - - public void update(Command command) { - messageCommand = (MessageCommand) command; - - } - - public CommandTypes getType() { - return type; - } -} diff --git a/src/Protocol.java b/src/Protocol.java new file mode 100644 index 0000000..2e85ac3 --- /dev/null +++ b/src/Protocol.java @@ -0,0 +1,6 @@ + +public class Protocol { + public static final int PORT =28411; + public static boolean isBusy; + public static String nickname; +} diff --git a/src/TestIP.java b/src/TestIP.java deleted file mode 100644 index 53bd442..0000000 --- a/src/TestIP.java +++ /dev/null @@ -1,56 +0,0 @@ -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.MalformedURLException; -import java.net.URL; - -/** - * Created by Вадим on 08.11.2015. - */ -public class TestIP { - public String getCurrentIP() { - String result = null; - try { - BufferedReader reader = null; - try { - URL url = new URL("http://myip.by/"); - InputStream inputStream = null; - inputStream = url.openStream(); - reader = new BufferedReader(new InputStreamReader(inputStream)); - StringBuilder allText = new StringBuilder(); - char[] buff = new char[1024]; - - int count = 0; - while ((count = reader.read(buff)) != -1) { - allText.append(buff, 0, count); - } -// Строка содержащая IP имеет следующий вид -// whois 127.0.0.1 - Integer indStart = allText.indexOf("\">whois "); - Integer indEnd = allText.indexOf("", indStart); - - String ipAddress = new String(allText.substring(indStart + 8, indEnd)); - if (ipAddress.split("\\.").length == 4) { // минимальная (неполная) - //проверка что выбранный текст является ip адресом. - result = ipAddress; - } - } catch (MalformedURLException ex) { - ex.printStackTrace(); - } catch (IOException ex) { - ex.printStackTrace(); - } finally { - if (reader != null) { - try { - reader.close(); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } -} From 10a8265fbe8b273bf80c5861175b979cafd7e830 Mon Sep 17 00:00:00 2001 From: Jojorr Date: Sat, 28 Nov 2015 23:53:33 +0200 Subject: [PATCH 29/50] Almost completed --- src/Caller.java | 16 +-- src/ChatWindow.java | 174 ++++++++++++++++++++------------- src/Command.java | 22 +++++ src/CommandListenerThread.java | 5 +- src/CommandTypes.java | 8 -- src/Connection.java | 12 +-- src/MessageCommand.java | 8 ++ src/NickCommand.java | 4 + src/Protocol.java | 3 +- 9 files changed, 151 insertions(+), 101 deletions(-) delete mode 100644 src/CommandTypes.java diff --git a/src/Caller.java b/src/Caller.java index 1c2aa05..07d34c7 100644 --- a/src/Caller.java +++ b/src/Caller.java @@ -5,16 +5,16 @@ public class Caller { private Socket s; private String nick; private final static int port = 28411; - private InetAddress IP; + private String IP; private String distNick; - public Caller(InetAddress ip, int port) throws IOException{ + public Caller(String ip) throws IOException{ this.IP = ip; s = new Socket(IP,port); } - public Connection call(InetAddress ip, int port,String nick) throws IOException { - Connection c = new Connection(new Socket(ip,port),nick); + public Connection call() throws IOException { + Connection c = new Connection(new Socket(IP,port),Protocol.nickname); c.sendNickHello(nick); return c; } @@ -31,14 +31,6 @@ public int getPort() { return port; } - public InetAddress getIP() { - return IP; - } - - public void setIP(InetAddress IP) { - this.IP = IP; - } - public String getDistNick() { return distNick; } diff --git a/src/ChatWindow.java b/src/ChatWindow.java index b789f24..ede61ef 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -3,9 +3,8 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.net.*; +import java.io.IOException; +import java.net.Socket; import java.util.Observable; import java.util.Observer; @@ -13,35 +12,39 @@ public class ChatWindow extends JFrame implements Observer { private CallListenerThread callt; private CommandListenerThread comt; public static Observer observer; - - public ChatWindow() { + private Connection connection; + + final JPanel panel = new JPanel(); + final JPanel field1 = new JPanel(); + final JPanel field2 = new JPanel(); + final JPanel field3 = new JPanel(); + final JPanel fieldmess = new JPanel(); + final JPanel field = new JPanel(); + final JPanel messArea = new JPanel(); + final JButton apply = new JButton("Apply"); + final JButton connect = new JButton("Connect"); + final JButton disconnect = new JButton("Disconnect"); + final JButton sendb = new JButton("Send"); + + final JLabel locallogin = new JLabel("local login"); + final JLabel remotelogin = new JLabel("remote login"); + final JLabel txt3 = new JLabel("remote addr"); + + final JTextField text1 = new JTextField(); + final JTextField text2 = new JTextField(); + final JTextField text3 = new JTextField(); + final JTextArea textmess = new JTextArea(); + final JTextArea mess = new JTextArea(); + + public ChatWindow() throws IOException { observer = this; this.setSize(650, 500); this.setTitle("This is CHAT "); ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); this.setIconImage(image.getImage()); - - final JPanel panel = new JPanel(); - final JPanel field1 = new JPanel(); - final JPanel field2 = new JPanel(); - final JPanel field3 = new JPanel(); - final JPanel fieldmess = new JPanel(); - final JPanel field = new JPanel(); - final JPanel messArea = new JPanel(); - final JButton but1 = new JButton("Apply"); - final JButton but2 = new JButton("Connect"); - final JButton but3 = new JButton("Disconnect"); - final JButton sendb = new JButton("Send"); - - final JLabel txt1 = new JLabel("local login"); - final JLabel txt2 = new JLabel("remote login"); - final JLabel txt3 = new JLabel("remote addr"); - - final JTextField text1 = new JTextField(); - final JTextField text2 = new JTextField(); - final JTextField text3 = new JTextField(); - final JTextArea textmess = new JTextArea(); - final JTextArea mess = new JTextArea(); + callt = new CallListenerThread(); + callt.start(); + messArea.setLayout(new BoxLayout(messArea, BoxLayout.X_AXIS)); @@ -63,36 +66,37 @@ public ChatWindow() { text2.setMaximumSize(new Dimension(100, 25)); text3.setMaximumSize(new Dimension(100, 25)); - but1.setPreferredSize(new Dimension(100, 25)); - but1.setMaximumSize(new Dimension(100, 25)); - but2.setPreferredSize(new Dimension(100, 25)); - but2.setMaximumSize(new Dimension(100, 25)); - but3.setPreferredSize(new Dimension(100, 25)); - but3.setMaximumSize(new Dimension(100, 25)); + apply.setPreferredSize(new Dimension(100, 25)); + apply.setMaximumSize(new Dimension(100, 25)); + connect.setPreferredSize(new Dimension(100, 25)); + connect.setMaximumSize(new Dimension(100, 25)); + disconnect.setPreferredSize(new Dimension(100, 25)); + disconnect.setMaximumSize(new Dimension(100, 25)); sendb.setMaximumSize(new Dimension(70, 50)); sendb.setPreferredSize(new Dimension(70, 50)); + disconnect.setEnabled(false); - but1.setAlignmentX(JComponent.CENTER_ALIGNMENT); + apply.setAlignmentX(JComponent.CENTER_ALIGNMENT); text1.setAlignmentX(JComponent.CENTER_ALIGNMENT); - txt1.setAlignmentX(JComponent.CENTER_ALIGNMENT); + locallogin.setAlignmentX(JComponent.CENTER_ALIGNMENT); - but2.setAlignmentX(JComponent.CENTER_ALIGNMENT); + connect.setAlignmentX(JComponent.CENTER_ALIGNMENT); text2.setAlignmentX(JComponent.CENTER_ALIGNMENT); - txt2.setAlignmentX(JComponent.CENTER_ALIGNMENT); + remotelogin.setAlignmentX(JComponent.CENTER_ALIGNMENT); - but3.setAlignmentX(JComponent.CENTER_ALIGNMENT); + disconnect.setAlignmentX(JComponent.CENTER_ALIGNMENT); text3.setAlignmentX(JComponent.CENTER_ALIGNMENT); txt3.setAlignmentX(JComponent.CENTER_ALIGNMENT); - field1.add(txt1); - field2.add(txt2); + field1.add(locallogin); + field2.add(remotelogin); field3.add(txt3); field1.add(text1); field2.add(text2); field3.add(text3); - field1.add(but1); - field2.add(but2); - field3.add(but3); + field1.add(apply); + field2.add(connect); + field3.add(disconnect); messArea.add(textmess); messArea.add(sendb); @@ -103,44 +107,64 @@ public ChatWindow() { messArea.setBackground(new Color(220, 243, 246)); mess.setBackground(new Color(237, 245, 246)); - but1.setBackground(new Color(116, 199, 209)); - but2.setBackground(new Color(116, 199, 209)); - but3.setBackground(new Color(116, 199, 209)); + apply.setBackground(new Color(116, 199, 209)); + connect.setBackground(new Color(116, 199, 209)); + disconnect.setBackground(new Color(116, 199, 209)); sendb.setBackground(new Color(116, 199, 209)); class SendAction implements ActionListener { - private String messege; + private String message; + - SendAction() { - } public void actionPerformed(ActionEvent event) { - messege = textmess.getText(); - mess.append(/*nick + */ " : " + messege + "\n"); + message = textmess.getText(); + try { + //if(comt!=null){ + comt.getConnection().sendMessage(message); + //else{ + //callt.getConnection().sendMessage(message); + //} + } catch (IOException e1) { + e1.printStackTrace(); + } textmess.setText(""); - //send } } + class ApplyAction implements ActionListener { private String text; - ApplyAction() { - } - public void actionPerformed(ActionEvent event) { - text = txt1.getText(); - //apply + public void actionPerformed(ActionEvent event) { + text = text1.getText(); + Protocol.nickname = text; } } + class ConnectAction implements ActionListener { private String textc; - ConnectAction() { - } public void actionPerformed(ActionEvent event) { - textc = txt2.getText(); + String ip = text3.getText(); + connect.setEnabled(false); + disconnect.setEnabled(true); + try { + Caller caller = new Caller(ip); + connection = caller.call(); + if (connection != null) { + comt = new CommandListenerThread(connection); + comt.addObserver(ChatWindow.this); + mess.append("connected"); + comt.start(); + + } else { + mess.append("IP: " + ip + " inaccessible"); + + } + }catch (IOException e){} //connect } } @@ -150,17 +174,20 @@ class DisconnectAction implements ActionListener { } public void actionPerformed(ActionEvent event) { - // Disconnect + sendb.setEnabled(false); + disconnect.setEnabled(false); + connect.setEnabled(true); + apply.setEnabled(true); } } SendAction send = new SendAction(); sendb.addActionListener(send); ApplyAction applyact = new ApplyAction(); - but1.addActionListener(applyact); + apply.addActionListener(applyact); ConnectAction connectact = new ConnectAction(); - but2.addActionListener(connectact); + connect.addActionListener(connectact); DisconnectAction disconnectact = new DisconnectAction(); - but3.addActionListener(disconnectact); + disconnect.addActionListener(disconnectact); fieldmess.add(mess); final JScrollPane scrollPane = new JScrollPane(mess); @@ -180,18 +207,31 @@ public void actionPerformed(ActionEvent event) { this.setDefaultCloseOperation(EXIT_ON_CLOSE); } - public static void main(String[] args) { + public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { - new ChatWindow(); + try { + new ChatWindow(); + }catch (IOException e){} } }); } @Override public void update(Observable o, Object arg) { - + sendb.setEnabled(true); + connect.setEnabled(false); + NickCommand c; + MessageCommand mescom; + if(arg instanceof NickCommand){ + c = (NickCommand) arg; + textmess.append(c.intoString()+"\n"); + } + if(arg instanceof MessageCommand){ + mescom = (MessageCommand) arg; + mess.append("Message: "+mescom.getMessagetext()+"\n"); + } } } diff --git a/src/Command.java b/src/Command.java index 95cadf9..a9fc76c 100644 --- a/src/Command.java +++ b/src/Command.java @@ -5,4 +5,26 @@ public class Command { public Command(CommandTypes commandTypes) { this.commandTypes = commandTypes; } + + public enum CommandTypes { + disconnect, + accept, + reject, + nickname, + message + } + public static Command createCommand(String s){ + if(s.contains("Accepted")) return new Command(CommandTypes.accept); + if(s.contains("Rejected")) return new Command(CommandTypes.reject); + if(s.contains("ChatApp 2015")) return new NickCommand(CommandTypes.nickname); + if(s.contains("Disconnect")) return new Command(CommandTypes.disconnect); + if(s.contains("Message")) return new MessageCommand(CommandTypes.message); + else return null; + } + + public CommandTypes getType(){ + return commandTypes; + } + + } diff --git a/src/CommandListenerThread.java b/src/CommandListenerThread.java index 334d176..85d726a 100644 --- a/src/CommandListenerThread.java +++ b/src/CommandListenerThread.java @@ -34,12 +34,11 @@ public Command getLastCommand() { @Override public void run() { - while (isDisconnected() != true) { + this.addObserver(ChatWindow.observer); + while (!isDisconnected()) { synchronized (this) { try { this.lastCommand = connection.recieve(); - notifyObservers(connection.recieve()); - this.addObserver(ChatWindow.observer); setChanged(); this.notifyObservers(lastCommand); } catch (IOException e) { diff --git a/src/CommandTypes.java b/src/CommandTypes.java deleted file mode 100644 index 182cd83..0000000 --- a/src/CommandTypes.java +++ /dev/null @@ -1,8 +0,0 @@ - -public enum CommandTypes { - disconnect, - accept, - reject, - nickname, - message, -} diff --git a/src/Connection.java b/src/Connection.java index b282839..cfa73d9 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -8,7 +8,6 @@ public class Connection{ private OutputStream out; private DataOutputStream sout; private DataInputStream reader; - private CommandTypes lastCommand; public Connection(Socket s, String nick) throws IOException{ this.s = s; @@ -52,9 +51,6 @@ public void reject() throws IOException { out.flush(); } - public CommandTypes getLastCommand() { - return lastCommand; - } public void testRecieve() throws IOException { PrintWriter w = new PrintWriter(s.getOutputStream()); @@ -69,11 +65,7 @@ public void testRecieve() throws IOException { public Command recieve() throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); String s = reader.readLine(); - if(s.contains("Accepted")) return new Command(CommandTypes.accept); - if(s.contains("Rejected")) return new Command(CommandTypes.reject); - if(s.contains("ChatApp 2015")) return new NickCommand(CommandTypes.nickname); - if(s.contains("Disconnect")) return new Command(CommandTypes.disconnect); - if(s.contains("Message")) return new MessageCommand(CommandTypes.message); - else return null; + Command command = Command.createCommand(s); + return command; } } diff --git a/src/MessageCommand.java b/src/MessageCommand.java index a13be83..86ac141 100644 --- a/src/MessageCommand.java +++ b/src/MessageCommand.java @@ -8,6 +8,14 @@ public MessageCommand(CommandTypes type) { public MessageCommand(CommandTypes type, String messagetext) { super(type); + this.setMessagetext(messagetext) ; + } + + public String getMessagetext() { + return messagetext; + } + + public void setMessagetext(String messagetext) { this.messagetext = messagetext; } } diff --git a/src/NickCommand.java b/src/NickCommand.java index a074cf4..a941084 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -10,4 +10,8 @@ public NickCommand(CommandTypes ctp, String nick) { super(ctp); this.nick = nick; } + public String intoString() { + String s = "Connected to: " + this.nick + "\n"; + return s; + } } diff --git a/src/Protocol.java b/src/Protocol.java index 2e85ac3..1cc37a4 100644 --- a/src/Protocol.java +++ b/src/Protocol.java @@ -2,5 +2,6 @@ public class Protocol { public static final int PORT =28411; public static boolean isBusy; - public static String nickname; + public static String nickname = "default"; + public static String distNick; } From 02be1861475fce63947ceeaadf22f60069233e36 Mon Sep 17 00:00:00 2001 From: Jojorr Date: Sun, 29 Nov 2015 13:18:23 +0200 Subject: [PATCH 30/50] still broken, don`t know why --- src/ChatWindow.java | 15 ++++++++------- src/Connection.java | 26 +++++++++++++------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/ChatWindow.java b/src/ChatWindow.java index ede61ef..1c28671 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -120,13 +120,14 @@ class SendAction implements ActionListener { public void actionPerformed(ActionEvent event) { message = textmess.getText(); try { - //if(comt!=null){ + if(comt!=null) { + mess.append("Message:\n" + message + "\n"); comt.getConnection().sendMessage(message); - //else{ - //callt.getConnection().sendMessage(message); - //} - } catch (IOException e1) { - e1.printStackTrace(); + }else{ + callt.getConnection().sendMessage(message); + } + } catch (IOException e) { + e.printStackTrace(); } textmess.setText(""); } @@ -165,7 +166,7 @@ public void actionPerformed(ActionEvent event) { } }catch (IOException e){} - //connect + } } class DisconnectAction implements ActionListener { diff --git a/src/Connection.java b/src/Connection.java index cfa73d9..8332bc8 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -6,49 +6,49 @@ public class Connection{ private Socket s; private String nick; private OutputStream out; - private DataOutputStream sout; + private PrintWriter sout; private DataInputStream reader; public Connection(Socket s, String nick) throws IOException{ this.s = s; out = this.s.getOutputStream(); - sout = new DataOutputStream(out); + sout = new PrintWriter(out,true); reader = new DataInputStream(this.s.getInputStream()); this.nick = nick; } public void sendMessage(String message) throws IOException{ - sout.write(new StringBuilder("Message\n").append(message).append("\n").toString().getBytes()); - out.flush(); + sout.print("Message\n"+message+"\n"); + sout.flush(); } public void disconnect() throws IOException{ - sout.write(new StringBuilder("Disconnect\n").toString().getBytes()); + sout.print("Disconnect\n"); out.close(); reader.close(); s.close(); } public void sendNickHello(String nick) throws IOException { - sout.write(new StringBuilder("ChatApp 2015 user ").append(nick).append("\n").toString().getBytes()); - out.flush(); + sout.print("ChatApp 2015 user "+nick+"\n"); + sout.flush(); } public void sendNickBusy(String nick) throws IOException { if(s.isConnected()){ - sout.write(new StringBuilder("ChatApp 2015 user ").append(nick).append(" busy\n").toString().getBytes()); - out.flush(); + sout.print("ChatApp 2015 user "+nick+" busy\n"); + sout.flush(); } } public void accept() throws IOException{ - sout.write(new StringBuilder("Accepted\n").toString().getBytes()); - out.flush(); + sout.print("Accepted\n"); + sout.flush(); } public void reject() throws IOException { - sout.write(new StringBuilder("Rejected\n").toString().getBytes()); - out.flush(); + sout.print("Rejected\n"); + sout.flush(); } From 9afb2430f1ff85b56c13d685b4ff13bcda29af0d Mon Sep 17 00:00:00 2001 From: Nicholas Date: Wed, 2 Dec 2015 22:39:07 +0200 Subject: [PATCH 31/50] Add ServerConnection and small fixes --- src/CallListener.java | 14 +-- src/CallListenerThread.java | 8 +- src/Caller.java | 2 +- src/ChatWindow.java | 2 +- src/Connection.java | 27 ++--- src/Protocol.java | 4 +- src/ServerConnection.java | 229 ++++++++++++++++++++++++++++++++++++ 7 files changed, 254 insertions(+), 32 deletions(-) create mode 100644 src/ServerConnection.java diff --git a/src/CallListener.java b/src/CallListener.java index 60f7100..03742c1 100644 --- a/src/CallListener.java +++ b/src/CallListener.java @@ -2,10 +2,8 @@ import java.net.*; public class CallListener { - private String localNick = "default"; private String remoteNick; private Boolean isBusy; - private static final int localPort = 28411; private final static String IP = "localhost"; private SocketAddress remoteAddress; private SocketAddress localAddress; @@ -13,16 +11,16 @@ public class CallListener { public CallListener(String userName, String remoteAdress){ - localNick = userName; - remoteAddress = new InetSocketAddress(IP, localPort); + Protocol.localNick = userName; + remoteAddress = new InetSocketAddress(IP, Protocol.PORT); } public Connection getConnection() throws IOException{ if (StatusBusy()){ return null; }else{ - serverSocket = new ServerSocket(localPort); - return new Connection(serverSocket.accept(), localNick); + serverSocket = new ServerSocket(Protocol.PORT); + return new Connection(serverSocket.accept()); } } @@ -31,7 +29,7 @@ public SocketAddress getListenAddress() throws IOException{ } public String getLocalNick() { - return localNick; + return Protocol.localNick; } public SocketAddress getLocalAddress(){ @@ -55,7 +53,7 @@ public void setRemoteAddress(SocketAddress remoteAddress){ } public int getLocalPort(){ - return localPort; + return Protocol.PORT; } public String getRemoteNick() { diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index ac6f417..9232738 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -3,8 +3,6 @@ import java.net.*; public class CallListenerThread extends Observable implements Runnable { - private CallListener callListener; - private String nick; private Socket socket; private ServerSocket serverSocket; private volatile boolean disconnected; @@ -26,7 +24,7 @@ public void stop() { public Connection getConnection(){ if(socket!=null){ try { - return new Connection(socket, nick); + return new Connection(socket); } catch (IOException e) { e.printStackTrace(); } @@ -40,12 +38,12 @@ public void run(){ serverSocket = new ServerSocket(Protocol.PORT); while (true){ socket = serverSocket.accept(); - Connection connection = new Connection(socket, nick); + Connection connection = new Connection(socket); if (connection!=null) { CommandListenerThread clt = new CommandListenerThread(connection); clt.addObserver(ChatWindow.observer); clt.start(); - connection.sendNickHello(Protocol.nickname); + connection.sendNickHello(Protocol.localNick); } } } catch (IOException e) { diff --git a/src/Caller.java b/src/Caller.java index 07d34c7..29931af 100644 --- a/src/Caller.java +++ b/src/Caller.java @@ -14,7 +14,7 @@ public Caller(String ip) throws IOException{ } public Connection call() throws IOException { - Connection c = new Connection(new Socket(IP,port),Protocol.nickname); + Connection c = new Connection(new Socket(IP,port)); c.sendNickHello(nick); return c; } diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 1c28671..fe77de7 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -140,7 +140,7 @@ class ApplyAction implements ActionListener { public void actionPerformed(ActionEvent event) { text = text1.getText(); - Protocol.nickname = text; + Protocol.localNick = text; } } diff --git a/src/Connection.java b/src/Connection.java index 8332bc8..91396a3 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -3,18 +3,16 @@ import java.util.Scanner; public class Connection{ - private Socket s; - private String nick; + private Socket socket; private OutputStream out; private PrintWriter sout; - private DataInputStream reader; + private BufferedReader reader; - public Connection(Socket s, String nick) throws IOException{ - this.s = s; - out = this.s.getOutputStream(); + public Connection(Socket s) throws IOException{ + this.socket = s; + out = socket.getOutputStream(); sout = new PrintWriter(out,true); - reader = new DataInputStream(this.s.getInputStream()); - this.nick = nick; + reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); } public void sendMessage(String message) throws IOException{ @@ -26,7 +24,7 @@ public void disconnect() throws IOException{ sout.print("Disconnect\n"); out.close(); reader.close(); - s.close(); + socket.close(); } public void sendNickHello(String nick) throws IOException { @@ -35,7 +33,7 @@ public void sendNickHello(String nick) throws IOException { } public void sendNickBusy(String nick) throws IOException { - if(s.isConnected()){ + if(socket.isConnected()){ sout.print("ChatApp 2015 user "+nick+" busy\n"); sout.flush(); } @@ -51,19 +49,18 @@ public void reject() throws IOException { sout.flush(); } - public void testRecieve() throws IOException { - PrintWriter w = new PrintWriter(s.getOutputStream()); - BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); + PrintWriter w = new PrintWriter(socket.getOutputStream()); + BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); String string; - Scanner r = new Scanner(new InputStreamReader(s.getInputStream(),"UTF-8")); + Scanner r = new Scanner(new InputStreamReader(socket.getInputStream(),"UTF-8")); while(r.hasNextLine()) { System.out.println(r.nextLine()); } } public Command recieve() throws IOException { - BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); + BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); String s = reader.readLine(); Command command = Command.createCommand(s); return command; diff --git a/src/Protocol.java b/src/Protocol.java index 1cc37a4..c3f4bea 100644 --- a/src/Protocol.java +++ b/src/Protocol.java @@ -2,6 +2,6 @@ public class Protocol { public static final int PORT =28411; public static boolean isBusy; - public static String nickname = "default"; - public static String distNick; + public static String localNick = "default"; + public static String remoteNick; } diff --git a/src/ServerConnection.java b/src/ServerConnection.java new file mode 100644 index 0000000..678b58c --- /dev/null +++ b/src/ServerConnection.java @@ -0,0 +1,229 @@ +import java.sql.Connection; +import java.sql.*; +import java.util.*; + +public class ServerConnection { + private String serverAddress; + private Connection connection; + private Statement statement; + + public ServerConnection() { + + } + + public ServerConnection(String sAdress) { + this(sAdress, null); + } + + public ServerConnection(String sAdress, String nickname) { + if (nickname != null) + setLocalNick(nickname); + if (sAdress != null) { + setServerAddress(sAdress); + ConnectToServer(); + } + } + + public void ConnectToServer() { + if (isConnected()) + return; + assert (serverAddress != null && !serverAddress.trim().isEmpty()); + try { + connection = DriverManager.getConnection(serverAddress, "user", "password"); + statement = connection.createStatement(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public void DisconnectFromServer() { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + statement = null; + } + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + connection = null; + } + } + + public void goOnline() { + goOnline(28411); + } + + public void goOnline(int port) { + assert Protocol.localNick != null; + assert isConnected(); + String s = "INSERT INTO user (nick, ip, online, port) values ('" + Protocol.localNick + + "', SUBSTRING_INDEX(USER(),'@',-1), 1,'" + port + "');"; + try { + statement.executeUpdate(s); + } catch (SQLException sqlexception) { + boolean nick_impact = true; + try { + if (getIp(Protocol.localNick) != null) { + s = "UPDATE user set ip=SUBSTRING_INDEX(USER(),'@',-1), online=1, port=" + port + " WHERE nick='" + + Protocol.localNick + "';"; + nick_impact = true; + } + else { + s = "UPDATE user set nick='" + Protocol.localNick + "', online=1 WHERE ip=SUBSTRING_INDEX(USER(),'@',-1) AND port=" + + port + ";"; + nick_impact = false; + } + statement.executeUpdate(s); + } catch (SQLException sqlexception1) { + try { + if (nick_impact) + statement.execute("DELETE FROM user WHERE ip=SUBSTRING_INDEX(USER(),'@',-1) AND port=" + port + ";"); + else statement.execute("DELETE FROM user WHERE nick='" + Protocol.localNick + "';"); + statement.execute(s); + } catch (SQLException sqlexception2) { + sqlexception2.printStackTrace(); + } + sqlexception1.printStackTrace(); + } + } + } + + public void goOffline() { + assert Protocol.localNick != null; + assert isConnected(); + try { + statement.execute("INSERT INTO user (nick, ip, online) values ('" + Protocol.localNick + + "', SUBSTRING_INDEX(USER(),'@',-1), 0) ON DUPLICATE KEY UPDATE ip=VALUES(ip), online=VALUES(online);"); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public void setServerAddress(String serverAddress) { + if (serverAddress.equals(this.serverAddress)) + return; + boolean connected = isConnected(); + if (connected) { + goOffline(); + DisconnectFromServer(); + } + this.serverAddress = serverAddress; + if (connected) + ConnectToServer(); + } + + public void setLocalNick(String newNick) { + assert newNick != null; + newNick = ChangeNick(newNick); + if (newNick.equals(Protocol.localNick)) + return; + boolean online = false; + if (isConnected()) { + online = isNickOnline(Protocol.localNick); + if (online) + goOffline(); + } + Protocol.localNick = newNick; + if (online) + goOnline(); + } + + public String getIp(String nickname) { + assert isConnected(); + assert nickname != null; + nickname = ChangeNick(nickname); + ResultSet resultSet; + try { + resultSet = statement.executeQuery("SELECT ip FROM user WHERE nick='" + nickname + "'"); + if (!resultSet.next()) + return null; + return resultSet.getString(1); + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + + public int getPort(String nick) { + assert isConnected(); + assert nick != null; + nick = ChangeNick(nick); + ResultSet resultSet; + try { + resultSet = statement.executeQuery("SELECT port FROM user WHERE nick='" + nick + "'"); + if (!resultSet.next()) + return 0; + return resultSet.getInt(1); + } catch (SQLException e) { + e.printStackTrace(); + } + return 0; + } + + public String[] getAllNicks() { + assert isConnected(); + ResultSet resultSet; + ArrayList arrayList = new ArrayList<>(); + try { + resultSet = statement.executeQuery("SELECT nick FROM user;"); + while (resultSet.next()) { + String nick = resultSet.getString(1); + arrayList.add(nick); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return arrayList.toArray(new String[0]); + } + + public boolean isConnected() { + return statement != null; + } + + public boolean isNickOnline(String nickname) { + if (nickname == null) + return false; + assert isConnected(); + nickname = ChangeNick(nickname); + ResultSet resultSet; + try { + resultSet = statement.executeQuery("SELECT online FROM user WHERE nick='" + nickname + "'"); + if (!resultSet.next()) + return false; + return resultSet.getBoolean(1); + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } + + public static String ChangeNick(String s) { + return s.replaceAll("['\";]", "").replaceAll("\\s", ""); + } + + public static void main(String[] args) { + String locNick = "localNick"; + String remNick = "remoteNick"; + ServerConnection serverConnection = new ServerConnection(); + serverConnection.setServerAddress("jdbc:mysql://files.litvinov.in.ua/chatapp_server?characterEncoding=utf-8&useUnicode=true"); + serverConnection.ConnectToServer(); + assert serverConnection.isConnected(); + serverConnection.setLocalNick(locNick); + System.out.println("Before: " + serverConnection.isNickOnline(locNick)); + serverConnection.goOnline(); + System.out.println("After: " + serverConnection.isNickOnline(locNick)); + serverConnection.goOffline(); + System.out.println("After offline: " + serverConnection.isNickOnline(locNick)); + System.out.println("Another nick: " + serverConnection.isNickOnline(remNick)); + System.out.println("First ip: " + serverConnection.getIp(locNick)); + System.out.println("Second ip: " + serverConnection.getIp(remNick)); + System.out.println("First port: " + serverConnection.getPort(locNick)); + System.out.println("Second port: " + serverConnection.getPort(remNick)); + } + } From 35021307807b9fca923a13e980529a72a1688dfa Mon Sep 17 00:00:00 2001 From: MariyaKlimenko Date: Thu, 3 Dec 2015 00:02:08 +0200 Subject: [PATCH 32/50] For Friends MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавила список для друзей в форму, эксшнисенеры него и LinkedList для хранения в нем самих контактов + добавила класс Friend для списка контактов (добавила его в конец формочки, потому что гит не хочт мой новый класс пуллить) --- .gitignore | 3 + src/ChatWindow.java | 155 ++++++++++++++++++++++++++++++++++++++------ 2 files changed, 139 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 8a1baec..94b181e 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* +src/Main.java +src/ChatWindow.java +*.java diff --git a/src/ChatWindow.java b/src/ChatWindow.java index fe77de7..d0f7110 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -4,9 +4,10 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; -import java.net.Socket; import java.util.Observable; import java.util.Observer; +import java.util.LinkedList; + public class ChatWindow extends JFrame implements Observer { private CallListenerThread callt; @@ -18,6 +19,9 @@ public class ChatWindow extends JFrame implements Observer { final JPanel field1 = new JPanel(); final JPanel field2 = new JPanel(); final JPanel field3 = new JPanel(); + final JPanel messages = new JPanel();// new + final JPanel friendsfield = new JPanel();// new + final JPanel bigfield = new JPanel();// new final JPanel fieldmess = new JPanel(); final JPanel field = new JPanel(); final JPanel messArea = new JPanel(); @@ -36,6 +40,8 @@ public class ChatWindow extends JFrame implements Observer { final JTextArea textmess = new JTextArea(); final JTextArea mess = new JTextArea(); + final JLabel txtfriends = new JLabel("Your friends:");// new + public ChatWindow() throws IOException { observer = this; this.setSize(650, 500); @@ -45,8 +51,80 @@ public ChatWindow() throws IOException { callt = new CallListenerThread(); callt.start(); + // import contacts to linked list "listfriends" + LinkedList listfriends = new LinkedList();// linked list of + // friends + DefaultListModel listModel = new DefaultListModel();// list of + // nicks of + // friends + // for form + JList list = new JList(listModel); + Friend fr = new Friend("unnamed", 6666); + Friend fr1 = new Friend("unnamed", 5555); + listfriends.add(fr); + listfriends.add(fr1); + listModel.addElement(fr.getNick()); + listModel.addElement(fr1.getNick()); + + list.setMaximumSize(new Dimension(150, 2500)); + list.setPreferredSize(new Dimension(150, 2500)); + list.setLayoutOrientation(JList.VERTICAL); + + JButton addButton = new JButton("Add"); + addButton.setFocusable(false); + addButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + Friend newfr = new Friend("newfr", 6666); + listfriends.add(newfr); + + listModel.addElement(newfr.getNick()); + int index = listModel.size() - 1; + list.setSelectedIndex(index); + list.ensureIndexIsVisible(index); + } + }); + JButton connectButton = new JButton("Connect"); + connectButton.setFocusable(false); + connectButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int index = list.getSelectedIndex(); + for (int i = 0; i <= listfriends.size(); i++) { + if (listfriends.get(i).getNick() == listModel + .getElementAt(index)) { + int Ip = listfriends.get(i).getIp();// ip for connection + break; + } + } + text2.setText(listModel.getElementAt(index)); + // need connect to Ip + } + }); + final JButton removeButton = new JButton("Remove"); + removeButton.setFocusable(false); + removeButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int index = list.getSelectedIndex(); + for (int i = 0; i <= listfriends.size(); i++) { + if (listfriends.get(i).getNick() == listModel + .getElementAt(index)) { + listfriends.remove(i);// remove from list of friends + break; + } + } + listModel.remove(list.getSelectedIndex());// remove from list of + // nicks + } + }); + + removeButton.setMaximumSize(new Dimension(100, 25)); + addButton.setMaximumSize(new Dimension(100, 25)); + connectButton.setMaximumSize(new Dimension(100, 25)); + + friendsfield.setLayout(new BoxLayout(friendsfield, BoxLayout.Y_AXIS)); + bigfield.setLayout(new BoxLayout(bigfield, BoxLayout.X_AXIS)); + messages.setLayout(new BoxLayout(messages, BoxLayout.Y_AXIS)); messArea.setLayout(new BoxLayout(messArea, BoxLayout.X_AXIS)); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); field.setLayout(new BoxLayout(field, BoxLayout.X_AXIS)); @@ -54,7 +132,15 @@ public ChatWindow() throws IOException { field1.setLayout(new BoxLayout(field1, BoxLayout.Y_AXIS)); field2.setLayout(new BoxLayout(field2, BoxLayout.Y_AXIS)); field3.setLayout(new BoxLayout(field3, BoxLayout.Y_AXIS)); - + txtfriends.setAlignmentX(JComponent.CENTER_ALIGNMENT); + txtfriends.setAlignmentY(JComponent.BOTTOM_ALIGNMENT); + list.setAlignmentY(JComponent.TOP_ALIGNMENT); + connectButton.setAlignmentY(JComponent.BOTTOM_ALIGNMENT); + addButton.setAlignmentY(JComponent.BOTTOM_ALIGNMENT); + removeButton.setAlignmentY(JComponent.BOTTOM_ALIGNMENT); + connectButton.setAlignmentX(JComponent.CENTER_ALIGNMENT); + addButton.setAlignmentX(JComponent.CENTER_ALIGNMENT); + removeButton.setAlignmentX(JComponent.CENTER_ALIGNMENT); textmess.setLineWrap(true); mess.setCaretPosition(0); mess.setLineWrap(true); @@ -100,6 +186,8 @@ public ChatWindow() throws IOException { messArea.add(textmess); messArea.add(sendb); + friendsfield.setBackground(new Color(220, 243, 246)); + bigfield.setBackground(new Color(220, 243, 246)); panel.setBackground(new Color(220, 243, 246)); field1.setBackground(new Color(220, 243, 246)); field2.setBackground(new Color(220, 243, 246)); @@ -107,6 +195,9 @@ public ChatWindow() throws IOException { messArea.setBackground(new Color(220, 243, 246)); mess.setBackground(new Color(237, 245, 246)); + connectButton.setBackground(new Color(116, 199, 209)); + addButton.setBackground(new Color(116, 199, 209)); + removeButton.setBackground(new Color(116, 199, 209)); apply.setBackground(new Color(116, 199, 209)); connect.setBackground(new Color(116, 199, 209)); disconnect.setBackground(new Color(116, 199, 209)); @@ -115,15 +206,13 @@ public ChatWindow() throws IOException { class SendAction implements ActionListener { private String message; - - public void actionPerformed(ActionEvent event) { message = textmess.getText(); try { - if(comt!=null) { + if (comt != null) { mess.append("Message:\n" + message + "\n"); comt.getConnection().sendMessage(message); - }else{ + } else { callt.getConnection().sendMessage(message); } } catch (IOException e) { @@ -136,8 +225,6 @@ public void actionPerformed(ActionEvent event) { class ApplyAction implements ActionListener { private String text; - - public void actionPerformed(ActionEvent event) { text = text1.getText(); Protocol.localNick = text; @@ -147,7 +234,6 @@ public void actionPerformed(ActionEvent event) { class ConnectAction implements ActionListener { private String textc; - public void actionPerformed(ActionEvent event) { String ip = text3.getText(); connect.setEnabled(false); @@ -165,7 +251,8 @@ public void actionPerformed(ActionEvent event) { mess.append("IP: " + ip + " inaccessible"); } - }catch (IOException e){} + } catch (IOException e) { + } } } @@ -190,17 +277,26 @@ public void actionPerformed(ActionEvent event) { DisconnectAction disconnectact = new DisconnectAction(); disconnect.addActionListener(disconnectact); + friendsfield.add(txtfriends); + friendsfield.add(list); + friendsfield.add(connectButton); + friendsfield.add(addButton); + friendsfield.add(removeButton); fieldmess.add(mess); final JScrollPane scrollPane = new JScrollPane(mess); fieldmess.add(scrollPane); - scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + scrollPane + .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); field.add(field1); field.add(field2); field.add(field3); panel.add(field); - panel.add(fieldmess); - panel.add(messArea); + messages.add(fieldmess); + messages.add(messArea); + bigfield.add(messages); + bigfield.add(friendsfield); + panel.add(bigfield); this.add(panel); this.setVisible(true); @@ -208,14 +304,15 @@ public void actionPerformed(ActionEvent event) { this.setDefaultCloseOperation(EXIT_ON_CLOSE); } - public static void main(String[] args) { + public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { new ChatWindow(); - }catch (IOException e){} + } catch (IOException e) { + } } }); } @@ -226,13 +323,33 @@ public void update(Observable o, Object arg) { connect.setEnabled(false); NickCommand c; MessageCommand mescom; - if(arg instanceof NickCommand){ + if (arg instanceof NickCommand) { c = (NickCommand) arg; - textmess.append(c.intoString()+"\n"); + textmess.append(c.intoString() + "\n"); } - if(arg instanceof MessageCommand){ + if (arg instanceof MessageCommand) { mescom = (MessageCommand) arg; - mess.append("Message: "+mescom.getMessagetext()+"\n"); + mess.append("Message: " + mescom.getMessagetext() + "\n"); } } } +class Friend { + public String nick; + public int ip; + + public Friend(String n ,int i){ + this.nick = n; + this.ip = i; + } + void set(String n ,int i){ + this.nick = n; + this.ip = i; + } + String getNick(){ + return nick; + } + + int getIp(){ + return ip; + } +} From be2d7cd9d07156738ac24ca03c0c76444228884f Mon Sep 17 00:00:00 2001 From: MariyaKlimenko Date: Thu, 3 Dec 2015 00:16:36 +0200 Subject: [PATCH 33/50] . --- src/ChatWindow.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ChatWindow.java b/src/ChatWindow.java index d0f7110..63639e6 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -332,6 +332,8 @@ public void update(Observable o, Object arg) { mess.append("Message: " + mescom.getMessagetext() + "\n"); } } + + } class Friend { public String nick; From 08cba74e0f2f136b10398d537d0743cf6be3f1bd Mon Sep 17 00:00:00 2001 From: MariyaKlimenko Date: Thu, 3 Dec 2015 00:21:40 +0200 Subject: [PATCH 34/50] . --- .gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitignore b/.gitignore index 94b181e..5505cee 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,4 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* -src/Main.java -src/ChatWindow.java *.java From 1a2181044b9ac626f24a4f701e9af9e4967eb177 Mon Sep 17 00:00:00 2001 From: MariyaKlimenko Date: Thu, 3 Dec 2015 00:23:31 +0200 Subject: [PATCH 35/50] . --- .gitignore | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.gitignore b/.gitignore index 5505cee..c0707ae 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,3 @@ *.jar *.war *.ear - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* -*.java From 6060bcadfbe2a2393e76201d4194aca624170b44 Mon Sep 17 00:00:00 2001 From: Jojorr Date: Sun, 6 Dec 2015 14:45:08 +0200 Subject: [PATCH 36/50] Finally working chat, still should make output formatted properly --- src/CallListener.java | 17 ++- src/CallListenerThread.java | 19 ++- src/Caller.java | 31 +---- src/ChatWindow.java | 170 ++++++++++++++++++++++---- src/Command.java | 4 +- src/Connection.java | 35 +++--- src/MessageCommand.java | 2 +- src/NickCommand.java | 4 +- src/Protocol.java | 5 +- src/ServerConnection.java | 229 ++++++++++++++++++++++++++++++++++++ 10 files changed, 424 insertions(+), 92 deletions(-) create mode 100644 src/ServerConnection.java diff --git a/src/CallListener.java b/src/CallListener.java index 60f7100..34e3668 100644 --- a/src/CallListener.java +++ b/src/CallListener.java @@ -2,27 +2,24 @@ import java.net.*; public class CallListener { - private String localNick = "default"; private String remoteNick; private Boolean isBusy; - private static final int localPort = 28411; - private final static String IP = "localhost"; + //private final static String IP = "localhost"; private SocketAddress remoteAddress; private SocketAddress localAddress; private ServerSocket serverSocket; - public CallListener(String userName, String remoteAdress){ - localNick = userName; - remoteAddress = new InetSocketAddress(IP, localPort); + public CallListener(){ + setStatus(false); } public Connection getConnection() throws IOException{ if (StatusBusy()){ return null; }else{ - serverSocket = new ServerSocket(localPort); - return new Connection(serverSocket.accept(), localNick); + serverSocket = new ServerSocket(Protocol.PORT); + return new Connection(serverSocket.accept()); } } @@ -31,7 +28,7 @@ public SocketAddress getListenAddress() throws IOException{ } public String getLocalNick() { - return localNick; + return Protocol.localNick; } public SocketAddress getLocalAddress(){ @@ -55,7 +52,7 @@ public void setRemoteAddress(SocketAddress remoteAddress){ } public int getLocalPort(){ - return localPort; + return Protocol.PORT; } public String getRemoteNick() { diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index ac6f417..87f6b4c 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -3,12 +3,11 @@ import java.net.*; public class CallListenerThread extends Observable implements Runnable { - private CallListener callListener; - private String nick; private Socket socket; - private ServerSocket serverSocket; + // private ServerSocket serverSocket; private volatile boolean disconnected; - + private CallListener callListener; + private Connection connection; public void start() { this.disconnected = false; Thread t = new Thread(this); @@ -26,7 +25,7 @@ public void stop() { public Connection getConnection(){ if(socket!=null){ try { - return new Connection(socket, nick); + return new Connection(socket); } catch (IOException e) { e.printStackTrace(); } @@ -37,15 +36,15 @@ public Connection getConnection(){ @Override public void run(){ try { - serverSocket = new ServerSocket(Protocol.PORT); + //serverSocket = new ServerSocket(Protocol.PORT); + callListener = new CallListener(); while (true){ - socket = serverSocket.accept(); - Connection connection = new Connection(socket, nick); - if (connection!=null) { + connection = callListener.getConnection(); + if (connection.getSocket()!=null) { CommandListenerThread clt = new CommandListenerThread(connection); clt.addObserver(ChatWindow.observer); clt.start(); - connection.sendNickHello(Protocol.nickname); + connection.sendNickHello(Protocol.localNick); } } } catch (IOException e) { diff --git a/src/Caller.java b/src/Caller.java index 07d34c7..2a58bfb 100644 --- a/src/Caller.java +++ b/src/Caller.java @@ -3,39 +3,20 @@ public class Caller { private Socket s; - private String nick; + /*private String nick; private final static int port = 28411; private String IP; - private String distNick; + private String distNick;*/ - public Caller(String ip) throws IOException{ - this.IP = ip; - s = new Socket(IP,port); + public Caller() throws IOException{ + s = new Socket(Protocol.IP,Protocol.PORT); } public Connection call() throws IOException { - Connection c = new Connection(new Socket(IP,port),Protocol.nickname); - c.sendNickHello(nick); + Connection c = new Connection(s); + c.sendNickHello(Protocol.localNick); return c; } - public String getNick() { - return nick; - } - - public void setNick(String nick) { - this.nick = nick; - } - - public int getPort() { - return port; - } - - public String getDistNick() { - return distNick; - } - public void setDistNick(String distNick) { - this.distNick = distNick; - } } diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 1c28671..6cbf95f 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -4,9 +4,10 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; -import java.net.Socket; import java.util.Observable; import java.util.Observer; +import java.util.LinkedList; + public class ChatWindow extends JFrame implements Observer { private CallListenerThread callt; @@ -18,6 +19,9 @@ public class ChatWindow extends JFrame implements Observer { final JPanel field1 = new JPanel(); final JPanel field2 = new JPanel(); final JPanel field3 = new JPanel(); + final JPanel messages = new JPanel();// new + final JPanel friendsfield = new JPanel();// new + final JPanel bigfield = new JPanel();// new final JPanel fieldmess = new JPanel(); final JPanel field = new JPanel(); final JPanel messArea = new JPanel(); @@ -36,6 +40,8 @@ public class ChatWindow extends JFrame implements Observer { final JTextArea textmess = new JTextArea(); final JTextArea mess = new JTextArea(); + final JLabel txtfriends = new JLabel("Your friends:");// new + public ChatWindow() throws IOException { observer = this; this.setSize(650, 500); @@ -45,8 +51,80 @@ public ChatWindow() throws IOException { callt = new CallListenerThread(); callt.start(); + // import contacts to linked list "listfriends" + LinkedList listfriends = new LinkedList();// linked list of + // friends + DefaultListModel listModel = new DefaultListModel();// list of + // nicks of + // friends + // for form + JList list = new JList(listModel); + Friend fr = new Friend("unnamed", 6666); + Friend fr1 = new Friend("unnamed", 5555); + listfriends.add(fr); + listfriends.add(fr1); + listModel.addElement(fr.getNick()); + listModel.addElement(fr1.getNick()); + + list.setMaximumSize(new Dimension(150, 2500)); + list.setPreferredSize(new Dimension(150, 2500)); + list.setLayoutOrientation(JList.VERTICAL); + + JButton addButton = new JButton("Add"); + addButton.setFocusable(false); + addButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + Friend newfr = new Friend("newfr", 6666); + listfriends.add(newfr); + + listModel.addElement(newfr.getNick()); + int index = listModel.size() - 1; + list.setSelectedIndex(index); + list.ensureIndexIsVisible(index); + } + }); + + JButton connectButton = new JButton("Connect"); + connectButton.setFocusable(false); + connectButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int index = list.getSelectedIndex(); + for (int i = 0; i <= listfriends.size(); i++) { + if (listfriends.get(i).getNick() == listModel + .getElementAt(index)) { + int Ip = listfriends.get(i).getIp();// ip for connection + break; + } + } + text2.setText(listModel.getElementAt(index)); + // need connect to Ip + } + }); + + final JButton removeButton = new JButton("Remove"); + removeButton.setFocusable(false); + removeButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int index = list.getSelectedIndex(); + for (int i = 0; i <= listfriends.size(); i++) { + if (listfriends.get(i).getNick() == listModel + .getElementAt(index)) { + listfriends.remove(i);// remove from list of friends + break; + } + } + listModel.remove(list.getSelectedIndex());// remove from list of + // nicks + } + }); + removeButton.setMaximumSize(new Dimension(100, 25)); + addButton.setMaximumSize(new Dimension(100, 25)); + connectButton.setMaximumSize(new Dimension(100, 25)); + friendsfield.setLayout(new BoxLayout(friendsfield, BoxLayout.Y_AXIS)); + bigfield.setLayout(new BoxLayout(bigfield, BoxLayout.X_AXIS)); + messages.setLayout(new BoxLayout(messages, BoxLayout.Y_AXIS)); messArea.setLayout(new BoxLayout(messArea, BoxLayout.X_AXIS)); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); field.setLayout(new BoxLayout(field, BoxLayout.X_AXIS)); @@ -54,7 +132,15 @@ public ChatWindow() throws IOException { field1.setLayout(new BoxLayout(field1, BoxLayout.Y_AXIS)); field2.setLayout(new BoxLayout(field2, BoxLayout.Y_AXIS)); field3.setLayout(new BoxLayout(field3, BoxLayout.Y_AXIS)); - + txtfriends.setAlignmentX(JComponent.CENTER_ALIGNMENT); + txtfriends.setAlignmentY(JComponent.BOTTOM_ALIGNMENT); + list.setAlignmentY(JComponent.TOP_ALIGNMENT); + connectButton.setAlignmentY(JComponent.BOTTOM_ALIGNMENT); + addButton.setAlignmentY(JComponent.BOTTOM_ALIGNMENT); + removeButton.setAlignmentY(JComponent.BOTTOM_ALIGNMENT); + connectButton.setAlignmentX(JComponent.CENTER_ALIGNMENT); + addButton.setAlignmentX(JComponent.CENTER_ALIGNMENT); + removeButton.setAlignmentX(JComponent.CENTER_ALIGNMENT); textmess.setLineWrap(true); mess.setCaretPosition(0); mess.setLineWrap(true); @@ -100,6 +186,8 @@ public ChatWindow() throws IOException { messArea.add(textmess); messArea.add(sendb); + friendsfield.setBackground(new Color(220, 243, 246)); + bigfield.setBackground(new Color(220, 243, 246)); panel.setBackground(new Color(220, 243, 246)); field1.setBackground(new Color(220, 243, 246)); field2.setBackground(new Color(220, 243, 246)); @@ -107,6 +195,9 @@ public ChatWindow() throws IOException { messArea.setBackground(new Color(220, 243, 246)); mess.setBackground(new Color(237, 245, 246)); + connectButton.setBackground(new Color(116, 199, 209)); + addButton.setBackground(new Color(116, 199, 209)); + removeButton.setBackground(new Color(116, 199, 209)); apply.setBackground(new Color(116, 199, 209)); connect.setBackground(new Color(116, 199, 209)); disconnect.setBackground(new Color(116, 199, 209)); @@ -115,15 +206,13 @@ public ChatWindow() throws IOException { class SendAction implements ActionListener { private String message; - - public void actionPerformed(ActionEvent event) { message = textmess.getText(); try { - if(comt!=null) { + if (comt != null) { mess.append("Message:\n" + message + "\n"); comt.getConnection().sendMessage(message); - }else{ + } else { callt.getConnection().sendMessage(message); } } catch (IOException e) { @@ -136,36 +225,35 @@ public void actionPerformed(ActionEvent event) { class ApplyAction implements ActionListener { private String text; - - public void actionPerformed(ActionEvent event) { text = text1.getText(); - Protocol.nickname = text; + Protocol.localNick = text; } } class ConnectAction implements ActionListener { private String textc; - public void actionPerformed(ActionEvent event) { - String ip = text3.getText(); + Protocol.IP = text3.getText(); connect.setEnabled(false); disconnect.setEnabled(true); try { - Caller caller = new Caller(ip); + Caller caller = new Caller(); connection = caller.call(); if (connection != null) { comt = new CommandListenerThread(connection); comt.addObserver(ChatWindow.this); - mess.append("connected"); + mess.append("connected to " + Protocol.IP); comt.start(); } else { - mess.append("IP: " + ip + " inaccessible"); + mess.append("IP: " + Protocol.IP + " inaccessible"); } - }catch (IOException e){} + } catch (IOException e) { + e.printStackTrace(); + } } } @@ -175,7 +263,7 @@ class DisconnectAction implements ActionListener { } public void actionPerformed(ActionEvent event) { - sendb.setEnabled(false); + disconnect.setEnabled(false); connect.setEnabled(true); apply.setEnabled(true); @@ -190,17 +278,26 @@ public void actionPerformed(ActionEvent event) { DisconnectAction disconnectact = new DisconnectAction(); disconnect.addActionListener(disconnectact); + friendsfield.add(txtfriends); + friendsfield.add(list); + friendsfield.add(connectButton); + friendsfield.add(addButton); + friendsfield.add(removeButton); fieldmess.add(mess); final JScrollPane scrollPane = new JScrollPane(mess); fieldmess.add(scrollPane); - scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + scrollPane + .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); field.add(field1); field.add(field2); field.add(field3); panel.add(field); - panel.add(fieldmess); - panel.add(messArea); + messages.add(fieldmess); + messages.add(messArea); + bigfield.add(messages); + bigfield.add(friendsfield); + panel.add(bigfield); this.add(panel); this.setVisible(true); @@ -208,14 +305,15 @@ public void actionPerformed(ActionEvent event) { this.setDefaultCloseOperation(EXIT_ON_CLOSE); } - public static void main(String[] args) { + public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { new ChatWindow(); - }catch (IOException e){} + } catch (IOException e) { + } } }); } @@ -226,13 +324,35 @@ public void update(Observable o, Object arg) { connect.setEnabled(false); NickCommand c; MessageCommand mescom; - if(arg instanceof NickCommand){ + if (arg instanceof NickCommand) { c = (NickCommand) arg; - textmess.append(c.intoString()+"\n"); + mess.append(c.intoString() + "\n"); } - if(arg instanceof MessageCommand){ + if (arg instanceof MessageCommand) { mescom = (MessageCommand) arg; - mess.append("Message: "+mescom.getMessagetext()+"\n"); + mess.append("Message: " + mescom.getMessagetext() + "\n"); } } + + +} +class Friend { + public String nick; + public int ip; + + public Friend(String n ,int i){ + this.nick = n; + this.ip = i; + } + void set(String n ,int i){ + this.nick = n; + this.ip = i; + } + String getNick(){ + return nick; + } + + int getIp(){ + return ip; + } } diff --git a/src/Command.java b/src/Command.java index a9fc76c..71d049c 100644 --- a/src/Command.java +++ b/src/Command.java @@ -16,9 +16,9 @@ public enum CommandTypes { public static Command createCommand(String s){ if(s.contains("Accepted")) return new Command(CommandTypes.accept); if(s.contains("Rejected")) return new Command(CommandTypes.reject); - if(s.contains("ChatApp 2015")) return new NickCommand(CommandTypes.nickname); + if(s.contains("ChatApp 2015")) return new NickCommand(CommandTypes.nickname,s); if(s.contains("Disconnect")) return new Command(CommandTypes.disconnect); - if(s.contains("Message")) return new MessageCommand(CommandTypes.message); + if(s.contains("Message")) return new MessageCommand(CommandTypes.message,s); else return null; } diff --git a/src/Connection.java b/src/Connection.java index 8332bc8..62c2b48 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -3,18 +3,16 @@ import java.util.Scanner; public class Connection{ - private Socket s; - private String nick; + private Socket socket; private OutputStream out; private PrintWriter sout; - private DataInputStream reader; + private BufferedReader reader; - public Connection(Socket s, String nick) throws IOException{ - this.s = s; - out = this.s.getOutputStream(); + public Connection(Socket s) throws IOException{ + this.socket = s; + out = socket.getOutputStream(); sout = new PrintWriter(out,true); - reader = new DataInputStream(this.s.getInputStream()); - this.nick = nick; + reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); } public void sendMessage(String message) throws IOException{ @@ -26,7 +24,7 @@ public void disconnect() throws IOException{ sout.print("Disconnect\n"); out.close(); reader.close(); - s.close(); + socket.close(); } public void sendNickHello(String nick) throws IOException { @@ -35,7 +33,7 @@ public void sendNickHello(String nick) throws IOException { } public void sendNickBusy(String nick) throws IOException { - if(s.isConnected()){ + if(socket.isConnected()){ sout.print("ChatApp 2015 user "+nick+" busy\n"); sout.flush(); } @@ -51,21 +49,26 @@ public void reject() throws IOException { sout.flush(); } - public void testRecieve() throws IOException { - PrintWriter w = new PrintWriter(s.getOutputStream()); - BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); + PrintWriter w = new PrintWriter(socket.getOutputStream()); + BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); String string; - Scanner r = new Scanner(new InputStreamReader(s.getInputStream(),"UTF-8")); + Scanner r = new Scanner(new InputStreamReader(socket.getInputStream(),"UTF-8")); while(r.hasNextLine()) { System.out.println(r.nextLine()); } } public Command recieve() throws IOException { - BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8")); - String s = reader.readLine(); + // BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); + String s= reader.readLine(); + if(s.contains("Message")){ + s+=reader.readLine(); + } Command command = Command.createCommand(s); return command; } + public Socket getSocket(){ + return socket; + } } diff --git a/src/MessageCommand.java b/src/MessageCommand.java index 86ac141..7698375 100644 --- a/src/MessageCommand.java +++ b/src/MessageCommand.java @@ -8,7 +8,7 @@ public MessageCommand(CommandTypes type) { public MessageCommand(CommandTypes type, String messagetext) { super(type); - this.setMessagetext(messagetext) ; + this.messagetext = messagetext ; } public String getMessagetext() { diff --git a/src/NickCommand.java b/src/NickCommand.java index a941084..31e940b 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -4,11 +4,13 @@ public class NickCommand extends Command{ public NickCommand(CommandTypes ctp) { super(ctp); + } public NickCommand(CommandTypes ctp, String nick) { super(ctp); - this.nick = nick; + String[] s1 = nick.split(" "); + this.nick = s1[3]; } public String intoString() { String s = "Connected to: " + this.nick + "\n"; diff --git a/src/Protocol.java b/src/Protocol.java index 1cc37a4..03bda67 100644 --- a/src/Protocol.java +++ b/src/Protocol.java @@ -2,6 +2,7 @@ public class Protocol { public static final int PORT =28411; public static boolean isBusy; - public static String nickname = "default"; - public static String distNick; + public static String localNick = "default"; + public static String remoteNick; + public static String IP ; } diff --git a/src/ServerConnection.java b/src/ServerConnection.java new file mode 100644 index 0000000..678b58c --- /dev/null +++ b/src/ServerConnection.java @@ -0,0 +1,229 @@ +import java.sql.Connection; +import java.sql.*; +import java.util.*; + +public class ServerConnection { + private String serverAddress; + private Connection connection; + private Statement statement; + + public ServerConnection() { + + } + + public ServerConnection(String sAdress) { + this(sAdress, null); + } + + public ServerConnection(String sAdress, String nickname) { + if (nickname != null) + setLocalNick(nickname); + if (sAdress != null) { + setServerAddress(sAdress); + ConnectToServer(); + } + } + + public void ConnectToServer() { + if (isConnected()) + return; + assert (serverAddress != null && !serverAddress.trim().isEmpty()); + try { + connection = DriverManager.getConnection(serverAddress, "user", "password"); + statement = connection.createStatement(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public void DisconnectFromServer() { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + statement = null; + } + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + connection = null; + } + } + + public void goOnline() { + goOnline(28411); + } + + public void goOnline(int port) { + assert Protocol.localNick != null; + assert isConnected(); + String s = "INSERT INTO user (nick, ip, online, port) values ('" + Protocol.localNick + + "', SUBSTRING_INDEX(USER(),'@',-1), 1,'" + port + "');"; + try { + statement.executeUpdate(s); + } catch (SQLException sqlexception) { + boolean nick_impact = true; + try { + if (getIp(Protocol.localNick) != null) { + s = "UPDATE user set ip=SUBSTRING_INDEX(USER(),'@',-1), online=1, port=" + port + " WHERE nick='" + + Protocol.localNick + "';"; + nick_impact = true; + } + else { + s = "UPDATE user set nick='" + Protocol.localNick + "', online=1 WHERE ip=SUBSTRING_INDEX(USER(),'@',-1) AND port=" + + port + ";"; + nick_impact = false; + } + statement.executeUpdate(s); + } catch (SQLException sqlexception1) { + try { + if (nick_impact) + statement.execute("DELETE FROM user WHERE ip=SUBSTRING_INDEX(USER(),'@',-1) AND port=" + port + ";"); + else statement.execute("DELETE FROM user WHERE nick='" + Protocol.localNick + "';"); + statement.execute(s); + } catch (SQLException sqlexception2) { + sqlexception2.printStackTrace(); + } + sqlexception1.printStackTrace(); + } + } + } + + public void goOffline() { + assert Protocol.localNick != null; + assert isConnected(); + try { + statement.execute("INSERT INTO user (nick, ip, online) values ('" + Protocol.localNick + + "', SUBSTRING_INDEX(USER(),'@',-1), 0) ON DUPLICATE KEY UPDATE ip=VALUES(ip), online=VALUES(online);"); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public void setServerAddress(String serverAddress) { + if (serverAddress.equals(this.serverAddress)) + return; + boolean connected = isConnected(); + if (connected) { + goOffline(); + DisconnectFromServer(); + } + this.serverAddress = serverAddress; + if (connected) + ConnectToServer(); + } + + public void setLocalNick(String newNick) { + assert newNick != null; + newNick = ChangeNick(newNick); + if (newNick.equals(Protocol.localNick)) + return; + boolean online = false; + if (isConnected()) { + online = isNickOnline(Protocol.localNick); + if (online) + goOffline(); + } + Protocol.localNick = newNick; + if (online) + goOnline(); + } + + public String getIp(String nickname) { + assert isConnected(); + assert nickname != null; + nickname = ChangeNick(nickname); + ResultSet resultSet; + try { + resultSet = statement.executeQuery("SELECT ip FROM user WHERE nick='" + nickname + "'"); + if (!resultSet.next()) + return null; + return resultSet.getString(1); + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + + public int getPort(String nick) { + assert isConnected(); + assert nick != null; + nick = ChangeNick(nick); + ResultSet resultSet; + try { + resultSet = statement.executeQuery("SELECT port FROM user WHERE nick='" + nick + "'"); + if (!resultSet.next()) + return 0; + return resultSet.getInt(1); + } catch (SQLException e) { + e.printStackTrace(); + } + return 0; + } + + public String[] getAllNicks() { + assert isConnected(); + ResultSet resultSet; + ArrayList arrayList = new ArrayList<>(); + try { + resultSet = statement.executeQuery("SELECT nick FROM user;"); + while (resultSet.next()) { + String nick = resultSet.getString(1); + arrayList.add(nick); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return arrayList.toArray(new String[0]); + } + + public boolean isConnected() { + return statement != null; + } + + public boolean isNickOnline(String nickname) { + if (nickname == null) + return false; + assert isConnected(); + nickname = ChangeNick(nickname); + ResultSet resultSet; + try { + resultSet = statement.executeQuery("SELECT online FROM user WHERE nick='" + nickname + "'"); + if (!resultSet.next()) + return false; + return resultSet.getBoolean(1); + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } + + public static String ChangeNick(String s) { + return s.replaceAll("['\";]", "").replaceAll("\\s", ""); + } + + public static void main(String[] args) { + String locNick = "localNick"; + String remNick = "remoteNick"; + ServerConnection serverConnection = new ServerConnection(); + serverConnection.setServerAddress("jdbc:mysql://files.litvinov.in.ua/chatapp_server?characterEncoding=utf-8&useUnicode=true"); + serverConnection.ConnectToServer(); + assert serverConnection.isConnected(); + serverConnection.setLocalNick(locNick); + System.out.println("Before: " + serverConnection.isNickOnline(locNick)); + serverConnection.goOnline(); + System.out.println("After: " + serverConnection.isNickOnline(locNick)); + serverConnection.goOffline(); + System.out.println("After offline: " + serverConnection.isNickOnline(locNick)); + System.out.println("Another nick: " + serverConnection.isNickOnline(remNick)); + System.out.println("First ip: " + serverConnection.getIp(locNick)); + System.out.println("Second ip: " + serverConnection.getIp(remNick)); + System.out.println("First port: " + serverConnection.getPort(locNick)); + System.out.println("Second port: " + serverConnection.getPort(remNick)); + } + } From 0060250d264d08133bde91fae75316cca378e341 Mon Sep 17 00:00:00 2001 From: Jojorr Date: Sun, 6 Dec 2015 17:19:09 +0200 Subject: [PATCH 37/50] added some methods --- src/ChatWindow.java | 8 +++----- src/NickCommand.java | 3 +++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 056e6d3..08d2a6c 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -245,11 +245,11 @@ public void actionPerformed(ActionEvent event) { if (connection != null) { comt = new CommandListenerThread(connection); comt.addObserver(ChatWindow.this); - mess.append("connected to " + Protocol.IP); + mess.append("Connected to " + Protocol.IP + "\n"); comt.start(); } else { - mess.append("IP: " + Protocol.IP + " inaccessible"); + mess.append("IP: " + Protocol.IP + " inaccessible\n"); } } catch (IOException e) { @@ -328,13 +328,11 @@ public void update(Observable o, Object arg) { MessageCommand mescom; if (arg instanceof NickCommand) { c = (NickCommand) arg; - mess.append(c.intoString() + "\n"); - } if (arg instanceof MessageCommand) { mescom = (MessageCommand) arg; - mess.append("Message: " + mescom.getMessagetext() + "\n"); + mess.append("Message:\n" + mescom.getMessagetext() + "\n"); } } diff --git a/src/NickCommand.java b/src/NickCommand.java index 31e940b..d35b7dd 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -16,4 +16,7 @@ public String intoString() { String s = "Connected to: " + this.nick + "\n"; return s; } + public String getNick(){ + return nick; + } } From 2a40010d2b0d74c01d9d5767a720c765be23afef Mon Sep 17 00:00:00 2001 From: Jojorr Date: Sun, 6 Dec 2015 20:59:48 +0200 Subject: [PATCH 38/50] Fixed output --- src/CallListenerThread.java | 1 - src/Caller.java | 6 ------ src/ChatWindow.java | 8 ++++---- src/Connection.java | 12 +----------- src/NickCommand.java | 2 +- 5 files changed, 6 insertions(+), 23 deletions(-) diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 1cf891d..87f6b4c 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -39,7 +39,6 @@ public void run(){ //serverSocket = new ServerSocket(Protocol.PORT); callListener = new CallListener(); while (true){ - connection = callListener.getConnection(); if (connection.getSocket()!=null) { CommandListenerThread clt = new CommandListenerThread(connection); diff --git a/src/Caller.java b/src/Caller.java index ab230df..d0ecb6c 100644 --- a/src/Caller.java +++ b/src/Caller.java @@ -3,20 +3,14 @@ public class Caller { private Socket s; - /*private String nick; - private final static int port = 28411; - private String IP; - private String distNick;*/ public Caller() throws IOException{ s = new Socket(Protocol.IP,Protocol.PORT); } public Connection call() throws IOException { - Connection c = new Connection(s); c.sendNickHello(Protocol.localNick); - return c; } diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 08d2a6c..4a6dfe0 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -211,10 +211,8 @@ public void actionPerformed(ActionEvent event) { message = textmess.getText(); try { if (comt != null) { - mess.append("Message:\n" + message + "\n"); + mess.append(Protocol.localNick + ": " + message + "\n"); comt.getConnection().sendMessage(message); - } else { - callt.getConnection().sendMessage(message); } } catch (IOException e) { e.printStackTrace(); @@ -328,12 +326,14 @@ public void update(Observable o, Object arg) { MessageCommand mescom; if (arg instanceof NickCommand) { c = (NickCommand) arg; + Protocol.remoteNick = c.getNick(); mess.append(c.intoString() + "\n"); } if (arg instanceof MessageCommand) { mescom = (MessageCommand) arg; - mess.append("Message:\n" + mescom.getMessagetext() + "\n"); + mess.append(Protocol.remoteNick+": " + mescom.getMessagetext() + "\n\n"); } + } diff --git a/src/Connection.java b/src/Connection.java index 6ad16a5..43a8a8c 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -49,26 +49,16 @@ public void reject() throws IOException { sout.flush(); } - public void testRecieve() throws IOException { - PrintWriter w = new PrintWriter(socket.getOutputStream()); - BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); - String string; - Scanner r = new Scanner(new InputStreamReader(socket.getInputStream(),"UTF-8")); - while(r.hasNextLine()) { - System.out.println(r.nextLine()); - } - } - public Command recieve() throws IOException { // BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); String s= reader.readLine(); if(s.contains("Message")){ s+=reader.readLine(); } - Command command = Command.createCommand(s); return command; } + public Socket getSocket(){ return socket; } diff --git a/src/NickCommand.java b/src/NickCommand.java index d35b7dd..d663b88 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -13,7 +13,7 @@ public NickCommand(CommandTypes ctp, String nick) { this.nick = s1[3]; } public String intoString() { - String s = "Connected to: " + this.nick + "\n"; + String s = "ChatApp 2015 user " + this.nick + "\n"; return s; } public String getNick(){ From 54017d1fc956d27641dc3d57b725bcc5676c5c25 Mon Sep 17 00:00:00 2001 From: Jojorr Date: Sun, 6 Dec 2015 21:24:04 +0200 Subject: [PATCH 39/50] still fixing --- src/Connection.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Connection.java b/src/Connection.java index 43a8a8c..c4579ef 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -5,53 +5,53 @@ public class Connection{ private Socket socket; private OutputStream out; - private PrintWriter sout; + private DataOutputStream sout; private BufferedReader reader; public Connection(Socket s) throws IOException{ this.socket = s; out = socket.getOutputStream(); - sout = new PrintWriter(out,true); + sout = new DataOutputStream(socket.getOutputStream()); reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); } public void sendMessage(String message) throws IOException{ - sout.print("Message\n"+message+"\n"); + sout.write(new StringBuilder("Message\n").append(message).append("\n").toString().getBytes()); sout.flush(); } public void disconnect() throws IOException{ - sout.print("Disconnect\n"); + sout.write(new StringBuilder("Disconnect\n").toString().getBytes()); out.close(); reader.close(); socket.close(); } public void sendNickHello(String nick) throws IOException { - sout.print("ChatApp 2015 user "+nick+"\n"); + sout.write(new StringBuilder("ChatApp 2015 user "+nick+"\n").toString().getBytes()); sout.flush(); } public void sendNickBusy(String nick) throws IOException { if(socket.isConnected()){ - sout.print("ChatApp 2015 user "+nick+" busy\n"); + sout.write(new StringBuilder("ChatApp 2015 user ").append(nick).append(" busy\n").toString().getBytes()); sout.flush(); } } public void accept() throws IOException{ - sout.print("Accepted\n"); + sout.write(new StringBuilder("Accepted\n").toString().getBytes()); sout.flush(); } public void reject() throws IOException { - sout.print("Rejected\n"); + sout.write(new StringBuilder("Rejected\n").toString().getBytes()); sout.flush(); } public Command recieve() throws IOException { // BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); - String s= reader.readLine(); + String s = reader.readLine(); if(s.contains("Message")){ s+=reader.readLine(); } From 437783e84018abc29ddfbf022a99408919db2001 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Sun, 6 Dec 2015 22:06:08 +0200 Subject: [PATCH 40/50] * --- ChatApp.iml | 9 + META-INF/MANIFEST.MF | 3 + src/CallListener.java | 62 ----- src/CallListenerThread.java | 53 ----- src/Caller.java | 41 ---- src/ChatWindow.java | 238 ------------------- src/Protocol.java | 7 - src/ServerConnection.java | 462 +++++++++++++++++++----------------- 8 files changed, 250 insertions(+), 625 deletions(-) create mode 100644 META-INF/MANIFEST.MF delete mode 100644 src/CallListener.java delete mode 100644 src/CallListenerThread.java delete mode 100644 src/Caller.java delete mode 100644 src/ChatWindow.java delete mode 100644 src/Protocol.java diff --git a/ChatApp.iml b/ChatApp.iml index c90834f..5772d80 100644 --- a/ChatApp.iml +++ b/ChatApp.iml @@ -7,5 +7,14 @@ + + + + + + + + +
\ No newline at end of file diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 0000000..4e6378a --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: ChatWindow + diff --git a/src/CallListener.java b/src/CallListener.java deleted file mode 100644 index 03742c1..0000000 --- a/src/CallListener.java +++ /dev/null @@ -1,62 +0,0 @@ -import java.io.*; -import java.net.*; - -public class CallListener { - private String remoteNick; - private Boolean isBusy; - private final static String IP = "localhost"; - private SocketAddress remoteAddress; - private SocketAddress localAddress; - private ServerSocket serverSocket; - - - public CallListener(String userName, String remoteAdress){ - Protocol.localNick = userName; - remoteAddress = new InetSocketAddress(IP, Protocol.PORT); - } - - public Connection getConnection() throws IOException{ - if (StatusBusy()){ - return null; - }else{ - serverSocket = new ServerSocket(Protocol.PORT); - return new Connection(serverSocket.accept()); - } - } - - public SocketAddress getListenAddress() throws IOException{ - return serverSocket.getLocalSocketAddress(); - } - - public String getLocalNick() { - return Protocol.localNick; - } - - public SocketAddress getLocalAddress(){ - return localAddress; - } - - public Boolean StatusBusy(){ - return isBusy; - } - - public void setStatus(Boolean statusBusy){ - this.isBusy = statusBusy; - } - - public SocketAddress getRemoteAddress(){ - return remoteAddress; - } - - public void setRemoteAddress(SocketAddress remoteAddress){ - this.remoteAddress = remoteAddress; - } - - public int getLocalPort(){ - return Protocol.PORT; - } - - public String getRemoteNick() { - return remoteNick; - } -} \ No newline at end of file diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java deleted file mode 100644 index 9232738..0000000 --- a/src/CallListenerThread.java +++ /dev/null @@ -1,53 +0,0 @@ -import java.io.*; -import java.util.*; -import java.net.*; - -public class CallListenerThread extends Observable implements Runnable { - private Socket socket; - private ServerSocket serverSocket; - private volatile boolean disconnected; - - public void start() { - this.disconnected = false; - Thread t = new Thread(this); - t.start(); - } - - public boolean isDisconnected() { - return disconnected; - } - - public void stop() { - disconnected = true; - } - - public Connection getConnection(){ - if(socket!=null){ - try { - return new Connection(socket); - } catch (IOException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public void run(){ - try { - serverSocket = new ServerSocket(Protocol.PORT); - while (true){ - socket = serverSocket.accept(); - Connection connection = new Connection(socket); - if (connection!=null) { - CommandListenerThread clt = new CommandListenerThread(connection); - clt.addObserver(ChatWindow.observer); - clt.start(); - connection.sendNickHello(Protocol.localNick); - } - } - } catch (IOException e) { - e.printStackTrace(); - } - } -} \ No newline at end of file diff --git a/src/Caller.java b/src/Caller.java deleted file mode 100644 index 29931af..0000000 --- a/src/Caller.java +++ /dev/null @@ -1,41 +0,0 @@ -import java.net.*; -import java.io.*; - -public class Caller { - private Socket s; - private String nick; - private final static int port = 28411; - private String IP; - private String distNick; - - public Caller(String ip) throws IOException{ - this.IP = ip; - s = new Socket(IP,port); - } - - public Connection call() throws IOException { - Connection c = new Connection(new Socket(IP,port)); - c.sendNickHello(nick); - return c; - } - - public String getNick() { - return nick; - } - - public void setNick(String nick) { - this.nick = nick; - } - - public int getPort() { - return port; - } - - public String getDistNick() { - return distNick; - } - - public void setDistNick(String distNick) { - this.distNick = distNick; - } -} diff --git a/src/ChatWindow.java b/src/ChatWindow.java deleted file mode 100644 index fe77de7..0000000 --- a/src/ChatWindow.java +++ /dev/null @@ -1,238 +0,0 @@ -import javax.swing.*; - -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.IOException; -import java.net.Socket; -import java.util.Observable; -import java.util.Observer; - -public class ChatWindow extends JFrame implements Observer { - private CallListenerThread callt; - private CommandListenerThread comt; - public static Observer observer; - private Connection connection; - - final JPanel panel = new JPanel(); - final JPanel field1 = new JPanel(); - final JPanel field2 = new JPanel(); - final JPanel field3 = new JPanel(); - final JPanel fieldmess = new JPanel(); - final JPanel field = new JPanel(); - final JPanel messArea = new JPanel(); - final JButton apply = new JButton("Apply"); - final JButton connect = new JButton("Connect"); - final JButton disconnect = new JButton("Disconnect"); - final JButton sendb = new JButton("Send"); - - final JLabel locallogin = new JLabel("local login"); - final JLabel remotelogin = new JLabel("remote login"); - final JLabel txt3 = new JLabel("remote addr"); - - final JTextField text1 = new JTextField(); - final JTextField text2 = new JTextField(); - final JTextField text3 = new JTextField(); - final JTextArea textmess = new JTextArea(); - final JTextArea mess = new JTextArea(); - - public ChatWindow() throws IOException { - observer = this; - this.setSize(650, 500); - this.setTitle("This is CHAT "); - ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); - this.setIconImage(image.getImage()); - callt = new CallListenerThread(); - callt.start(); - - - - messArea.setLayout(new BoxLayout(messArea, BoxLayout.X_AXIS)); - panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); - field.setLayout(new BoxLayout(field, BoxLayout.X_AXIS)); - fieldmess.setLayout(new BoxLayout(fieldmess, BoxLayout.X_AXIS)); - field1.setLayout(new BoxLayout(field1, BoxLayout.Y_AXIS)); - field2.setLayout(new BoxLayout(field2, BoxLayout.Y_AXIS)); - field3.setLayout(new BoxLayout(field3, BoxLayout.Y_AXIS)); - - textmess.setLineWrap(true); - mess.setCaretPosition(0); - mess.setLineWrap(true); - mess.setEditable(false); - - textmess.setMaximumSize(new Dimension(1500, 50)); - textmess.setPreferredSize(new Dimension(70, 50)); - text1.setMaximumSize(new Dimension(100, 25)); - text2.setMaximumSize(new Dimension(100, 25)); - text3.setMaximumSize(new Dimension(100, 25)); - - apply.setPreferredSize(new Dimension(100, 25)); - apply.setMaximumSize(new Dimension(100, 25)); - connect.setPreferredSize(new Dimension(100, 25)); - connect.setMaximumSize(new Dimension(100, 25)); - disconnect.setPreferredSize(new Dimension(100, 25)); - disconnect.setMaximumSize(new Dimension(100, 25)); - sendb.setMaximumSize(new Dimension(70, 50)); - sendb.setPreferredSize(new Dimension(70, 50)); - disconnect.setEnabled(false); - - apply.setAlignmentX(JComponent.CENTER_ALIGNMENT); - text1.setAlignmentX(JComponent.CENTER_ALIGNMENT); - locallogin.setAlignmentX(JComponent.CENTER_ALIGNMENT); - - connect.setAlignmentX(JComponent.CENTER_ALIGNMENT); - text2.setAlignmentX(JComponent.CENTER_ALIGNMENT); - remotelogin.setAlignmentX(JComponent.CENTER_ALIGNMENT); - - disconnect.setAlignmentX(JComponent.CENTER_ALIGNMENT); - text3.setAlignmentX(JComponent.CENTER_ALIGNMENT); - txt3.setAlignmentX(JComponent.CENTER_ALIGNMENT); - - field1.add(locallogin); - field2.add(remotelogin); - field3.add(txt3); - field1.add(text1); - field2.add(text2); - field3.add(text3); - field1.add(apply); - field2.add(connect); - field3.add(disconnect); - messArea.add(textmess); - messArea.add(sendb); - - panel.setBackground(new Color(220, 243, 246)); - field1.setBackground(new Color(220, 243, 246)); - field2.setBackground(new Color(220, 243, 246)); - field3.setBackground(new Color(220, 243, 246)); - messArea.setBackground(new Color(220, 243, 246)); - mess.setBackground(new Color(237, 245, 246)); - - apply.setBackground(new Color(116, 199, 209)); - connect.setBackground(new Color(116, 199, 209)); - disconnect.setBackground(new Color(116, 199, 209)); - sendb.setBackground(new Color(116, 199, 209)); - - class SendAction implements ActionListener { - private String message; - - - - public void actionPerformed(ActionEvent event) { - message = textmess.getText(); - try { - if(comt!=null) { - mess.append("Message:\n" + message + "\n"); - comt.getConnection().sendMessage(message); - }else{ - callt.getConnection().sendMessage(message); - } - } catch (IOException e) { - e.printStackTrace(); - } - textmess.setText(""); - } - } - - class ApplyAction implements ActionListener { - private String text; - - - - public void actionPerformed(ActionEvent event) { - text = text1.getText(); - Protocol.localNick = text; - } - } - - class ConnectAction implements ActionListener { - private String textc; - - - public void actionPerformed(ActionEvent event) { - String ip = text3.getText(); - connect.setEnabled(false); - disconnect.setEnabled(true); - try { - Caller caller = new Caller(ip); - connection = caller.call(); - if (connection != null) { - comt = new CommandListenerThread(connection); - comt.addObserver(ChatWindow.this); - mess.append("connected"); - comt.start(); - - } else { - mess.append("IP: " + ip + " inaccessible"); - - } - }catch (IOException e){} - - } - } - class DisconnectAction implements ActionListener { - - DisconnectAction() { - } - - public void actionPerformed(ActionEvent event) { - sendb.setEnabled(false); - disconnect.setEnabled(false); - connect.setEnabled(true); - apply.setEnabled(true); - } - } - SendAction send = new SendAction(); - sendb.addActionListener(send); - ApplyAction applyact = new ApplyAction(); - apply.addActionListener(applyact); - ConnectAction connectact = new ConnectAction(); - connect.addActionListener(connectact); - DisconnectAction disconnectact = new DisconnectAction(); - disconnect.addActionListener(disconnectact); - - fieldmess.add(mess); - final JScrollPane scrollPane = new JScrollPane(mess); - fieldmess.add(scrollPane); - - scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); - field.add(field1); - field.add(field2); - field.add(field3); - panel.add(field); - panel.add(fieldmess); - panel.add(messArea); - - this.add(panel); - this.setVisible(true); - this.setLocationRelativeTo(null); - this.setDefaultCloseOperation(EXIT_ON_CLOSE); - } - - public static void main(String[] args) { - - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - try { - new ChatWindow(); - }catch (IOException e){} - } - }); - } - - @Override - public void update(Observable o, Object arg) { - sendb.setEnabled(true); - connect.setEnabled(false); - NickCommand c; - MessageCommand mescom; - if(arg instanceof NickCommand){ - c = (NickCommand) arg; - textmess.append(c.intoString()+"\n"); - } - if(arg instanceof MessageCommand){ - mescom = (MessageCommand) arg; - mess.append("Message: "+mescom.getMessagetext()+"\n"); - } - } -} diff --git a/src/Protocol.java b/src/Protocol.java deleted file mode 100644 index c3f4bea..0000000 --- a/src/Protocol.java +++ /dev/null @@ -1,7 +0,0 @@ - -public class Protocol { - public static final int PORT =28411; - public static boolean isBusy; - public static String localNick = "default"; - public static String remoteNick; -} diff --git a/src/ServerConnection.java b/src/ServerConnection.java index 678b58c..452c2ff 100644 --- a/src/ServerConnection.java +++ b/src/ServerConnection.java @@ -3,227 +3,241 @@ import java.util.*; public class ServerConnection { - private String serverAddress; - private Connection connection; - private Statement statement; - - public ServerConnection() { - - } - - public ServerConnection(String sAdress) { - this(sAdress, null); - } - - public ServerConnection(String sAdress, String nickname) { - if (nickname != null) - setLocalNick(nickname); - if (sAdress != null) { - setServerAddress(sAdress); - ConnectToServer(); - } - } - - public void ConnectToServer() { - if (isConnected()) - return; - assert (serverAddress != null && !serverAddress.trim().isEmpty()); - try { - connection = DriverManager.getConnection(serverAddress, "user", "password"); - statement = connection.createStatement(); - } catch (SQLException e) { - e.printStackTrace(); - } - } - - public void DisconnectFromServer() { - if (statement != null) { - try { - statement.close(); - } catch (SQLException e) { - e.printStackTrace(); - } - statement = null; - } - if (connection != null) { - try { - connection.close(); - } catch (SQLException e) { - e.printStackTrace(); - } - connection = null; - } - } - - public void goOnline() { - goOnline(28411); - } - - public void goOnline(int port) { - assert Protocol.localNick != null; - assert isConnected(); - String s = "INSERT INTO user (nick, ip, online, port) values ('" + Protocol.localNick - + "', SUBSTRING_INDEX(USER(),'@',-1), 1,'" + port + "');"; - try { - statement.executeUpdate(s); - } catch (SQLException sqlexception) { - boolean nick_impact = true; - try { - if (getIp(Protocol.localNick) != null) { - s = "UPDATE user set ip=SUBSTRING_INDEX(USER(),'@',-1), online=1, port=" + port + " WHERE nick='" - + Protocol.localNick + "';"; - nick_impact = true; - } - else { - s = "UPDATE user set nick='" + Protocol.localNick + "', online=1 WHERE ip=SUBSTRING_INDEX(USER(),'@',-1) AND port=" - + port + ";"; - nick_impact = false; - } - statement.executeUpdate(s); - } catch (SQLException sqlexception1) { - try { - if (nick_impact) - statement.execute("DELETE FROM user WHERE ip=SUBSTRING_INDEX(USER(),'@',-1) AND port=" + port + ";"); - else statement.execute("DELETE FROM user WHERE nick='" + Protocol.localNick + "';"); - statement.execute(s); - } catch (SQLException sqlexception2) { - sqlexception2.printStackTrace(); - } - sqlexception1.printStackTrace(); - } - } - } - - public void goOffline() { - assert Protocol.localNick != null; - assert isConnected(); - try { - statement.execute("INSERT INTO user (nick, ip, online) values ('" + Protocol.localNick - + "', SUBSTRING_INDEX(USER(),'@',-1), 0) ON DUPLICATE KEY UPDATE ip=VALUES(ip), online=VALUES(online);"); - } catch (SQLException e) { - e.printStackTrace(); - } - } - - public void setServerAddress(String serverAddress) { - if (serverAddress.equals(this.serverAddress)) - return; - boolean connected = isConnected(); - if (connected) { - goOffline(); - DisconnectFromServer(); - } - this.serverAddress = serverAddress; - if (connected) - ConnectToServer(); - } - - public void setLocalNick(String newNick) { - assert newNick != null; - newNick = ChangeNick(newNick); - if (newNick.equals(Protocol.localNick)) - return; - boolean online = false; - if (isConnected()) { - online = isNickOnline(Protocol.localNick); - if (online) - goOffline(); - } - Protocol.localNick = newNick; - if (online) - goOnline(); - } - - public String getIp(String nickname) { - assert isConnected(); - assert nickname != null; - nickname = ChangeNick(nickname); - ResultSet resultSet; - try { - resultSet = statement.executeQuery("SELECT ip FROM user WHERE nick='" + nickname + "'"); - if (!resultSet.next()) - return null; - return resultSet.getString(1); - } catch (SQLException e) { - e.printStackTrace(); - } - return null; - } - - public int getPort(String nick) { - assert isConnected(); - assert nick != null; - nick = ChangeNick(nick); - ResultSet resultSet; - try { - resultSet = statement.executeQuery("SELECT port FROM user WHERE nick='" + nick + "'"); - if (!resultSet.next()) - return 0; - return resultSet.getInt(1); - } catch (SQLException e) { - e.printStackTrace(); - } - return 0; - } - - public String[] getAllNicks() { - assert isConnected(); - ResultSet resultSet; - ArrayList arrayList = new ArrayList<>(); - try { - resultSet = statement.executeQuery("SELECT nick FROM user;"); - while (resultSet.next()) { - String nick = resultSet.getString(1); - arrayList.add(nick); - } - } catch (SQLException e) { - e.printStackTrace(); - } - return arrayList.toArray(new String[0]); - } - - public boolean isConnected() { - return statement != null; - } - - public boolean isNickOnline(String nickname) { - if (nickname == null) - return false; - assert isConnected(); - nickname = ChangeNick(nickname); - ResultSet resultSet; - try { - resultSet = statement.executeQuery("SELECT online FROM user WHERE nick='" + nickname + "'"); - if (!resultSet.next()) - return false; - return resultSet.getBoolean(1); - } catch (SQLException e) { - e.printStackTrace(); - } - return false; - } - - public static String ChangeNick(String s) { - return s.replaceAll("['\";]", "").replaceAll("\\s", ""); - } - - public static void main(String[] args) { - String locNick = "localNick"; - String remNick = "remoteNick"; - ServerConnection serverConnection = new ServerConnection(); - serverConnection.setServerAddress("jdbc:mysql://files.litvinov.in.ua/chatapp_server?characterEncoding=utf-8&useUnicode=true"); - serverConnection.ConnectToServer(); - assert serverConnection.isConnected(); - serverConnection.setLocalNick(locNick); - System.out.println("Before: " + serverConnection.isNickOnline(locNick)); - serverConnection.goOnline(); - System.out.println("After: " + serverConnection.isNickOnline(locNick)); - serverConnection.goOffline(); - System.out.println("After offline: " + serverConnection.isNickOnline(locNick)); - System.out.println("Another nick: " + serverConnection.isNickOnline(remNick)); - System.out.println("First ip: " + serverConnection.getIp(locNick)); - System.out.println("Second ip: " + serverConnection.getIp(remNick)); - System.out.println("First port: " + serverConnection.getPort(locNick)); - System.out.println("Second port: " + serverConnection.getPort(remNick)); - } - } + + 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 22d50dc28400b4ca7b407dbe582b29e714e88eb3 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Mon, 7 Dec 2015 21:22:00 +0200 Subject: [PATCH 41/50] ServerConnection --- src/ChatWindow.java | 21 +++++++++++++++++++-- src/Protocol.java | 2 +- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 08d2a6c..e079628 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -7,6 +7,7 @@ import java.util.Observable; import java.util.Observer; import java.util.LinkedList; +import java.text.SimpleDateFormat; public class ChatWindow extends JFrame implements Observer { @@ -58,6 +59,16 @@ public ChatWindow() throws IOException { // nicks of // friends // for form + Protocol.serverConnection.setServerAddress("jdbc:mysql://files.litvinov.in.ua/chatapp_server?characterEncoding=utf-8&useUnicode=true"); + Protocol.serverConnection.connect(); + if(Protocol.serverConnection.isConnected() == false){ + mess.append("[System] Could not connect to the server" + "\n"); + } + else {mess.append("[System] You connected to the server" + "\n");} + + Protocol.serverConnection.setLocalNick(Protocol.localNick); + Protocol.serverConnection.goOnline(); + JList list = new JList(listModel); Friend fr = new Friend("unnamed", 6666); Friend fr1 = new Friend("unnamed", 5555); @@ -209,6 +220,9 @@ class SendAction implements ActionListener { public void actionPerformed(ActionEvent event) { message = textmess.getText(); + long currentTimeMillis = System.currentTimeMillis(); + String time = new SimpleDateFormat("HH:mm:ss").format(currentTimeMillis); + mess.append("\n" + " " + Protocol.localNick + " " + time + ":" + "\n" + " " + message + "\n"); try { if (comt != null) { mess.append("Message:\n" + message + "\n"); @@ -228,7 +242,8 @@ class ApplyAction implements ActionListener { public void actionPerformed(ActionEvent event) { text = text1.getText(); - Protocol.localNick = text; + Protocol.serverConnection.setLocalNick(Protocol.localNick); + mess.append("[System] Nickname changed to: " + Protocol.localNick + "\n"); } } @@ -332,7 +347,9 @@ public void update(Observable o, Object arg) { } if (arg instanceof MessageCommand) { mescom = (MessageCommand) arg; - mess.append("Message:\n" + mescom.getMessagetext() + "\n"); + long currentTimeMillis = System.currentTimeMillis(); + String time = new SimpleDateFormat("HH:mm:ss").format(currentTimeMillis); + mess.append("\n" + " " + Protocol.remoteNick + " " + time + ":" + "\n" + " " + mescom.getMessagetext() + "\n"); } } diff --git a/src/Protocol.java b/src/Protocol.java index 9f70960..69c4101 100644 --- a/src/Protocol.java +++ b/src/Protocol.java @@ -5,5 +5,5 @@ public class Protocol { public static String localNick = "default"; public static String remoteNick; public static String IP ; - + public static ServerConnection serverConnection = new ServerConnection(); } From 13006282c87a4a9dab9fb42ee8981b998b904593 Mon Sep 17 00:00:00 2001 From: Jojorr Date: Wed, 9 Dec 2015 15:11:39 +0200 Subject: [PATCH 42/50] YEY, it works at last --- src/CallListener.java | 26 +------------------------- src/CallListenerThread.java | 18 ++++++++++++++---- src/ChatWindow.java | 5 ++++- src/Connection.java | 2 +- src/IncomingConnection.java | 30 +++++++++++++++--------------- src/Protocol.java | 2 +- 6 files changed, 36 insertions(+), 47 deletions(-) diff --git a/src/CallListener.java b/src/CallListener.java index f143ad0..4b743af 100644 --- a/src/CallListener.java +++ b/src/CallListener.java @@ -2,11 +2,10 @@ import java.net.*; public class CallListener { - private String remoteNick; private Boolean isBusy; private SocketAddress remoteAddress; - private SocketAddress localAddress; + private ServerSocket serverSocket; @@ -27,14 +26,6 @@ public SocketAddress getListenAddress() throws IOException{ return serverSocket.getLocalSocketAddress(); } - public String getLocalNick() { - return Protocol.localNick; - } - - public SocketAddress getLocalAddress(){ - return localAddress; - } - public Boolean StatusBusy(){ return isBusy; } @@ -43,19 +34,4 @@ public void setStatus(Boolean statusBusy){ this.isBusy = statusBusy; } - public SocketAddress getRemoteAddress(){ - return remoteAddress; - } - - public void setRemoteAddress(SocketAddress remoteAddress){ - this.remoteAddress = remoteAddress; - } - - public int getLocalPort(){ - return Protocol.PORT; - } - - public String getRemoteNick() { - return remoteNick; - } } \ No newline at end of file diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 87f6b4c..20d9fd1 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -4,10 +4,15 @@ public class CallListenerThread extends Observable implements Runnable { private Socket socket; - // private ServerSocket serverSocket; + private ServerSocket serverSocket; private volatile boolean disconnected; private CallListener callListener; private Connection connection; + + public CallListenerThread(){ + + } + public void start() { this.disconnected = false; Thread t = new Thread(this); @@ -36,10 +41,11 @@ public Connection getConnection(){ @Override public void run(){ try { - //serverSocket = new ServerSocket(Protocol.PORT); - callListener = new CallListener(); + serverSocket = new ServerSocket(Protocol.PORT); + //callListener = new CallListener(); while (true){ - connection = callListener.getConnection(); + socket = serverSocket.accept(); + connection = new Connection(socket); if (connection.getSocket()!=null) { CommandListenerThread clt = new CommandListenerThread(connection); clt.addObserver(ChatWindow.observer); @@ -51,4 +57,8 @@ public void run(){ e.printStackTrace(); } } + + public void setDisconnected(boolean b){ + this.disconnected = b; + } } \ No newline at end of file diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 4a6dfe0..c118e8e 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -213,6 +213,9 @@ public void actionPerformed(ActionEvent event) { if (comt != null) { mess.append(Protocol.localNick + ": " + message + "\n"); comt.getConnection().sendMessage(message); + }else{ + mess.append(Protocol.localNick + ": " + message + "\n"); + callt.getConnection().sendMessage(message); } } catch (IOException e) { e.printStackTrace(); @@ -328,7 +331,7 @@ public void update(Observable o, Object arg) { c = (NickCommand) arg; Protocol.remoteNick = c.getNick(); mess.append(c.intoString() + "\n"); - } + }else if (arg instanceof MessageCommand) { mescom = (MessageCommand) arg; mess.append(Protocol.remoteNick+": " + mescom.getMessagetext() + "\n\n"); diff --git a/src/Connection.java b/src/Connection.java index c4579ef..93d7969 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -16,7 +16,7 @@ public Connection(Socket s) throws IOException{ } public void sendMessage(String message) throws IOException{ - sout.write(new StringBuilder("Message\n").append(message).append("\n").toString().getBytes()); + sout.write(new StringBuilder("Message: \n").append(message).append("\n").toString().getBytes()); sout.flush(); } diff --git a/src/IncomingConnection.java b/src/IncomingConnection.java index 23bb53c..c718089 100644 --- a/src/IncomingConnection.java +++ b/src/IncomingConnection.java @@ -13,22 +13,22 @@ public IncomingConnection() { jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS)); final JPanel pan1 = new JPanel(); final JPanel pan2 = new JPanel(); - final JLabel jLabel = new JLabel("User XXX from IP Y.Y.Y.Y wants to chat"); - final JButton jButton = new JButton("Accept"); - final JButton jButton1 = new JButton("Decline"); + final JLabel jLabel = new JLabel("User "+ Protocol.remoteNick +" wants to chat"); + final JButton acceptb = new JButton("Accept"); + final JButton declineb = new JButton("Decline"); - jButton.addActionListener(new ActionListener(){ + acceptb.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ - //������� - + Protocol.statusBusy = true; + } }); - jButton1.addActionListener(new ActionListener(){ + declineb.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ @@ -38,16 +38,16 @@ public void actionPerformed(ActionEvent e){ } }); - jButton1.setPreferredSize(new Dimension(100, 25)); - jButton.setPreferredSize(new Dimension(100, 25)); + declineb.setPreferredSize(new Dimension(100, 25)); + acceptb.setPreferredSize(new Dimension(100, 25)); - jButton1.setBackground(new Color(116, 199, 209)); - jButton.setBackground(new Color(116, 199, 209)); + declineb.setBackground(new Color(116, 199, 209)); + acceptb.setBackground(new Color(116, 199, 209)); pan1.setBackground(new Color(220, 243, 246)); pan2.setBackground(new Color(220, 243, 246)); pan1.add(jLabel); - pan2.add(jButton); - pan2.add(jButton1); + pan2.add(acceptb); + pan2.add(declineb); jPanel.add(pan1); jPanel.add(pan2); @@ -58,7 +58,7 @@ public void actionPerformed(ActionEvent e){ this.setVisible(true); } - public static void main(String[] args) { + /*public static void main(String[] args) { IncomingConnection incomingConnection = new IncomingConnection(); - } + }*/ } diff --git a/src/Protocol.java b/src/Protocol.java index 9f70960..ff5eb82 100644 --- a/src/Protocol.java +++ b/src/Protocol.java @@ -5,5 +5,5 @@ public class Protocol { public static String localNick = "default"; public static String remoteNick; public static String IP ; - + public static boolean statusBusy = false; } From b09fb18d2c89857689d5724beb629dbf3ec86eb2 Mon Sep 17 00:00:00 2001 From: Jojorr Date: Wed, 9 Dec 2015 21:11:56 +0200 Subject: [PATCH 43/50] Broke git --- ChatApp.txt | Bin 0 -> 26803 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ChatApp.txt diff --git a/ChatApp.txt b/ChatApp.txt new file mode 100644 index 0000000000000000000000000000000000000000..b4d907b79f57f1f105d32dff1f457d3297f6c549 GIT binary patch literal 26803 zcmb5WQ*@=>)-4>{Hdbugwr$&XQn8bYQL$|&72B!UR>gMm*Sq)r&ffcN=l@zetIgHc z#k!amPw#!q-sc#Pq6{b)8W0o|6p&a&m;}&&e9(ZvfaJtfh3KT@#Tn#;N=%}YBXBw3m7g%-PSs`R|S4{`@OqWNT~YOmAXq^sXtrK%V#v{4PyCylO)N z)7`e2@iqPK?tbL|{`!dD%fbs!rH!i43~mAUiMBVLS_4iJ&xbWfPG|acJO#QCTQ-E6i9AH++tPm zCRLIpfIRV%54d#QkZMZB-VM?qRDPk?Sc2oyMiY|C%*SEhk7E-rxs2G;94Gor3CiJ{ zQhw3qx}8jKJB7hWAK+bdE%yv$XFs{!oIGN0UJKIV8fh$qSuOcG^YhMCx)eE}Yp^_a&72252l+ck^6}gjC*-z`pSYRm zoqcZKS5)4|4T^p*e4f1iPaup))UG@khdqqGukI6fp|(5RzhH2x!+tyk3LB1~=7H6fMZuWf++#wAkRd2PJpkvL|EagCP`0P=QJ~4mejCDidkc(83&)ZmN;Z zs9BD^e*2||WnvYX>m)l6Bnlc&M!!=a3V%$N^NknId^$w%xa%0A=5$Rq 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Ú#>_L@JR3gPuq!g%P)XMjeBPcSPaw6|sp~Y% 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 A`2YX_ literal 0 HcmV?d00001 From 773d10833a7268ce68e60e8ce19b22574489080e Mon Sep 17 00:00:00 2001 From: Nicholas Date: Wed, 9 Dec 2015 23:21:32 +0200 Subject: [PATCH 44/50] small fixes --- src/ChatWindow.java | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 38cdc39..9352aa4 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -239,17 +239,16 @@ public void actionPerformed(ActionEvent event) { } class ApplyAction implements ActionListener { - private String text; public void actionPerformed(ActionEvent event) { - text = text1.getText(); + Protocol.localNick = text1.getText(); Protocol.serverConnection.setLocalNick(Protocol.localNick); mess.append("[System] Nickname changed to: " + Protocol.localNick + "\n"); + apply.setEnabled(false); } } class ConnectAction implements ActionListener { - private String textc; public void actionPerformed(ActionEvent event) { Protocol.IP = text3.getText(); @@ -266,7 +265,10 @@ public void actionPerformed(ActionEvent event) { } else { mess.append("IP: " + Protocol.IP + " inaccessible\n"); - + connect.setEnabled(true); + disconnect.setEnabled(false); + sendb.setEnabled(false); + apply.setEnabled(true); } } catch (IOException e) { e.printStackTrace(); @@ -275,18 +277,26 @@ public void actionPerformed(ActionEvent event) { } } - class DisconnectAction implements ActionListener { - DisconnectAction() { - } + class DisconnectAction implements ActionListener { public void actionPerformed(ActionEvent event) { - + if (comt != null) { + try { + comt.getConnection().disconnect(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + comt.stop(); + comt = null; + sendb.setEnabled(false); disconnect.setEnabled(false); connect.setEnabled(true); apply.setEnabled(true); } } + SendAction send = new SendAction(); sendb.addActionListener(send); ApplyAction applyact = new ApplyAction(); From 2a90b48016b46b7f0fdb474f793661f7e6d1a02a Mon Sep 17 00:00:00 2001 From: Nicholas Date: Wed, 9 Dec 2015 23:31:42 +0200 Subject: [PATCH 45/50] small fixes 2 --- src/CallListener.java | 5 ----- src/CallListenerThread.java | 2 -- src/Caller.java | 2 -- src/Command.java | 2 -- src/Connection.java | 2 -- src/IncomingConnection.java | 3 +-- src/NickCommand.java | 3 ++- src/Protocol.java | 3 +-- 8 files changed, 4 insertions(+), 18 deletions(-) diff --git a/src/CallListener.java b/src/CallListener.java index 4b743af..284c78f 100644 --- a/src/CallListener.java +++ b/src/CallListener.java @@ -3,12 +3,8 @@ public class CallListener { private Boolean isBusy; - - private SocketAddress remoteAddress; - private ServerSocket serverSocket; - public CallListener(){ setStatus(false); } @@ -33,5 +29,4 @@ public Boolean StatusBusy(){ public void setStatus(Boolean statusBusy){ this.isBusy = statusBusy; } - } \ No newline at end of file diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 20d9fd1..07aa2ac 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -6,7 +6,6 @@ public class CallListenerThread extends Observable implements Runnable { private Socket socket; private ServerSocket serverSocket; private volatile boolean disconnected; - private CallListener callListener; private Connection connection; public CallListenerThread(){ @@ -42,7 +41,6 @@ public Connection getConnection(){ public void run(){ try { serverSocket = new ServerSocket(Protocol.PORT); - //callListener = new CallListener(); while (true){ socket = serverSocket.accept(); connection = new Connection(socket); diff --git a/src/Caller.java b/src/Caller.java index d0ecb6c..2c60d7b 100644 --- a/src/Caller.java +++ b/src/Caller.java @@ -13,6 +13,4 @@ public Connection call() throws IOException { c.sendNickHello(Protocol.localNick); return c; } - - } diff --git a/src/Command.java b/src/Command.java index 71d049c..998103b 100644 --- a/src/Command.java +++ b/src/Command.java @@ -25,6 +25,4 @@ public static Command createCommand(String s){ public CommandTypes getType(){ return commandTypes; } - - } diff --git a/src/Connection.java b/src/Connection.java index 93d7969..334a975 100644 --- a/src/Connection.java +++ b/src/Connection.java @@ -1,6 +1,5 @@ import java.net.*; import java.io.*; -import java.util.Scanner; public class Connection{ private Socket socket; @@ -50,7 +49,6 @@ public void reject() throws IOException { } public Command recieve() throws IOException { - // BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); String s = reader.readLine(); if(s.contains("Message")){ s+=reader.readLine(); diff --git a/src/IncomingConnection.java b/src/IncomingConnection.java index c718089..db16b67 100644 --- a/src/IncomingConnection.java +++ b/src/IncomingConnection.java @@ -26,8 +26,7 @@ public void actionPerformed(ActionEvent e){ } }); - - + declineb.addActionListener(new ActionListener(){ @Override diff --git a/src/NickCommand.java b/src/NickCommand.java index d663b88..84a7cbc 100644 --- a/src/NickCommand.java +++ b/src/NickCommand.java @@ -4,7 +4,6 @@ public class NickCommand extends Command{ public NickCommand(CommandTypes ctp) { super(ctp); - } public NickCommand(CommandTypes ctp, String nick) { @@ -12,10 +11,12 @@ public NickCommand(CommandTypes ctp, String nick) { String[] s1 = nick.split(" "); this.nick = s1[3]; } + public String intoString() { String s = "ChatApp 2015 user " + this.nick + "\n"; return s; } + public String getNick(){ return nick; } diff --git a/src/Protocol.java b/src/Protocol.java index 7c002f8..339cc5f 100644 --- a/src/Protocol.java +++ b/src/Protocol.java @@ -4,8 +4,7 @@ public class Protocol { public static boolean isBusy; public static String localNick = "default"; public static String remoteNick; - public static String IP ; + public static String IP; public static boolean statusBusy = false; public static ServerConnection serverConnection = new ServerConnection(); - } From 06826ce9ea4cbbf71034a76258d33588338c95b0 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Wed, 9 Dec 2015 23:50:02 +0200 Subject: [PATCH 46/50] small fixes 3 --- src/ChatWindow.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 9352aa4..48d078a 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -221,8 +221,8 @@ class SendAction implements ActionListener { public void actionPerformed(ActionEvent event) { message = textmess.getText(); long currentTimeMillis = System.currentTimeMillis(); - String time = new SimpleDateFormat("HH:mm:ss").format(currentTimeMillis); - mess.append("\n" + " " + Protocol.localNick + " " + time + ":" + "\n" + " " + message + "\n"); + String time = new SimpleDateFormat("[HH:mm:ss]").format(currentTimeMillis); + mess.append("\n" + time + " " + Protocol.localNick + ":" + " " + message + "\n"); try { if (comt != null) { mess.append(Protocol.localNick + ": " + message + "\n"); @@ -361,14 +361,12 @@ public void update(Observable o, Object arg) { mescom = (MessageCommand) arg; long currentTimeMillis = System.currentTimeMillis(); - String time = new SimpleDateFormat("HH:mm:ss").format(currentTimeMillis); - mess.append("\n" + " " + Protocol.remoteNick + " " + time + ":" + "\n" + " " + mescom.getMessagetext() + "\n"); + String time = new SimpleDateFormat("[HH:mm:ss]").format(currentTimeMillis); + mess.append("\n" + time + " " + Protocol.remoteNick + ":" + " " + mescom.getMessagetext() + "\n"); } - } - - } + class Friend { public String nick; public int ip; From f7ef37292927d0df15506d89faab29e34702753b Mon Sep 17 00:00:00 2001 From: MariyaKlimenko Date: Thu, 10 Dec 2015 02:32:48 +0200 Subject: [PATCH 47/50] editings --- src/Caller.java | 3 ++ src/ChatWindow.java | 73 ++++++++++++++++++++++++++------------------- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/src/Caller.java b/src/Caller.java index 2c60d7b..f348702 100644 --- a/src/Caller.java +++ b/src/Caller.java @@ -9,6 +9,9 @@ public Caller() throws IOException{ } public Connection call() throws IOException { + try { + Class.forName("com.mysql.jdbc.Driver"); + } catch (ClassNotFoundException e) {} Connection c = new Connection(s); c.sendNickHello(Protocol.localNick); return c; diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 48d078a..c3359c1 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -9,7 +9,6 @@ import java.util.LinkedList; import java.text.SimpleDateFormat; - public class ChatWindow extends JFrame implements Observer { private CallListenerThread callt; private CommandListenerThread comt; @@ -59,19 +58,21 @@ public ChatWindow() throws IOException { // nicks of // friends // for form - Protocol.serverConnection.setServerAddress("jdbc:mysql://files.litvinov.in.ua/chatapp_server?characterEncoding=utf-8&useUnicode=true"); + Protocol.serverConnection + .setServerAddress("jdbc:mysql://files.litvinov.in.ua/chatapp_server?characterEncoding=utf-8&useUnicode=true"); Protocol.serverConnection.connect(); - if(Protocol.serverConnection.isConnected() == false){ + if (Protocol.serverConnection.isConnected() == false) { mess.append("[System] Could not connect to the server" + "\n"); + } else { + mess.append("[System] You connected to the server" + "\n"); } - else {mess.append("[System] You connected to the server" + "\n");} Protocol.serverConnection.setLocalNick(Protocol.localNick); Protocol.serverConnection.goOnline(); JList list = new JList(listModel); - Friend fr = new Friend("unnamed", 6666); - Friend fr1 = new Friend("unnamed", 5555); + Friend fr = new Friend("masha", "10.1.1.4"); + Friend fr1 = new Friend("unnamed", "5555"); listfriends.add(fr); listfriends.add(fr1); listModel.addElement(fr.getNick()); @@ -85,7 +86,7 @@ public ChatWindow() throws IOException { addButton.setFocusable(false); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - Friend newfr = new Friend("newfr", 6666); + Friend newfr = new Friend(Protocol.remoteNick, Protocol.IP); listfriends.add(newfr); listModel.addElement(newfr.getNick()); @@ -103,12 +104,15 @@ public void actionPerformed(ActionEvent e) { for (int i = 0; i <= listfriends.size(); i++) { if (listfriends.get(i).getNick() == listModel .getElementAt(index)) { - int Ip = listfriends.get(i).getIp();// ip for connection + String Ip = listfriends.get(i).getIp();// ip for + // connection break; } } text2.setText(listModel.getElementAt(index)); // need connect to Ip + text3.setText(listfriends.get(index).getIp()); + } }); @@ -133,7 +137,6 @@ public void actionPerformed(ActionEvent e) { addButton.setMaximumSize(new Dimension(100, 25)); connectButton.setMaximumSize(new Dimension(100, 25)); - friendsfield.setLayout(new BoxLayout(friendsfield, BoxLayout.Y_AXIS)); bigfield.setLayout(new BoxLayout(bigfield, BoxLayout.X_AXIS)); messages.setLayout(new BoxLayout(messages, BoxLayout.Y_AXIS)); @@ -187,11 +190,11 @@ public void actionPerformed(ActionEvent e) { txt3.setAlignmentX(JComponent.CENTER_ALIGNMENT); field1.add(locallogin); - field2.add(remotelogin); - field3.add(txt3); + field2.add(txt3); + field3.add(remotelogin); field1.add(text1); - field2.add(text2); - field3.add(text3); + field2.add(text3); + field3.add(text2); field1.add(apply); field2.add(connect); field3.add(disconnect); @@ -221,14 +224,16 @@ class SendAction implements ActionListener { public void actionPerformed(ActionEvent event) { message = textmess.getText(); long currentTimeMillis = System.currentTimeMillis(); - String time = new SimpleDateFormat("[HH:mm:ss]").format(currentTimeMillis); - mess.append("\n" + time + " " + Protocol.localNick + ":" + " " + message + "\n"); + if (comt != null) { + String time = new SimpleDateFormat("HH:mm:ss") + .format(currentTimeMillis); + mess.append(Protocol.localNick + " (" + time + "):" + "\n" + + " " + message + "\n"); + } try { if (comt != null) { - mess.append(Protocol.localNick + ": " + message + "\n"); comt.getConnection().sendMessage(message); - }else{ - mess.append(Protocol.localNick + ": " + message + "\n"); + } else { callt.getConnection().sendMessage(message); } } catch (IOException e) { @@ -243,7 +248,8 @@ class ApplyAction implements ActionListener { public void actionPerformed(ActionEvent event) { Protocol.localNick = text1.getText(); Protocol.serverConnection.setLocalNick(Protocol.localNick); - mess.append("[System] Nickname changed to: " + Protocol.localNick + "\n"); + mess.append("[System] Nickname changed to: " + + Protocol.localNick + "\n"); apply.setEnabled(false); } } @@ -251,6 +257,7 @@ public void actionPerformed(ActionEvent event) { class ConnectAction implements ActionListener { public void actionPerformed(ActionEvent event) { + mess.setText(""); Protocol.IP = text3.getText(); connect.setEnabled(false); disconnect.setEnabled(true); @@ -294,6 +301,7 @@ public void actionPerformed(ActionEvent event) { disconnect.setEnabled(false); connect.setEnabled(true); apply.setEnabled(true); + mess.append("-> Disconnected\n"); } } @@ -356,34 +364,39 @@ public void update(Observable o, Object arg) { c = (NickCommand) arg; Protocol.remoteNick = c.getNick(); mess.append(c.intoString() + "\n"); - }else - if (arg instanceof MessageCommand) { + } else if (arg instanceof MessageCommand) { mescom = (MessageCommand) arg; long currentTimeMillis = System.currentTimeMillis(); - String time = new SimpleDateFormat("[HH:mm:ss]").format(currentTimeMillis); - mess.append("\n" + time + " " + Protocol.remoteNick + ":" + " " + mescom.getMessagetext() + "\n"); + String time = new SimpleDateFormat("HH:mm:ss") + .format(currentTimeMillis); + mess.append(Protocol.remoteNick + " (" + time + "):" + "\n" + " " + + mescom.getMessagetext() + "\n"); } + } + } class Friend { public String nick; - public int ip; - - public Friend(String n ,int i){ + public String ip; + + public Friend(String n, String i) { this.nick = n; this.ip = i; } - void set(String n ,int i){ + + void set(String n, String i) { this.nick = n; this.ip = i; } - String getNick(){ + + String getNick() { return nick; } - - int getIp(){ + + String getIp() { return ip; } } From d3685161c5b73b97daf5072b5d8bc9ee6b998de4 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Sun, 13 Dec 2015 12:29:35 +0200 Subject: [PATCH 48/50] ??? --- src/ChatWindow.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/ChatWindow.java b/src/ChatWindow.java index c3359c1..0c219be 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -224,16 +224,19 @@ class SendAction implements ActionListener { public void actionPerformed(ActionEvent event) { message = textmess.getText(); long currentTimeMillis = System.currentTimeMillis(); - if (comt != null) { - String time = new SimpleDateFormat("HH:mm:ss") - .format(currentTimeMillis); - mess.append(Protocol.localNick + " (" + time + "):" + "\n" - + " " + message + "\n"); - } + try { if (comt != null) { + String time = new SimpleDateFormat("HH:mm:ss") + .format(currentTimeMillis); + mess.append(Protocol.localNick + " (" + time + "):" + "\n" + + " " + message + "\n"); comt.getConnection().sendMessage(message); } else { + String time = new SimpleDateFormat("HH:mm:ss") + .format(currentTimeMillis); + mess.append(Protocol.localNick + " (" + time + "):" + "\n" + + " " + message + "\n"); callt.getConnection().sendMessage(message); } } catch (IOException e) { From 392e857e596584c0eeb22d36a2c5fa147ceb3d37 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Tue, 15 Dec 2015 20:56:29 +0200 Subject: [PATCH 49/50] busy and disconnect --- src/BusyCommand.java | 30 +++++++++++++++++++++++ src/CallListenerThread.java | 7 ++++++ src/ChatWindow.java | 49 ++++++++++++++++++++++++++++--------- src/Command.java | 8 ++++-- src/IncomingConnection.java | 18 +++++--------- 5 files changed, 87 insertions(+), 25 deletions(-) create mode 100644 src/BusyCommand.java diff --git a/src/BusyCommand.java b/src/BusyCommand.java new file mode 100644 index 0000000..8084a43 --- /dev/null +++ b/src/BusyCommand.java @@ -0,0 +1,30 @@ + +public class BusyCommand extends Command { + private String nick; + + public BusyCommand(CommandTypes type, String nick) { + super(type); + this.nick = nick; + } + + public String intoString() { + String s = "User " + this.nick +" is busy at that moment" + "\n"; + return s; + } + + public CommandTypes getType() { + return commandTypes; + } + + public void setType(CommandTypes type) { + this.commandTypes = type; + } + + public String getNick() { + return nick; + } + + public void setNick(String nick) { + this.nick = nick; + } +} diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 07aa2ac..77439df 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -7,6 +7,8 @@ public class CallListenerThread extends Observable implements Runnable { private ServerSocket serverSocket; private volatile boolean disconnected; private Connection connection; + private boolean isBusy; + private CallListener callListener; public CallListenerThread(){ @@ -59,4 +61,9 @@ public void run(){ public void setDisconnected(boolean b){ this.disconnected = b; } + + public void setBusy(Boolean isBusy){ + this.isBusy = isBusy; + callListener.setStatus(isBusy); + } } \ No newline at end of file diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 0c219be..2243c54 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -247,7 +247,6 @@ public void actionPerformed(ActionEvent event) { } class ApplyAction implements ActionListener { - public void actionPerformed(ActionEvent event) { Protocol.localNick = text1.getText(); Protocol.serverConnection.setLocalNick(Protocol.localNick); @@ -258,7 +257,6 @@ public void actionPerformed(ActionEvent event) { } class ConnectAction implements ActionListener { - public void actionPerformed(ActionEvent event) { mess.setText(""); Protocol.IP = text3.getText(); @@ -274,7 +272,7 @@ public void actionPerformed(ActionEvent event) { comt.start(); } else { - mess.append("IP: " + Protocol.IP + " inaccessible\n"); + mess.append("IP: " + Protocol.IP + " inaccessible" + "\n"); connect.setEnabled(true); disconnect.setEnabled(false); sendb.setEnabled(false); @@ -282,14 +280,11 @@ public void actionPerformed(ActionEvent event) { } } catch (IOException e) { e.printStackTrace(); - } - } } class DisconnectAction implements ActionListener { - public void actionPerformed(ActionEvent event) { if (comt != null) { try { @@ -359,15 +354,19 @@ public void run() { @Override public void update(Observable o, Object arg) { - sendb.setEnabled(true); - connect.setEnabled(false); + NickCommand c; MessageCommand mescom; + Command com; + + sendb.setEnabled(true); + connect.setEnabled(false); if (arg instanceof NickCommand) { c = (NickCommand) arg; Protocol.remoteNick = c.getNick(); mess.append(c.intoString() + "\n"); - } else if (arg instanceof MessageCommand) { + } + if (arg instanceof MessageCommand) { mescom = (MessageCommand) arg; long currentTimeMillis = System.currentTimeMillis(); @@ -376,9 +375,37 @@ public void update(Observable o, Object arg) { mess.append(Protocol.remoteNick + " (" + time + "):" + "\n" + " " + mescom.getMessagetext() + "\n"); } - + if (arg instanceof Command) { + com = (Command) arg; + if (com.getType() == Command.CommandTypes.accept) { + connect.setEnabled(false); + disconnect.setEnabled(true); + sendb.setEnabled(true); + apply.setEnabled(false); + } + if (com.getType() == Command.CommandTypes.reject) { + mess.append("It seems like " + Protocol.remoteNick + " doesn't want to talk to you :c" + "\n"); + connect.setEnabled(true); + disconnect.setEnabled(false); + sendb.setEnabled(false); + apply.setEnabled(true); + } + if (com.getType() == Command.CommandTypes.disconnect) { + mess.append("Looks like we lost him :c" + "\n"); + connect.setEnabled(true); + disconnect.setEnabled(false); + sendb.setEnabled(false); + apply.setEnabled(true); + } + if (com.getType() == Command.CommandTypes.busy) { + mess.append(com.toString()); + connect.setEnabled(true); + disconnect.setEnabled(false); + sendb.setEnabled(false); + apply.setEnabled(true); + } + } } - } class Friend { diff --git a/src/Command.java b/src/Command.java index 998103b..72436c6 100644 --- a/src/Command.java +++ b/src/Command.java @@ -11,12 +11,16 @@ public enum CommandTypes { accept, reject, nickname, - message + message, + busy } public static Command createCommand(String s){ if(s.contains("Accepted")) return new Command(CommandTypes.accept); if(s.contains("Rejected")) return new Command(CommandTypes.reject); - if(s.contains("ChatApp 2015")) return new NickCommand(CommandTypes.nickname,s); + if(s.contains("ChatApp 2015")) { + if (s.contains("Busy")) return new BusyCommand(CommandTypes.busy, s.replaceAll("ChatApp 2015 user ", "")); + else return new NickCommand(CommandTypes.nickname, s.replaceAll("ChatApp 2015 user ", "")); + } if(s.contains("Disconnect")) return new Command(CommandTypes.disconnect); if(s.contains("Message")) return new MessageCommand(CommandTypes.message,s); else return null; diff --git a/src/IncomingConnection.java b/src/IncomingConnection.java index db16b67..61ac5a1 100644 --- a/src/IncomingConnection.java +++ b/src/IncomingConnection.java @@ -18,28 +18,22 @@ public IncomingConnection() { final JButton declineb = new JButton("Decline"); acceptb.addActionListener(new ActionListener(){ - @Override public void actionPerformed(ActionEvent e){ - Protocol.statusBusy = true; - } }); declineb.addActionListener(new ActionListener(){ - @Override public void actionPerformed(ActionEvent e){ - //��������� - } }); - + declineb.setPreferredSize(new Dimension(100, 25)); acceptb.setPreferredSize(new Dimension(100, 25)); - + declineb.setBackground(new Color(116, 199, 209)); acceptb.setBackground(new Color(116, 199, 209)); pan1.setBackground(new Color(220, 243, 246)); @@ -50,14 +44,14 @@ public void actionPerformed(ActionEvent e){ jPanel.add(pan1); jPanel.add(pan2); - + this.add(jPanel); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); this.setVisible(true); } - - /*public static void main(String[] args) { + + public static void main(String[] args) { IncomingConnection incomingConnection = new IncomingConnection(); - }*/ + } } From f19bca12591522502860c8986b166e8803a84d23 Mon Sep 17 00:00:00 2001 From: Jojorr Date: Wed, 16 Dec 2015 21:38:07 +0200 Subject: [PATCH 50/50] Tried to fix accept/reject --- ChatApp.iml | 2 +- src/CallListener.java | 3 --- src/CallListenerThread.java | 3 +++ src/ChatWindow.java | 38 ++++++++++++++++++++++--------------- src/IncomingConnection.java | 32 ++++++++++++++++++------------- src/Protocol.java | 2 -- 6 files changed, 46 insertions(+), 34 deletions(-) diff --git a/ChatApp.iml b/ChatApp.iml index 5772d80..e97e481 100644 --- a/ChatApp.iml +++ b/ChatApp.iml @@ -10,7 +10,7 @@ - + diff --git a/src/CallListener.java b/src/CallListener.java index 284c78f..3ab388d 100644 --- a/src/CallListener.java +++ b/src/CallListener.java @@ -18,9 +18,6 @@ public Connection getConnection() throws IOException{ } } - public SocketAddress getListenAddress() throws IOException{ - return serverSocket.getLocalSocketAddress(); - } public Boolean StatusBusy(){ return isBusy; diff --git a/src/CallListenerThread.java b/src/CallListenerThread.java index 77439df..b9d0372 100644 --- a/src/CallListenerThread.java +++ b/src/CallListenerThread.java @@ -45,6 +45,8 @@ public void run(){ serverSocket = new ServerSocket(Protocol.PORT); while (true){ socket = serverSocket.accept(); + //IncomingConnection incomingConnection = new IncomingConnection(); + //if(Protocol.statusBusy == true){ connection = new Connection(socket); if (connection.getSocket()!=null) { CommandListenerThread clt = new CommandListenerThread(connection); @@ -52,6 +54,7 @@ public void run(){ clt.start(); connection.sendNickHello(Protocol.localNick); } + //} } } catch (IOException e) { e.printStackTrace(); diff --git a/src/ChatWindow.java b/src/ChatWindow.java index 2243c54..52c926e 100644 --- a/src/ChatWindow.java +++ b/src/ChatWindow.java @@ -166,6 +166,7 @@ public void actionPerformed(ActionEvent e) { text1.setMaximumSize(new Dimension(100, 25)); text2.setMaximumSize(new Dimension(100, 25)); text3.setMaximumSize(new Dimension(100, 25)); + text2.setEnabled(false); apply.setPreferredSize(new Dimension(100, 25)); apply.setMaximumSize(new Dimension(100, 25)); @@ -177,6 +178,7 @@ public void actionPerformed(ActionEvent e) { sendb.setPreferredSize(new Dimension(70, 50)); disconnect.setEnabled(false); + apply.setAlignmentX(JComponent.CENTER_ALIGNMENT); text1.setAlignmentX(JComponent.CENTER_ALIGNMENT); locallogin.setAlignmentX(JComponent.CENTER_ALIGNMENT); @@ -226,22 +228,25 @@ public void actionPerformed(ActionEvent event) { long currentTimeMillis = System.currentTimeMillis(); try { - if (comt != null) { - String time = new SimpleDateFormat("HH:mm:ss") - .format(currentTimeMillis); - mess.append(Protocol.localNick + " (" + time + "):" + "\n" - + " " + message + "\n"); - comt.getConnection().sendMessage(message); - } else { - String time = new SimpleDateFormat("HH:mm:ss") - .format(currentTimeMillis); - mess.append(Protocol.localNick + " (" + time + "):" + "\n" - + " " + message + "\n"); - callt.getConnection().sendMessage(message); + if (connection != null) { + if (comt != null) { + String time = new SimpleDateFormat("HH:mm:ss") + .format(currentTimeMillis); + mess.append(Protocol.localNick + " (" + time + "):" + "\n" + + " " + message + "\n"); + comt.getConnection().sendMessage(message); + } else { + String time = new SimpleDateFormat("HH:mm:ss") + .format(currentTimeMillis); + mess.append(Protocol.localNick + " (" + time + "):" + "\n" + + " " + message + "\n"); + callt.getConnection().sendMessage(message); + } } - } catch (IOException e) { - e.printStackTrace(); - } + }catch(IOException e){ + e.printStackTrace(); + } + textmess.setText(""); } } @@ -262,6 +267,7 @@ public void actionPerformed(ActionEvent event) { Protocol.IP = text3.getText(); connect.setEnabled(false); disconnect.setEnabled(true); + textmess.setEnabled(true); try { Caller caller = new Caller(); connection = caller.call(); @@ -278,6 +284,7 @@ public void actionPerformed(ActionEvent event) { sendb.setEnabled(false); apply.setEnabled(true); } + text2.setText(Protocol.remoteNick); } catch (IOException e) { e.printStackTrace(); } @@ -299,6 +306,7 @@ public void actionPerformed(ActionEvent event) { disconnect.setEnabled(false); connect.setEnabled(true); apply.setEnabled(true); + text2.setEnabled(false); mess.append("-> Disconnected\n"); } } diff --git a/src/IncomingConnection.java b/src/IncomingConnection.java index 61ac5a1..79e46e3 100644 --- a/src/IncomingConnection.java +++ b/src/IncomingConnection.java @@ -6,9 +6,10 @@ public class IncomingConnection extends JFrame { public IncomingConnection() { this.setSize(380, 150); - this.setTitle("Incoming Connection"); + this.setTitle("Incoming call"); ImageIcon image = new ImageIcon("F:\\chaticon.jpg"); this.setIconImage(image.getImage()); + final JFrame frame= new JFrame(); final JPanel jPanel = new JPanel(); jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS)); final JPanel pan1 = new JPanel(); @@ -18,17 +19,21 @@ public IncomingConnection() { final JButton declineb = new JButton("Decline"); acceptb.addActionListener(new ActionListener(){ + @Override public void actionPerformed(ActionEvent e){ - - } + Protocol.statusBusy = true; + frame.dispose(); + } }); declineb.addActionListener(new ActionListener(){ + @Override public void actionPerformed(ActionEvent e){ - - } + Protocol.statusBusy = false; + frame.dispose(); + } }); declineb.setPreferredSize(new Dimension(100, 25)); @@ -44,14 +49,15 @@ public void actionPerformed(ActionEvent e){ jPanel.add(pan1); jPanel.add(pan2); - - this.add(jPanel); - this.setLocationRelativeTo(null); - this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - this.setVisible(true); + frame.add(jPanel); + frame.pack(); + //this.add(jPanel); + //this.setLocationRelativeTo(null); + frame.setLocationRelativeTo(null); + setDefaultCloseOperation(DISPOSE_ON_CLOSE); + //this.setVisible(true); + frame.setVisible(true); } - public static void main(String[] args) { - IncomingConnection incomingConnection = new IncomingConnection(); - } + } diff --git a/src/Protocol.java b/src/Protocol.java index 339cc5f..e292f34 100644 --- a/src/Protocol.java +++ b/src/Protocol.java @@ -1,7 +1,5 @@ - public class Protocol { public static final int PORT =28411; - public static boolean isBusy; public static String localNick = "default"; public static String remoteNick; public static String IP;