From 5a718aa1c9492ae0f85de5671cb0aadd81df5a8d Mon Sep 17 00:00:00 2001 From: DieGurke <55625494+DieGurke@users.noreply.github.com> Date: Tue, 11 Feb 2020 18:15:15 +0100 Subject: [PATCH] Implemented contact list update --- .../java/envoy/client/event/SendEvent.java | 23 +++++++++++++++++++ src/main/java/envoy/client/net/Client.java | 14 +++++++++++ src/main/java/envoy/client/ui/ChatWindow.java | 6 ----- .../client/ui/ContactsSearchRenderer.java | 7 +++++- 4 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 src/main/java/envoy/client/event/SendEvent.java diff --git a/src/main/java/envoy/client/event/SendEvent.java b/src/main/java/envoy/client/event/SendEvent.java new file mode 100644 index 0000000..2d95fc8 --- /dev/null +++ b/src/main/java/envoy/client/event/SendEvent.java @@ -0,0 +1,23 @@ +package envoy.client.event; + +import envoy.event.Event; + +/** + * Project: envoy-client
+ * File: SendEvent.java
+ * Created: 11.02.2020
+ * + * @author: Maximilian Käfer + * + * @since Envoy v0.3-alpha + */ +public class SendEvent extends Event> { + + private static final long serialVersionUID = 8372746924138839060L; + + /** + * @param value the event to send to the server + */ + public SendEvent(Event value) { super(value); } + +} diff --git a/src/main/java/envoy/client/net/Client.java b/src/main/java/envoy/client/net/Client.java index 550b7f2..b9985c1 100644 --- a/src/main/java/envoy/client/net/Client.java +++ b/src/main/java/envoy/client/net/Client.java @@ -12,9 +12,11 @@ import javax.naming.TimeLimitExceededException; import envoy.client.data.Cache; import envoy.client.data.Config; import envoy.client.data.LocalDb; +import envoy.client.event.SendEvent; import envoy.client.util.EnvoyLog; import envoy.data.*; import envoy.event.*; +import envoy.event.ContactOperationEvent.Operation; import envoy.util.SerializationUtils; /** @@ -116,6 +118,18 @@ public class Client implements Closeable { // Process contact searches receiver.registerProcessor(ContactSearchResult.class, EventBus.getInstance()::dispatch); + receiver.registerProcessor(Contacts.class, + contacts -> EventBus.getInstance().dispatch(new ContactOperationEvent(contacts.getContacts().get(0), Operation.ADD))); + + // Send event + EventBus.getInstance().register(SendEvent.class, evt -> { + try { + sendEvent(((SendEvent) evt).get()); + } catch (IOException e) { + e.printStackTrace(); + } + }); + // Request a generator if none is present or the existing one is consumed if (!localDb.hasIdGenerator() || !localDb.getIdGenerator().hasNext()) requestIdGenerator(); } diff --git a/src/main/java/envoy/client/ui/ChatWindow.java b/src/main/java/envoy/client/ui/ChatWindow.java index 5a0898f..a278325 100644 --- a/src/main/java/envoy/client/ui/ChatWindow.java +++ b/src/main/java/envoy/client/ui/ChatWindow.java @@ -411,12 +411,6 @@ public class ChatWindow extends JFrame { EventBus.getInstance().register(ContactOperationEvent.class, (evt) -> { - try { - client.sendEvent(evt); - } catch (IOException e) { - e.printStackTrace(); - } - User contact = (User) evt.get(); // Clearing the search field and the searchResultList diff --git a/src/main/java/envoy/client/ui/ContactsSearchRenderer.java b/src/main/java/envoy/client/ui/ContactsSearchRenderer.java index c469475..078e289 100644 --- a/src/main/java/envoy/client/ui/ContactsSearchRenderer.java +++ b/src/main/java/envoy/client/ui/ContactsSearchRenderer.java @@ -7,6 +7,7 @@ import java.awt.Font; import javax.swing.*; import envoy.client.Settings; +import envoy.client.event.SendEvent; import envoy.client.ui.list.ComponentList; import envoy.client.ui.list.ComponentListCellRenderer; import envoy.data.User; @@ -61,7 +62,11 @@ public class ContactsSearchRenderer implements ComponentListCellRenderer { add.setBackground(list.getBackground()); add.setForeground(list.getForeground()); - add.addActionListener((evt) -> { EventBus.getInstance().dispatch(new ContactOperationEvent(value, ContactOperationEvent.Operation.ADD)); }); + add.addActionListener(evt -> { + ContactOperationEvent contactsOperationEvent = new ContactOperationEvent(value, ContactOperationEvent.Operation.ADD); + EventBus.getInstance().dispatch(contactsOperationEvent); + EventBus.getInstance().dispatch(new SendEvent(contactsOperationEvent)); + }); panel.add(add);