Bläddra i källkod

Added a fancy gui!

jancoow 10 år sedan
förälder
incheckning
60fb76773a

+ 1 - 1
.classpath

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-8-openjdk"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>

+ 87 - 0
src/client/view/ChatPanel.java

@@ -0,0 +1,87 @@
+package client.view;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.GridLayout;
+import java.util.ArrayList;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import server.network.NetworkMessage;
+public class ChatPanel extends JPanel{
+	//Only for gui testing:
+	Color color = Color.red;
+	String name = "Janco";
+	
+	private ChatPanelMessage messagepanel;
+	private ChatPanelInput inputpanel;
+	
+	public ChatPanel(){
+		setBackground(Color.WHITE);
+		JLabel label = new JLabel(name);
+		label.setForeground(color);
+		setLayout(new BorderLayout());
+		add(label, BorderLayout.NORTH);
+		add(messagepanel = new ChatPanelMessage(), BorderLayout.CENTER);
+		add(inputpanel = new ChatPanelInput(), BorderLayout.SOUTH);		
+	}
+	
+	public class ChatPanelInput extends JPanel{
+		JTextField input;
+		JButton send;
+		
+		public ChatPanelInput(){
+			input = new JTextField();
+			send = new JButton("Verzenden");
+			setLayout(new GridLayout(1, 2));
+			add(input);
+			add(send);
+			setOpaque(false);
+		}
+	}
+	
+	public class ChatPanelMessage extends JPanel{
+		private ArrayList<NetworkMessage> messages;
+		public ChatPanelMessage(){
+			setPreferredSize(new Dimension(1000, 1000));
+			this.add(new JLabel("Berichten:"));
+			messages = new ArrayList<NetworkMessage>();
+		}
+		
+		@Override
+		public void paintComponent(Graphics g)
+		{
+			super.paintComponent(g);
+			Graphics2D g2d = (Graphics2D) g;
+			int y = 20;
+			for(NetworkMessage m:messages){
+				g2d.setColor(m.getC());
+				if(m.getUsername().equals(getName())){
+					g2d.drawString(m.getUsername() + ": " + m.getMessage(), 10, y +=18);
+				}else{
+					g2d.drawString(m.getUsername() + ": " + m.getMessage(), getWidth()-100, y +=18);
+				}
+			}
+		}
+	}
+	
+	public void addMessage(NetworkMessage m){
+		messagepanel.messages.add(m);
+		repaint();
+	}
+	
+	public JButton getSendButton(){
+		return inputpanel.send;
+	}
+	
+	public JTextField getInputField(){
+		return inputpanel.input;
+	}
+}
+

+ 7 - 4
src/client/view/Panel.java → src/client/view/MainPanel.java

@@ -1,17 +1,20 @@
 package client.view;
 
+import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 
 import javax.swing.JPanel;
 
-public class Panel extends JPanel {
+public class MainPanel extends JPanel {
 
-	public Panel()
+	public MainPanel()
 	{
-		super();
-		setBackground(Color.WHITE);
+		setLayout(new BorderLayout());
+		ChatPanel chat = new ChatPanel();
+		this.add(chat);
+		new NetworkConnection(chat);
 	}
 	
 	@Override

+ 81 - 0
src/client/view/NetworkConnection.java

@@ -0,0 +1,81 @@
+package client.view;
+
+import java.awt.Color;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.net.Socket;
+
+import server.network.NetworkMessage;
+
+public class NetworkConnection {
+	private ChatPanel chatpanel;
+	private Socket serversocket;
+	private Thread runningthread;
+	ObjectOutputStream output;
+	
+	public NetworkConnection(ChatPanel chatpanel){
+		this.chatpanel = chatpanel;
+		connect();
+	}
+	
+	public void connect(){
+		try {
+			serversocket = new Socket("jancokock.me", 5499);
+			output = new ObjectOutputStream(serversocket.getOutputStream());
+			runningthread = new Thread(new Runnable() {
+				@Override
+				public void run() {
+					ObjectInputStream input;
+					try {
+						input = new ObjectInputStream(serversocket.getInputStream());
+						while(true){
+							try {
+								NetworkMessage m = (NetworkMessage)input.readObject();
+								chatpanel.addMessage(m);
+							} catch (ClassNotFoundException e) {
+								e.printStackTrace();
+							}
+						}
+					} catch (IOException e) {
+						e.printStackTrace();
+					}
+				}
+			});
+			chatpanel.getSendButton().addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					sendMessage(chatpanel.getInputField().getText());
+					chatpanel.getInputField().setText("");
+				}
+			});
+			runningthread.start();
+		} catch (IOException e1) {
+			System.out.println("Er kon geen connectie naar de server gemaakt worden.");
+			e1.printStackTrace();
+		}
+	}
+	public void disconnect(){
+		if(serversocket.isConnected()){
+			try {
+				serversocket.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+		runningthread.stop();
+	}
+	
+	public void sendMessage(String message){
+		try {
+			NetworkMessage nwmessage = new NetworkMessage(message,  Color.red, "Janco" );
+			chatpanel.addMessage(nwmessage);
+			output.writeObject(nwmessage);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		
+	}
+}

+ 6 - 2
src/client/view/Window.java

@@ -1,5 +1,7 @@
 package client.view;
 
+import java.awt.Panel;
+
 import javax.swing.JFrame;
 
 public class Window extends JFrame {
@@ -9,11 +11,13 @@ public class Window extends JFrame {
 		super("JK Chat");
 		setDefaultCloseOperation(3);
 		setSize(400, 600);
+		setVisible(true);
 		
-		Panel p = new Panel();
+		MainPanel p = new MainPanel();
 		
 		setContentPane(p);
+		revalidate();
 		
-		setVisible(true);
+
 	}
 }

+ 1 - 1
src/clientest/Client.java

@@ -12,7 +12,7 @@ import server.network.NetworkMessage;
 public class Client {
 	public Client(){
 		try {
-			Socket client = new Socket("localhost", 5499);
+			Socket client = new Socket("jancokock.me", 5499);
 			Thread test = new Thread(new Runnable() {
 				@Override
 				public void run() {

+ 1 - 0
src/server/Message.java

@@ -3,6 +3,7 @@ package server;
 public class Message {
 	private String message;
 	private User user;
+	@SuppressWarnings("unused")
 	private long time;
 	
 	public Message(String message, User user){

+ 12 - 5
src/server/User.java

@@ -1,19 +1,16 @@
 package server;
 
 import java.awt.Color;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.net.Socket;
 
 import server.network.NetworkMessage;
-import server.network.NetworkNotification;
 
 public class User {
-	private String username;
-	private Color color;
+	String username;
+	Color color;
 	private Socket client;
 
 	private ObjectInputStream in;
@@ -40,6 +37,8 @@ public class User {
 							Object objectinput = in.readObject();
 							if(objectinput instanceof NetworkMessage){
 								NetworkMessage input = (NetworkMessage)objectinput;
+								setUsername(input.getUsername());
+								setColor(input.getC());
 								server.addMessage(new Message(input.getMessage(), User.this));
 							}
 						} catch (ClassNotFoundException e) {
@@ -76,6 +75,14 @@ public class User {
 	public String getUsername() {
 		return username;
 	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public void setColor(Color color) {
+		this.color = color;
+	}
 	
 	
 }