Implemented message ID generation and generator requests
* Persisting IdGenerator in LocalDB * Added Client#requestIdGenerator() * Listening to MessageCreationEvents in ChatWindow
This commit is contained in:
@ -10,6 +10,7 @@ import javax.swing.*;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
|
||||
import envoy.client.*;
|
||||
import envoy.client.event.MessageCreationEvent;
|
||||
import envoy.client.event.ThemeChangeEvent;
|
||||
import envoy.client.ui.list.ComponentList;
|
||||
import envoy.client.ui.settings.SettingsScreen;
|
||||
@ -175,7 +176,9 @@ public class ChatWindow extends JFrame {
|
||||
|
||||
messageList.setModel(currentChat.getModel());
|
||||
scrollPane.setChatOpened(true);
|
||||
contentPane.revalidate();
|
||||
|
||||
revalidate();
|
||||
repaint();
|
||||
}
|
||||
});
|
||||
|
||||
@ -194,13 +197,20 @@ public class ChatWindow extends JFrame {
|
||||
contentPane.add(userList, gbc_userList);
|
||||
contentPane.revalidate();
|
||||
|
||||
// Listen to theme changes
|
||||
EventBus.getInstance().register(ThemeChangeEvent.class, (evt) -> applyTheme((Theme) evt.get()));
|
||||
|
||||
// Listen to received messages
|
||||
EventBus.getInstance().register(MessageCreationEvent.class, (evt) -> {
|
||||
Message message = ((MessageCreationEvent) evt).get();
|
||||
localDB.getChats().stream().filter(c -> c.getRecipient().getId() == message.getRecipientId()).findFirst().get().appendMessage(message);
|
||||
});
|
||||
|
||||
contentPane.revalidate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to immediately reload the ChatWindow when settings were changed.
|
||||
* Used to immediately reload the {@link ChatWindow} when settings were changed.
|
||||
*
|
||||
* @param theme the theme to change colors into
|
||||
* @since Envoy v0.2-alpha
|
||||
@ -247,7 +257,7 @@ public class ChatWindow extends JFrame {
|
||||
if (!messageEnterTextArea.getText().isEmpty()) try {
|
||||
|
||||
// Create message
|
||||
final Message message = new MessageBuilder(localDB.getUser().getId(), currentChat.getRecipient().getId())
|
||||
final Message message = new MessageBuilder(localDB.getUser().getId(), currentChat.getRecipient().getId(), localDB.getIdGenerator())
|
||||
.setText(messageEnterTextArea.getText())
|
||||
.build();
|
||||
|
||||
@ -262,12 +272,17 @@ public class ChatWindow extends JFrame {
|
||||
// Clear text field
|
||||
messageEnterTextArea.setText("");
|
||||
|
||||
// Update UI
|
||||
revalidate();
|
||||
repaint();
|
||||
|
||||
// Request a new id generator if all ids were used
|
||||
if (!localDB.getIdGenerator().hasNext()) client.requestIdGenerator();
|
||||
|
||||
} catch (Exception e) {
|
||||
JOptionPane.showMessageDialog(this,
|
||||
"An exception occured while sending a message. See the log for more details.",
|
||||
"Exception occured",
|
||||
"Error sending message:\n" + e.toString(),
|
||||
"Message sending error",
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
Reference in New Issue
Block a user