From bd0da338a7430e992a05e8af15c4bdd616ffb979 Mon Sep 17 00:00:00 2001 From: kske Date: Sat, 28 Mar 2020 15:32:24 +0100 Subject: [PATCH] Added user and message loading and message posting --- src/main/java/envoy/client/data/Chat.java | 29 ++- src/main/java/envoy/client/data/LocalDB.java | 2 +- src/main/java/envoy/client/ui/ChatScene.fxml | 22 ++- .../envoy/client/ui/ChatSceneController.java | 126 ++++++++++++- .../java/envoy/client/ui/MessageListCell.java | 3 +- src/main/java/envoy/client/ui/Startup.java | 173 +++++++++--------- .../java/envoy/client/ui/UserListCell.java | 6 +- .../envoy/client/ui/container/ChatWindow.java | 30 +-- 8 files changed, 252 insertions(+), 139 deletions(-) diff --git a/src/main/java/envoy/client/data/Chat.java b/src/main/java/envoy/client/data/Chat.java index 162b256..6f0715c 100644 --- a/src/main/java/envoy/client/data/Chat.java +++ b/src/main/java/envoy/client/data/Chat.java @@ -2,9 +2,10 @@ package envoy.client.data; import java.io.IOException; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; import envoy.client.net.WriteProxy; -import envoy.client.ui.list.Model; import envoy.data.Message; import envoy.data.Message.MessageStatus; import envoy.data.User; @@ -23,12 +24,12 @@ import envoy.event.MessageStatusChangeEvent; * @author Kai S. K. Engelbart * @since Envoy Client v0.1-alpha */ -public class Chat implements Serializable { +public final class Chat implements Serializable { - private static final long serialVersionUID = 0L; + private final User recipient; + private final List messages = new ArrayList<>(); - private final User recipient; - private final Model model = new Model<>(); + private static final long serialVersionUID = 1L; /** * Provides the list of messages that the recipient receives.
@@ -39,14 +40,6 @@ public class Chat implements Serializable { */ public Chat(User recipient) { this.recipient = recipient; } - /** - * Appends a message to the bottom of this chat - * - * @param message the message to append - * @since Envoy Client v0.1-alpha - */ - public void appendMessage(Message message) { model.add(message); } - /** * Sets the status of all chat messages received from the recipient to * {@code READ} starting from the bottom and stopping once a read message is @@ -59,8 +52,8 @@ public class Chat implements Serializable { * @since Envoy Client v0.3-alpha */ public void read(WriteProxy writeProxy) throws IOException { - for (int i = model.size() - 1; i >= 0; --i) { - final Message m = model.get(i); + for (int i = messages.size() - 1; i >= 0; --i) { + final Message m = messages.get(i); if (m.getSenderID() == recipient.getID()) if (m.getStatus() == MessageStatus.READ) break; else { m.setStatus(MessageStatus.READ); @@ -74,13 +67,13 @@ public class Chat implements Serializable { * the status {@code READ} * @since Envoy Client v0.3-alpha */ - public boolean isUnread() { return !model.isEmpty() && model.get(model.size() - 1).getStatus() != MessageStatus.READ; } + public boolean isUnread() { return !messages.isEmpty() && messages.get(messages.size() - 1).getStatus() != MessageStatus.READ; } /** * @return all messages in the current chat - * @since Envoy Client v0.1-alpha + * @since Envoy Client v0.1-beta */ - public Model getModel() { return model; } + public List getMessages() { return messages; } /** * @return the recipient of a message diff --git a/src/main/java/envoy/client/data/LocalDB.java b/src/main/java/envoy/client/data/LocalDB.java index 0980289..1e36307 100644 --- a/src/main/java/envoy/client/data/LocalDB.java +++ b/src/main/java/envoy/client/data/LocalDB.java @@ -154,7 +154,7 @@ public abstract class LocalDB { */ public Message getMessage(long id) { for (Chat c : chats) - for (Message m : c.getModel()) + for (Message m : c.getMessages()) if (m.getID() == id) return m; return null; } diff --git a/src/main/java/envoy/client/ui/ChatScene.fxml b/src/main/java/envoy/client/ui/ChatScene.fxml index cc8b797..43af60d 100644 --- a/src/main/java/envoy/client/ui/ChatScene.fxml +++ b/src/main/java/envoy/client/ui/ChatScene.fxml @@ -29,16 +29,20 @@ vgrow="SOMETIMES" /> - -