Added message events, triggering message creation event
+ Abstract MessageEvent class with MessageCreationEvent and MessageModificationEvent subclasses + Made StatusTrayIcon an event handler - Fixed EventBus#getInstance not being static
This commit is contained in:
parent
b5badae773
commit
af7408142c
@ -13,6 +13,8 @@ import java.util.List;
|
|||||||
import javax.xml.datatype.DatatypeConfigurationException;
|
import javax.xml.datatype.DatatypeConfigurationException;
|
||||||
import javax.xml.datatype.DatatypeFactory;
|
import javax.xml.datatype.DatatypeFactory;
|
||||||
|
|
||||||
|
import envoy.client.event.EventBus;
|
||||||
|
import envoy.client.event.MessageCreationEvent;
|
||||||
import envoy.exception.EnvoyException;
|
import envoy.exception.EnvoyException;
|
||||||
import envoy.schema.Message;
|
import envoy.schema.Message;
|
||||||
import envoy.schema.Message.Metadata.MessageState;
|
import envoy.schema.Message.Metadata.MessageState;
|
||||||
@ -112,7 +114,7 @@ public class LocalDB {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a {@link Message} object serializable to XML.
|
* Creates a {@link Message} object serializable to XML.
|
||||||
*
|
*
|
||||||
* @param textContent The content (text) of the message
|
* @param textContent The content (text) of the message
|
||||||
* @return prepared {@link Message} object
|
* @return prepared {@link Message} object
|
||||||
*/
|
*/
|
||||||
@ -161,6 +163,9 @@ public class LocalDB {
|
|||||||
&& returnSync.getMessages().get(i).getMetadata().getState() == MessageState.RECEIVED) {
|
&& returnSync.getMessages().get(i).getMetadata().getState() == MessageState.RECEIVED) {
|
||||||
// these are the unread Messages from the server
|
// these are the unread Messages from the server
|
||||||
unreadMessagesSync.getMessages().add(returnSync.getMessages().get(i));
|
unreadMessagesSync.getMessages().add(returnSync.getMessages().get(i));
|
||||||
|
|
||||||
|
// Create and dispatch message creation event
|
||||||
|
EventBus.getInstance().dispatch(new MessageCreationEvent(returnSync.getMessages().get(i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (returnSync.getMessages().get(i).getMetadata().getMessageId() != 0 && returnSync.getMessages().get(i).getMetadata().getSender() == 0
|
if (returnSync.getMessages().get(i).getMetadata().getMessageId() != 0 && returnSync.getMessages().get(i).getMetadata().getSender() == 0
|
||||||
@ -225,7 +230,7 @@ public class LocalDB {
|
|||||||
/**
|
/**
|
||||||
* Adds the unread messages returned from the server in the latest sync to the
|
* Adds the unread messages returned from the server in the latest sync to the
|
||||||
* right chats in the LocalDB.
|
* right chats in the LocalDB.
|
||||||
*
|
*
|
||||||
* @param localDB
|
* @param localDB
|
||||||
* @since Envoy v0.1-alpha
|
* @since Envoy v0.1-alpha
|
||||||
*/
|
*/
|
||||||
@ -243,7 +248,7 @@ public class LocalDB {
|
|||||||
* {@code READ}.
|
* {@code READ}.
|
||||||
* <br>
|
* <br>
|
||||||
* Adds these messages to the {@code readMessages} {@link Sync} object.
|
* Adds these messages to the {@code readMessages} {@link Sync} object.
|
||||||
*
|
*
|
||||||
* @param currentChat
|
* @param currentChat
|
||||||
* @since Envoy v0.1-alpha
|
* @since Envoy v0.1-alpha
|
||||||
*/
|
*/
|
||||||
@ -259,7 +264,7 @@ public class LocalDB {
|
|||||||
/**
|
/**
|
||||||
* Adds all messages with state {@code WAITING} from the {@link LocalDB} to the
|
* Adds all messages with state {@code WAITING} from the {@link LocalDB} to the
|
||||||
* {@link Sync} object.
|
* {@link Sync} object.
|
||||||
*
|
*
|
||||||
* @since Envoy v0.1-alpha
|
* @since Envoy v0.1-alpha
|
||||||
*/
|
*/
|
||||||
private void addWaitingMessagesToSync() {
|
private void addWaitingMessagesToSync() {
|
||||||
@ -273,7 +278,7 @@ public class LocalDB {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears the {@code unreadMessagesSync} {@link Sync} object.
|
* Clears the {@code unreadMessagesSync} {@link Sync} object.
|
||||||
*
|
*
|
||||||
* @since Envoy v0.1-alpha
|
* @since Envoy v0.1-alpha
|
||||||
*/
|
*/
|
||||||
public void clearUnreadMessagesSync() { unreadMessagesSync.getMessages().clear(); }
|
public void clearUnreadMessagesSync() { unreadMessagesSync.getMessages().clear(); }
|
||||||
|
@ -8,7 +8,7 @@ import java.util.List;
|
|||||||
* Project: <strong>envoy-clientChess</strong><br>
|
* Project: <strong>envoy-clientChess</strong><br>
|
||||||
* File: <strong>EventBus.javaEvent.java</strong><br>
|
* File: <strong>EventBus.javaEvent.java</strong><br>
|
||||||
* Created: <strong>04.12.2019</strong><br>
|
* Created: <strong>04.12.2019</strong><br>
|
||||||
*
|
*
|
||||||
* @author Kai S. K. Engelbart
|
* @author Kai S. K. Engelbart
|
||||||
*/
|
*/
|
||||||
public class EventBus {
|
public class EventBus {
|
||||||
@ -19,7 +19,7 @@ public class EventBus {
|
|||||||
|
|
||||||
private EventBus() {}
|
private EventBus() {}
|
||||||
|
|
||||||
public EventBus getInstance() {
|
public static EventBus getInstance() {
|
||||||
if (eventBus == null) eventBus = new EventBus();
|
if (eventBus == null) eventBus = new EventBus();
|
||||||
return eventBus;
|
return eventBus;
|
||||||
}
|
}
|
||||||
|
18
src/main/java/envoy/client/event/MessageCreationEvent.java
Normal file
18
src/main/java/envoy/client/event/MessageCreationEvent.java
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package envoy.client.event;
|
||||||
|
|
||||||
|
import envoy.schema.Message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Project: <strong>envoy-client</strong><br>
|
||||||
|
* File: <strong>MessageCreationEvent.java</strong><br>
|
||||||
|
* Created: <strong>4 Dec 2019</strong><br>
|
||||||
|
*
|
||||||
|
* @author Kai S. K. Engelbart
|
||||||
|
*/
|
||||||
|
public class MessageCreationEvent extends MessageEvent {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param message the {@link Message} that has been created
|
||||||
|
*/
|
||||||
|
public MessageCreationEvent(Message message) { super(message); }
|
||||||
|
}
|
20
src/main/java/envoy/client/event/MessageEvent.java
Normal file
20
src/main/java/envoy/client/event/MessageEvent.java
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package envoy.client.event;
|
||||||
|
|
||||||
|
import envoy.schema.Message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Project: <strong>envoy-client</strong><br>
|
||||||
|
* File: <strong>MessageCreationEvent.java</strong><br>
|
||||||
|
* Created: <strong>4 Dec 2019</strong><br>
|
||||||
|
*
|
||||||
|
* @author Kai S. K. Engelbart
|
||||||
|
*/
|
||||||
|
public class MessageEvent implements Event<Message> {
|
||||||
|
|
||||||
|
protected final Message message;
|
||||||
|
|
||||||
|
public MessageEvent(Message message) { this.message = message; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Message get() { return message; }
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package envoy.client.event;
|
||||||
|
|
||||||
|
import envoy.schema.Message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Project: <strong>envoy-client</strong><br>
|
||||||
|
* File: <strong>MessageModificationEvent.java</strong><br>
|
||||||
|
* Created: <strong>4 Dec 2019</strong><br>
|
||||||
|
*
|
||||||
|
* @author Kai S. K. Engelbart
|
||||||
|
*/
|
||||||
|
public class MessageModificationEvent extends MessageEvent {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param message the {@link Message} that has been modified
|
||||||
|
*/
|
||||||
|
public MessageModificationEvent(Message message) { super(message); }
|
||||||
|
}
|
@ -8,9 +8,14 @@ import java.awt.SystemTray;
|
|||||||
import java.awt.Toolkit;
|
import java.awt.Toolkit;
|
||||||
import java.awt.TrayIcon;
|
import java.awt.TrayIcon;
|
||||||
import java.awt.TrayIcon.MessageType;
|
import java.awt.TrayIcon.MessageType;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import envoy.client.event.Event;
|
||||||
|
import envoy.client.event.EventBus;
|
||||||
|
import envoy.client.event.EventHandler;
|
||||||
|
import envoy.client.event.MessageCreationEvent;
|
||||||
import envoy.exception.EnvoyException;
|
import envoy.exception.EnvoyException;
|
||||||
import envoy.schema.Message;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Project: <strong>envoy-client</strong><br>
|
* Project: <strong>envoy-client</strong><br>
|
||||||
@ -20,7 +25,7 @@ import envoy.schema.Message;
|
|||||||
* @author Kai S. K. Engelbart
|
* @author Kai S. K. Engelbart
|
||||||
* @since Envoy v0.2-alpha
|
* @since Envoy v0.2-alpha
|
||||||
*/
|
*/
|
||||||
public class StatusTrayIcon {
|
public class StatusTrayIcon implements EventHandler {
|
||||||
|
|
||||||
private TrayIcon trayIcon;
|
private TrayIcon trayIcon;
|
||||||
|
|
||||||
@ -39,11 +44,12 @@ public class StatusTrayIcon {
|
|||||||
popup.add(exitMenuItem);
|
popup.add(exitMenuItem);
|
||||||
|
|
||||||
trayIcon.setPopupMenu(popup);
|
trayIcon.setPopupMenu(popup);
|
||||||
|
EventBus.getInstance().register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Makes this {@link StatusTrayIcon} appear in the system tray.
|
* Makes this {@link StatusTrayIcon} appear in the system tray.
|
||||||
*
|
*
|
||||||
* @throws EnvoyException
|
* @throws EnvoyException
|
||||||
*/
|
*/
|
||||||
public void show() throws EnvoyException {
|
public void show() throws EnvoyException {
|
||||||
@ -55,12 +61,17 @@ public class StatusTrayIcon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies the user of a message by displaying a popup.
|
* Notifies the user of a message by displaying a pop-up.
|
||||||
*
|
|
||||||
* @param message the {@link Message} object to display in the popup
|
|
||||||
*/
|
*/
|
||||||
public void displayMessageNotification(Message message) {
|
@Override
|
||||||
// TODO: Add event listener
|
public void handle(Event<?> event) {
|
||||||
trayIcon.displayMessage("New message received", message.getContent().get(0).getText(), MessageType.INFO);
|
trayIcon.displayMessage("New message received", ((MessageCreationEvent) event).get().getContent().get(0).getText(), MessageType.INFO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<Class<? extends Event<?>>> supports() {
|
||||||
|
Set<Class<? extends Event<?>>> supportedEvents = new HashSet<>();
|
||||||
|
supportedEvents.add(MessageCreationEvent.class);
|
||||||
|
return supportedEvents;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user