diff --git a/src/main/java/envoy/client/EnvoyClient.java b/src/main/java/envoy/client/EnvoyClient.java
index c659c4e..5380aed 100644
--- a/src/main/java/envoy/client/EnvoyClient.java
+++ b/src/main/java/envoy/client/EnvoyClient.java
@@ -1,8 +1,12 @@
package envoy.client;
+import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringReader;
import java.time.Instant;
import java.util.Arrays;
+import java.util.List;
import java.util.Properties;
import javax.ws.rs.client.Client;
@@ -15,9 +19,27 @@ import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import envoy.client.ui.ChatWindow;
import envoy.schema.Message;
import envoy.schema.Messages;
+import envoy.schema.User;
+import envoy.schema.Users;
import envoy.schema.ObjectFactory;
/**
@@ -29,6 +51,7 @@ import envoy.schema.ObjectFactory;
public class EnvoyClient {
+ ChatWindow chatWindow = new ChatWindow();
private ObjectFactory objectFactory = new ObjectFactory();
private DatatypeFactory datatypeFactory;
@@ -120,4 +143,44 @@ public class EnvoyClient {
wrapper.getMessage().addAll(Arrays.asList(messages));
return wrapper;
}
+
+ public void getUsersListXml () throws ClientProtocolException, IOException, SAXException, ParserConfigurationException {
+
+ /*HttpClient client = new DefaultHttpClient();
+ HttpGet request = new HttpGet(String.format("%s:%s/envoy-server/rest/user",
+ serverProps.getProperty("server"),
+ serverProps.getProperty("port")));
+ HttpResponse response = client.execute(request);
+
+ BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
+ System.out.println(rd.readLine());
+
+ String inputLine;
+ StringBuffer response1 = new StringBuffer();
+ while((inputLine = rd.readLine()) != null) {
+ response1.append(inputLine);
+ }
+ */
+
+ Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
+ .parse(String.format("%s:%s/envoy-server/rest/user",
+ serverProps.getProperty("server"),
+ serverProps.getProperty("port")));
+ NodeList errNodes = doc.getElementsByTagName("User");
+
+ for (int i = 0; i < errNodes.getLength(); i++) {
+ if(errNodes.getLength() > 0) {
+ Element err = (Element)errNodes.item(i);
+ //System.out.println("Name: " + err.getElementsByTagName("Name").item(0).getTextContent());
+ //System.out.println("Id: " + err.getElementsByTagName("ID").item(0).getTextContent());
+ User user = new User();
+ user.setName(err.getElementsByTagName("Name").item(0).getTextContent());
+ user.setID(Long.parseLong(err.getElementsByTagName("ID").item(0).getTextContent()));
+ chatWindow.addUserToList(user);
+
+ }
+ }
+ chatWindow.printUserListElements();
+ chatWindow.loadUserJList();
+ }
}
\ No newline at end of file
diff --git a/src/main/java/envoy/client/ui/ChatWindow.java b/src/main/java/envoy/client/ui/ChatWindow.java
index 8fb801e..056a4c5 100644
--- a/src/main/java/envoy/client/ui/ChatWindow.java
+++ b/src/main/java/envoy/client/ui/ChatWindow.java
@@ -7,6 +7,9 @@ import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
+import java.awt.List;
+import java.io.IOException;
+import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
@@ -17,9 +20,14 @@ import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.http.client.ClientProtocolException;
+import org.xml.sax.SAXException;
import envoy.client.EnvoyClient;
import envoy.schema.Message;
+import envoy.schema.User;
/**
* Project: envoy-client
@@ -31,11 +39,13 @@ public class ChatWindow extends JFrame {
private static final long serialVersionUID = 6865098428255463649L;
- private JPanel contentPane = new JPanel();
- private EnvoyClient envoyClient = new EnvoyClient();
+ private JPanel contentPane = new JPanel();
+ private static EnvoyClient envoyClient = new EnvoyClient();
public DefaultListModel listModel = new DefaultListModel<>();
+ public ArrayList userList = new ArrayList();
+
public ChatWindow() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 600, 800);
@@ -47,10 +57,10 @@ public class ChatWindow extends JFrame {
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
GridBagLayout gbl_contentPane = new GridBagLayout();
- gbl_contentPane.columnWidths = new int[] { 1, 1, 1 };
- gbl_contentPane.rowHeights = new int[] { 1, 1, 1 };
- gbl_contentPane.columnWeights = new double[] { 0.3, 1.0, 0.1 };
- gbl_contentPane.rowWeights = new double[] { 0.05, 1, 0.07 };
+ gbl_contentPane.columnWidths = new int[] { 1, 1, 1 };
+ gbl_contentPane.rowHeights = new int[] { 1, 1, 1 };
+ gbl_contentPane.columnWeights = new double[] { 0.3, 1.0, 0.1 };
+ gbl_contentPane.rowWeights = new double[] { 0.05, 1, 0.07 };
contentPane.setLayout(gbl_contentPane);
JList elementList = new JList<>();
@@ -74,10 +84,10 @@ public class ChatWindow extends JFrame {
scrollPane.setBorder(null);
GridBagConstraints gbc_scrollPane = new GridBagConstraints();
- gbc_scrollPane.fill = GridBagConstraints.BOTH;
- gbc_scrollPane.gridwidth = 2;
- gbc_scrollPane.gridx = 1;
- gbc_scrollPane.gridy = 1;
+ gbc_scrollPane.fill = GridBagConstraints.BOTH;
+ gbc_scrollPane.gridwidth = 2;
+ gbc_scrollPane.gridx = 1;
+ gbc_scrollPane.gridy = 1;
gbc_scrollPane.insets = new Insets(10, 10, 10, 10);
@@ -94,9 +104,9 @@ public class ChatWindow extends JFrame {
messageEnterTextfield.setBorder(new EmptyBorder(5, 5, 5, 5));
GridBagConstraints gbc_moveSelectionMessageEnterTextfield = new GridBagConstraints();
- gbc_moveSelectionMessageEnterTextfield.fill = GridBagConstraints.BOTH;
- gbc_moveSelectionMessageEnterTextfield.gridx = 1;
- gbc_moveSelectionMessageEnterTextfield.gridy = 2;
+ gbc_moveSelectionMessageEnterTextfield.fill = GridBagConstraints.BOTH;
+ gbc_moveSelectionMessageEnterTextfield.gridx = 1;
+ gbc_moveSelectionMessageEnterTextfield.gridy = 2;
gbc_moveSelectionMessageEnterTextfield.insets = new Insets(10, 10, 10, 10);
@@ -110,28 +120,50 @@ public class ChatWindow extends JFrame {
GridBagConstraints gbc_moveSelectionPostButton = new GridBagConstraints();
- gbc_moveSelectionPostButton.fill = GridBagConstraints.BOTH;
- gbc_moveSelectionPostButton.gridx = 2;
- gbc_moveSelectionPostButton.gridy = 2;
+ gbc_moveSelectionPostButton.fill = GridBagConstraints.BOTH;
+ gbc_moveSelectionPostButton.gridx = 2;
+ gbc_moveSelectionPostButton.gridy = 2;
gbc_moveSelectionPostButton.insets = new Insets(10, 10, 10, 10);
contentPane.add(postButton, gbc_moveSelectionPostButton);
postButton.addActionListener((evt) -> {
- if (!messageEnterTextfield.getText().isEmpty()) try {
- final Message message = envoyClient.createMessage("Kai", "Maxi", messageEnterTextfield.getText());
- envoyClient.sendMessage(message);
- appendMessageToChat(message);
- messageEnterTextfield.setText("");
- } catch (Exception e) {
- JOptionPane.showMessageDialog(this,
- "An exception occured while sending a message. See the log for more details.",
- "Exception occured",
- JOptionPane.ERROR_MESSAGE);
- e.printStackTrace();
- }
+ if (!messageEnterTextfield.getText().isEmpty())
+ try {
+ final Message message = envoyClient.createMessage("Kai", "Maxi", messageEnterTextfield.getText());
+ envoyClient.sendMessage(message);
+ appendMessageToChat(message);
+ messageEnterTextfield.setText("");
+ } catch (Exception e) {
+ JOptionPane.showMessageDialog(this,
+ "An exception occured while sending a message. See the log for more details.",
+ "Exception occured", JOptionPane.ERROR_MESSAGE);
+ e.printStackTrace();
+ }
});
+
+ }
+
+ public void loadUserJList() {
+ // User List
+ JList userJList = new JList<>();
+ DefaultListModel userJListModel = new DefaultListModel<>();
+ for (int i = 0; i < userList.size(); i++) {
+ userJListModel.addElement(userList.get(i));
+ }
+ userJList.setModel(userJListModel);
+
+ GridBagConstraints gbc_userList = new GridBagConstraints();
+ gbc_userList.fill = GridBagConstraints.BOTH;
+ gbc_userList.gridx = 0;
+ gbc_userList.gridy = 1;
+
+ // gbc_userList.insets = new Insets(10, 10, 10, 10);
+ System.out.println(userJListModel.getSize());
+ System.out.println("test");
+
+ contentPane.add(userJList, gbc_userList);
}
/**
@@ -155,7 +187,20 @@ public class ChatWindow extends JFrame {
+ "