Implemented ComponentList rendering and integration of message list
This commit is contained in:
@ -12,7 +12,6 @@ import javax.swing.border.EmptyBorder;
|
||||
import envoy.client.*;
|
||||
import envoy.client.event.ThemeChangeEvent;
|
||||
import envoy.client.ui.list.ComponentList;
|
||||
import envoy.client.ui.list.ComponentListModel;
|
||||
import envoy.client.ui.settings.SettingsScreen;
|
||||
import envoy.client.util.EnvoyLog;
|
||||
import envoy.data.Message;
|
||||
@ -32,27 +31,29 @@ import envoy.event.EventBus;
|
||||
*/
|
||||
public class ChatWindow extends JFrame {
|
||||
|
||||
private static final long serialVersionUID = 6865098428255463649L;
|
||||
|
||||
// User specific objects
|
||||
private Client client;
|
||||
private LocalDB localDB;
|
||||
|
||||
// GUI components
|
||||
private JPanel contentPane = new JPanel();
|
||||
private PrimaryTextArea messageEnterTextArea = new PrimaryTextArea(space);
|
||||
private JList<User> userList = new JList<>();
|
||||
private Chat currentChat;
|
||||
private ComponentList<Message> messageList;
|
||||
private PrimaryScrollPane scrollPane = new PrimaryScrollPane();
|
||||
private JTextPane textPane = new JTextPane();
|
||||
private PrimaryButton postButton = new PrimaryButton("Post");
|
||||
private PrimaryButton settingsButton = new PrimaryButton("Settings");
|
||||
|
||||
private static int space = 4;
|
||||
private JPanel contentPane = new JPanel();
|
||||
private PrimaryTextArea messageEnterTextArea = new PrimaryTextArea(space);
|
||||
private JList<User> userList = new JList<>();
|
||||
private Chat currentChat;
|
||||
private ComponentList<Message> messageList = new ComponentList<>(new MessageListRenderer());
|
||||
private PrimaryScrollPane scrollPane = new PrimaryScrollPane();
|
||||
private JTextPane textPane = new JTextPane();
|
||||
private PrimaryButton postButton = new PrimaryButton("Post");
|
||||
private PrimaryButton settingsButton = new PrimaryButton("Settings");
|
||||
|
||||
private static final Logger logger = EnvoyLog.getLogger(ChatWindow.class.getSimpleName());
|
||||
|
||||
// GUI component spacing
|
||||
private final static int space = 4;
|
||||
private static final Insets insets = new Insets(space, space, space, space);
|
||||
|
||||
private static final long serialVersionUID = 6865098428255463649L;
|
||||
|
||||
/**
|
||||
* Initializes a {@link JFrame} with UI elements used to send and read messages
|
||||
* to different users.
|
||||
@ -75,7 +76,6 @@ public class ChatWindow extends JFrame {
|
||||
gbl_contentPane.rowWeights = new double[] { 0.05, 1.0, 0.07 };
|
||||
contentPane.setLayout(gbl_contentPane);
|
||||
|
||||
messageList = new ComponentList<>(new ComponentListModel<>(), new MessageListRenderer());
|
||||
// TODO: messageList.setFocusTraversalKeysEnabled(false);
|
||||
// messageList.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
|
||||
|
||||
@ -91,7 +91,7 @@ public class ChatWindow extends JFrame {
|
||||
gbc_scrollPane.gridx = 1;
|
||||
gbc_scrollPane.gridy = 1;
|
||||
|
||||
gbc_scrollPane.insets = new Insets(space, space, space, space);
|
||||
gbc_scrollPane.insets = insets;
|
||||
contentPane.add(scrollPane, gbc_scrollPane);
|
||||
|
||||
// Message enter field
|
||||
@ -100,7 +100,7 @@ public class ChatWindow extends JFrame {
|
||||
@Override
|
||||
public void keyReleased(KeyEvent e) {
|
||||
if (e.getKeyCode() == KeyEvent.VK_ENTER
|
||||
&& ((Settings.getInstance().isEnterToSend() && e.getModifiersEx() == 0) || (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK)))
|
||||
&& (Settings.getInstance().isEnterToSend() && e.getModifiersEx() == 0 || e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK))
|
||||
postMessage();
|
||||
}
|
||||
});
|
||||
@ -110,7 +110,7 @@ public class ChatWindow extends JFrame {
|
||||
gbc_messageEnterTextfield.gridx = 1;
|
||||
gbc_messageEnterTextfield.gridy = 2;
|
||||
|
||||
gbc_messageEnterTextfield.insets = new Insets(space, space, space, space);
|
||||
gbc_messageEnterTextfield.insets = insets;
|
||||
|
||||
contentPane.add(messageEnterTextArea, gbc_messageEnterTextfield);
|
||||
|
||||
@ -121,7 +121,7 @@ public class ChatWindow extends JFrame {
|
||||
gbc_moveSelectionPostButton.gridx = 2;
|
||||
gbc_moveSelectionPostButton.gridy = 2;
|
||||
|
||||
gbc_moveSelectionPostButton.insets = new Insets(space, space, space, space);
|
||||
gbc_moveSelectionPostButton.insets = insets;
|
||||
|
||||
postButton.addActionListener((evt) -> { postMessage(); });
|
||||
contentPane.add(postButton, gbc_moveSelectionPostButton);
|
||||
@ -133,7 +133,7 @@ public class ChatWindow extends JFrame {
|
||||
gbc_moveSelectionSettingsButton.gridx = 2;
|
||||
gbc_moveSelectionSettingsButton.gridy = 0;
|
||||
|
||||
gbc_moveSelectionSettingsButton.insets = new Insets(space, space, space, space);
|
||||
gbc_moveSelectionSettingsButton.insets = insets;
|
||||
|
||||
settingsButton.addActionListener((evt) -> {
|
||||
try {
|
||||
@ -154,7 +154,7 @@ public class ChatWindow extends JFrame {
|
||||
gbc_partnerName.gridx = 1;
|
||||
gbc_partnerName.gridy = 0;
|
||||
|
||||
gbc_partnerName.insets = new Insets(space, space, space, space);
|
||||
gbc_partnerName.insets = insets;
|
||||
contentPane.add(textPane, gbc_partnerName);
|
||||
|
||||
userList.setCellRenderer(new UserListRenderer());
|
||||
@ -187,7 +187,7 @@ public class ChatWindow extends JFrame {
|
||||
gbc_userList.gridx = 0;
|
||||
gbc_userList.gridy = 1;
|
||||
gbc_userList.anchor = GridBagConstraints.PAGE_START;
|
||||
gbc_userList.insets = new Insets(space, space, space, space);
|
||||
gbc_userList.insets = insets;
|
||||
|
||||
applyTheme(Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()));
|
||||
|
||||
@ -252,15 +252,18 @@ public class ChatWindow extends JFrame {
|
||||
.build();
|
||||
|
||||
// Send message
|
||||
// TODO: Store offline messages
|
||||
client.sendMessage(message);
|
||||
|
||||
// Add message to LocalDB and update UI
|
||||
currentChat.appendMessage(message);
|
||||
messageList.setModel(currentChat.getModel());
|
||||
// messageList.setModel(currentChat.getModel());
|
||||
|
||||
// Clear text field
|
||||
messageEnterTextArea.setText("");
|
||||
contentPane.revalidate();
|
||||
|
||||
revalidate();
|
||||
repaint();
|
||||
} catch (Exception e) {
|
||||
JOptionPane.showMessageDialog(this,
|
||||
"An exception occured while sending a message. See the log for more details.",
|
||||
|
Reference in New Issue
Block a user