From 99d68a9f170795c1af3e4ee193bc2413a64fb6ab Mon Sep 17 00:00:00 2001 From: aylayanza Date: Fri, 12 May 2017 02:17:48 +0700 Subject: [PATCH] Ayla - 1301154455 - IF3907 task 4 done --- build/classes/.netbeans_automatic_build | 0 build/classes/.netbeans_update_resources | 0 .../classes/Driver/DriverClientConsole.class | Bin 0 -> 535 bytes build/classes/Driver/DriverClientGui.class | Bin 0 -> 492 bytes build/classes/Driver/DriverServer.class | Bin 0 -> 1085 bytes build/classes/Model/ConnectionThread.class | Bin 0 -> 1735 bytes .../Model/ConsoleApplication$ReadInput.class | Bin 0 -> 1229 bytes .../Model/ConsoleApplication$WriteInput.class | Bin 0 -> 1080 bytes build/classes/Model/ConsoleApplication.class | Bin 0 -> 1407 bytes build/classes/chatGUI/ChatView$1.class | Bin 0 -> 526 bytes build/classes/chatGUI/ChatView.class | Bin 0 -> 5295 bytes build/classes/chatGUI/ChatView.form | 69 ++++++++++ .../chatGUI/JChatController$WriteOutput.class | Bin 0 -> 1215 bytes build/classes/chatGUI/JChatController.class | Bin 0 -> 2052 bytes build/classes/javaChat/ClientConnection.class | Bin 0 -> 1764 bytes build/classes/javaChat/Connection.class | Bin 0 -> 3500 bytes build/classes/javaChat/ServerConnection.class | Bin 0 -> 1538 bytes nbproject/private/private.properties | 2 +- nbproject/project.properties | 2 +- src/Driver/DriverClientConsole.java | 14 ++ src/Driver/DriverClientGui.java | 14 ++ src/Driver/DriverServer.java | 24 ++++ src/Model/ConnectionThread.java | 47 +++++++ src/Model/ConsoleApplication.java | 58 +++++++++ src/chatGUI/ChatView.form | 69 ++++++++++ src/chatGUI/ChatView.java | 121 ++++++++++++++++++ src/chatGUI/JChatController.java | 56 ++++++++ 27 files changed, 474 insertions(+), 2 deletions(-) create mode 100644 build/classes/.netbeans_automatic_build create mode 100644 build/classes/.netbeans_update_resources create mode 100644 build/classes/Driver/DriverClientConsole.class create mode 100644 build/classes/Driver/DriverClientGui.class create mode 100644 build/classes/Driver/DriverServer.class create mode 100644 build/classes/Model/ConnectionThread.class create mode 100644 build/classes/Model/ConsoleApplication$ReadInput.class create mode 100644 build/classes/Model/ConsoleApplication$WriteInput.class create mode 100644 build/classes/Model/ConsoleApplication.class create mode 100644 build/classes/chatGUI/ChatView$1.class create mode 100644 build/classes/chatGUI/ChatView.class create mode 100644 build/classes/chatGUI/ChatView.form create mode 100644 build/classes/chatGUI/JChatController$WriteOutput.class create mode 100644 build/classes/chatGUI/JChatController.class create mode 100644 build/classes/javaChat/ClientConnection.class create mode 100644 build/classes/javaChat/Connection.class create mode 100644 build/classes/javaChat/ServerConnection.class create mode 100644 src/Driver/DriverClientConsole.java create mode 100644 src/Driver/DriverClientGui.java create mode 100644 src/Driver/DriverServer.java create mode 100644 src/Model/ConnectionThread.java create mode 100644 src/Model/ConsoleApplication.java create mode 100644 src/chatGUI/ChatView.form create mode 100644 src/chatGUI/ChatView.java create mode 100644 src/chatGUI/JChatController.java diff --git a/build/classes/.netbeans_automatic_build b/build/classes/.netbeans_automatic_build new file mode 100644 index 0000000..e69de29 diff --git a/build/classes/.netbeans_update_resources b/build/classes/.netbeans_update_resources new file mode 100644 index 0000000..e69de29 diff --git a/build/classes/Driver/DriverClientConsole.class b/build/classes/Driver/DriverClientConsole.class new file mode 100644 index 0000000000000000000000000000000000000000..994be93bfc89b293069c27d60175fb98365d37fe GIT binary patch literal 535 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 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/build/classes/chatGUI/JChatController$WriteOutput.class b/build/classes/chatGUI/JChatController$WriteOutput.class new file mode 100644 index 0000000000000000000000000000000000000000..208ad4e65618b248154a05e4df6b4e1b1b7682b5 GIT binary patch literal 1215 zcmaJ>T~pIQ6g}HkQbLeYK&%u60d0%4Ac`L#iWMB3qRtd?d<^gj!7L;xUOMZ!wrG9V9TzKP70(-)|MGOez9D5QshU`a|7RV9O=&zG-tbZ zFfWkKv_xgs1Y$*RLke`2Y*#+5ZLdpz)m(QtlPr0b>8zQ)t>VUHOi>GTy!7orKC1B9TzO;8z5^7)WsJW;D+@ z!nd9q{|u4)g2-NoNpfr>2I%1foU5bIi+)DLhuP?HoJXpW>jN=SuH|x{Aig5HkJziy z4|LbVGvoVc+dcTT3uEOY;>q@X=zAfqd@s=U#J59hxf1SILIHijbuB;d7(rkK0*M3LIuz(Gm^(%||9Byn=XZ^= zX@M5gu`QQ29~O3v14G{A@=BEV2x5k|=SsC1+qJ{n0`bh~8WHne$r9)+*siryDQ{W+ zs3^uF7Z3U}%G9@nMDnui~331*eRbw|1FAdTB3)hPk(B?5mWh!aY;9dnAxHOw$U2 z;mOHKft#6Tyr)MMfo2to9ntz2YDz+lp9N+9yA{$!6~UY>3wgewMiVk99Uoyx$H%y& z<1(%YbTz{0_yIraFtDZJnGO>r9hO|4W1Ah&w8eDnz}B&gJ%KC7pbZr23n%?MI?9qn z&uP9-il@QV;eid3n)Q9ppO~1?@Ir@=JspAc0v)0J_BHXw;7)O)ItpA=qQ;gi*gp7?5>$;(Wbi)l$zW+_^e8j{)$V0LgJ(1y zuaiM&_#{-9+u~2mUYRe8C!em`DB50bg~Kd4Sw@)y6czb>v4FNOl^mCeJd_V$q%P3G zRM#Z{m-rwLfR7wv{IQAoSjS`^^P8ZY&CGR}Clhh*fRXH5#Ix^^SbvM;8;I;{h(r}F z@|&$f%ZfLMy;3kETnEs?RVP?GpY0CxaUDVzADKb0>j3OI36gTKFNm==7 z6{*EBiC;x)73rVxl!w?Km?4ce($MKKx^7>RH{(@wyhGB2rV8`{G-~wGVvNXlh&N8{1Z`5Zn51lzDVb8Y47!#Oxw}Rb zHV7Yr8}t|>9*7hFn=a!TKG*PthA$yB+-kefmBKV;q6`w2uQ-*HGAX}s6H^hjD4|xD l{v^JV>8J5+GK=b6Z!G?YF~Pr9F7DzYziGmBvbhE!{sFwT+-Cp) literal 0 HcmV?d00001 diff --git a/build/classes/javaChat/ClientConnection.class b/build/classes/javaChat/ClientConnection.class new file mode 100644 index 0000000000000000000000000000000000000000..36a9258a5c8a3e0dc3b35cc4726d9819c75a88dc GIT binary patch literal 1764 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 S@%FMNSkox834EzpUi}1$pizzh literal 0 HcmV?d00001 diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties index 1b6c36a..50a7fb1 100644 --- a/nbproject/private/private.properties +++ b/nbproject/private/private.properties @@ -1,2 +1,2 @@ compile.on.save=true -user.properties.file=C:\\Users\\ANDITYAARIFIANTO\\AppData\\Roaming\\NetBeans\\8.1\\build.properties +user.properties.file=C:\\Users\\DEWA\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties diff --git a/nbproject/project.properties b/nbproject/project.properties index de16b77..9b37b39 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -53,7 +53,7 @@ javadoc.splitindex=true javadoc.use=true javadoc.version=false javadoc.windowtitle= -main.class=task.Task +main.class=Driver.DriverServer manifest.file=manifest.mf meta.inf.dir=${src.dir}/META-INF mkdist.disabled=false diff --git a/src/Driver/DriverClientConsole.java b/src/Driver/DriverClientConsole.java new file mode 100644 index 0000000..ff7f555 --- /dev/null +++ b/src/Driver/DriverClientConsole.java @@ -0,0 +1,14 @@ + +package Driver; + + +import Model.ConsoleApplication; + +public class DriverClientConsole { + + public static void main(String[] args) { + + ConsoleApplication CA = new ConsoleApplication(); + CA.startChat(); + } +} diff --git a/src/Driver/DriverClientGui.java b/src/Driver/DriverClientGui.java new file mode 100644 index 0000000..0905a8a --- /dev/null +++ b/src/Driver/DriverClientGui.java @@ -0,0 +1,14 @@ + +package Driver; + + +import chatGUI.JChatController; + + +public class DriverClientGui { + + public static void main(String[] args) { + + JChatController JCC = new JChatController(); + } +} diff --git a/src/Driver/DriverServer.java b/src/Driver/DriverServer.java new file mode 100644 index 0000000..2f010e7 --- /dev/null +++ b/src/Driver/DriverServer.java @@ -0,0 +1,24 @@ + +package Driver; + +import Model.ConnectionThread; +import javaChat.ServerConnection; +import java.io.IOException; + +public class DriverServer { + + public static void main(String[] args) { + + try { + ServerConnection server = new ServerConnection(); + System.out.println("Server Information"); + System.out.println(server.getServerInformation()); + while (true) { + ConnectionThread connection = new ConnectionThread(server.getClient()); + connection.start(); + } + } catch (Exception x) { + System.out.println("Error..."); + } + } +} diff --git a/src/Model/ConnectionThread.java b/src/Model/ConnectionThread.java new file mode 100644 index 0000000..9b4e0bc --- /dev/null +++ b/src/Model/ConnectionThread.java @@ -0,0 +1,47 @@ + +package Model; + +import java.io.IOException; +import java.net.Socket; +import javaChat.Connection; + +public class ConnectionThread extends Thread { + + private Socket client; + private Connection connection; + + public ConnectionThread(Socket newClient) throws IOException{ + this.client = newClient; + connection = new Connection(client); + } + + public void run(){ + try { + connection.startChat("start The Chat "); + + System.out.println("---------------"); + System.out.println("new cilent connected"); + System.out.println("client information : "); + System.out.println(connection.getClientInformation()); + + String inputan; + String message; + + while((inputan = connection.readStream()) != null && inputan.equals("Quit")){ + message = "Client " + connection.getIpClient() + + "Said : " + inputan; + System.out.println(message); + connection.sendToAll(message); + } + + message = "Client from IP : " + connection.getIpClient() + + "Quit the chat room"; + System.out.println(message); + connection.sendToAll(message); + connection.disconnect(); + } catch (Exception x) { + System.out.println("Error..."); + } + } +} + diff --git a/src/Model/ConsoleApplication.java b/src/Model/ConsoleApplication.java new file mode 100644 index 0000000..e74b3aa --- /dev/null +++ b/src/Model/ConsoleApplication.java @@ -0,0 +1,58 @@ + +package Model; + +import javaChat.ClientConnection; + +public class ConsoleApplication { + + private ClientConnection client; + + public class ReadInput extends Thread{ + + public void run(){ + + try { + String inputKeyboard; + do { + System.out.println(">> "); + inputKeyboard = client.inputString(); + client.writeStream(inputKeyboard); + } while(!inputKeyboard.equals("quit")); + client.disconnect(); + } catch (Exception x) { + System.out.println("Error..."); + } + } + } + + public class WriteInput extends Thread{ + + public void run(){ + + try { + String inputan; + while ((inputan = client.readStream()) != null){ + System.out.println(inputan); + System.out.println(">> "); + } + } catch (Exception x) { + System.out.println("Error..."); + } + } + } + + public void startChat(){ + try { + client = new ClientConnection(); + System.out.println("input server IP : "); + String ip = client.inputString(); + client.connect(ip); + ReadInput in = new ReadInput(); + WriteInput out = new WriteInput(); + in.start(); + out.start(); + } catch (Exception x) { + System.out.println("Error..."); + } + } +} diff --git a/src/chatGUI/ChatView.form b/src/chatGUI/ChatView.form new file mode 100644 index 0000000..d7f23f5 --- /dev/null +++ b/src/chatGUI/ChatView.form @@ -0,0 +1,69 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/chatGUI/ChatView.java b/src/chatGUI/ChatView.java new file mode 100644 index 0000000..0f3fe07 --- /dev/null +++ b/src/chatGUI/ChatView.java @@ -0,0 +1,121 @@ + +package chatGUI; + +import java.awt.event.ActionListener; + + +public class ChatView extends javax.swing.JFrame { + + /** + * Creates new form ChatView + */ + public ChatView() { + initComponents(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jScrollPane1 = new javax.swing.JScrollPane(); + txAreaChat = new javax.swing.JTextArea(); + txFieldChat = new javax.swing.JTextField(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + txAreaChat.setEditable(false); + txAreaChat.setColumns(20); + txAreaChat.setRows(5); + txAreaChat.setText("Input Server IP Address :"); + jScrollPane1.setViewportView(txAreaChat); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 463, Short.MAX_VALUE) + .addComponent(txFieldChat)) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 273, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(txFieldChat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(18, Short.MAX_VALUE)) + ); + + pack(); + }// //GEN-END:initComponents + + /** + * @param args the command line arguments + */ + public static void main(String args[]) { + /* Set the Nimbus look and feel */ + // + /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. + * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html + */ + try { + for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { + if ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(ChatView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(ChatView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(ChatView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(ChatView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } + // + + /* Create and display the form */ + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new ChatView().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JTextArea txAreaChat; + private javax.swing.JTextField txFieldChat; + // End of variables declaration//GEN-END:variables + + public void setTxAreaChat(String message) { + txAreaChat.append(message + "\n"); + } + + public Object getTxFieldChat() { + return txFieldChat; + } + + public String getStringChat() { + return txFieldChat.getText(); + } + + public void setTxFieldChat(String message) { + this.txFieldChat.setText(message); + } + + public void addListener(ActionListener e) { + txFieldChat.addActionListener(e); + } +} diff --git a/src/chatGUI/JChatController.java b/src/chatGUI/JChatController.java new file mode 100644 index 0000000..8dc9e27 --- /dev/null +++ b/src/chatGUI/JChatController.java @@ -0,0 +1,56 @@ +package chatGUI; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javaChat.ClientConnection; + +public class JChatController implements ActionListener{ + + private ChatView view; + private ClientConnection client; + + public JChatController() { + view = new ChatView(); + view.setVisible(true); + view.addListener(this); + client = null; + } + + public class WriteOutput extends Thread{ + + public void run(){ + String inputan; + try { + while ((inputan = client.readStream()) != null){ + view.setTxAreaChat(inputan); + } + } catch (Exception x) { + System.out.println("Error..."); + } + } + } + + public void actionPerformed(ActionEvent ae){ + + Object source = ae.getSource(); + + if (source.equals(view.getTxFieldChat())){ + if (client == null){ + try { + client = new ClientConnection(); + String ip = view.getStringChat(); + client.connect(ip); + WriteOutput w = new WriteOutput(); + w.start(); + } catch (Exception x) { + System.out.println("Error..."); + } + } else { + String input = view.getStringChat(); + client.writeStream(input); + view.setTxFieldChat(""); + } + } + } +} +