|
@@ -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;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|