Working on message scaling
This commit is contained in:
parent
42feefdbd5
commit
6a2cb38bd2
@ -131,7 +131,13 @@ public class ChatWindow extends JFrame {
|
|||||||
|
|
||||||
// updates list elements when list is resized
|
// updates list elements when list is resized
|
||||||
@Override
|
@Override
|
||||||
public void componentResized(ComponentEvent e) { messageList.synchronizeModel(); }
|
public void componentResized(ComponentEvent e) {
|
||||||
|
messageList.synchronizeModel();
|
||||||
|
var prefSize = e.getComponent().getPreferredSize();
|
||||||
|
messageList.setMinimumSize(new Dimension(prefSize.width, 0));
|
||||||
|
messageList.setMaximumSize(new Dimension(prefSize.width, Integer.MAX_VALUE));
|
||||||
|
messageList.setPreferredSize(new Dimension(prefSize.width, messageList.getPreferredSize().height));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
||||||
|
|
||||||
|
@ -30,10 +30,12 @@ import envoy.data.Message.MessageStatus;
|
|||||||
public class MessageListRenderer implements ComponentListCellRenderer<Message> {
|
public class MessageListRenderer implements ComponentListCellRenderer<Message> {
|
||||||
|
|
||||||
private static EnumMap<MessageStatus, ImageIcon> statusIcons;
|
private static EnumMap<MessageStatus, ImageIcon> statusIcons;
|
||||||
|
private static ImageIcon forwardIcon;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
statusIcons = IconUtil.loadByEnum(MessageStatus.class, 16);
|
statusIcons = IconUtil.loadByEnum(MessageStatus.class, 16);
|
||||||
|
// forwardIcon = IconUtil.load("icons/forward.png", 16);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -47,6 +49,7 @@ public class MessageListRenderer implements ComponentListCellRenderer<Message> {
|
|||||||
|
|
||||||
// Panel
|
// Panel
|
||||||
final var panel = new JPanel();
|
final var panel = new JPanel();
|
||||||
|
final int padding = (int) (list.getWidth() * 0.35);
|
||||||
|
|
||||||
GridBagLayout gbl_panel = new GridBagLayout();
|
GridBagLayout gbl_panel = new GridBagLayout();
|
||||||
gbl_panel.columnWidths = new int[] { 1, 1 };
|
gbl_panel.columnWidths = new int[] { 1, 1 };
|
||||||
@ -76,10 +79,14 @@ public class MessageListRenderer implements ComponentListCellRenderer<Message> {
|
|||||||
messageTextArea.setWrapStyleWord(true);
|
messageTextArea.setWrapStyleWord(true);
|
||||||
messageTextArea.setForeground(theme.getMessageTextColor());
|
messageTextArea.setForeground(theme.getMessageTextColor());
|
||||||
messageTextArea.setAlignmentX(0.5f);
|
messageTextArea.setAlignmentX(0.5f);
|
||||||
messageTextArea.setBackground(Color.red);
|
messageTextArea.setBackground(theme.getCellColor());
|
||||||
messageTextArea.setEditable(false);
|
messageTextArea.setEditable(false);
|
||||||
messageTextArea.setFont(new Font("Arial", Font.PLAIN, 14));
|
var font = new Font("Arial", Font.PLAIN, 14);
|
||||||
messageTextArea.setSize(list.getWidth() - 1, 200);
|
messageTextArea.setFont(font);
|
||||||
|
// var frc = new FontRenderContext(new AffineTransform(), true, true);
|
||||||
|
// messageTextArea.setSize(Math.min(list.getWidth() - padding, (int)
|
||||||
|
// font.getStringBounds(message.getText(), frc).getWidth()), 10);
|
||||||
|
messageTextArea.setSize(list.getWidth() - padding, 10);
|
||||||
|
|
||||||
var gbc_messageTextArea = new GridBagConstraints();
|
var gbc_messageTextArea = new GridBagConstraints();
|
||||||
gbc_messageTextArea.fill = GridBagConstraints.HORIZONTAL;
|
gbc_messageTextArea.fill = GridBagConstraints.HORIZONTAL;
|
||||||
@ -110,13 +117,10 @@ public class MessageListRenderer implements ComponentListCellRenderer<Message> {
|
|||||||
panel.add(forwardLabel, gbc_forwardLabel);
|
panel.add(forwardLabel, gbc_forwardLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
int padding = (int) (list.getWidth() * 0.35);
|
// Define an etched border and some space to the messages below
|
||||||
|
panel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(0, 0, 20, padding), BorderFactory.createEtchedBorder()));
|
||||||
|
|
||||||
// Define some space to the messages below
|
var size = new Dimension(list.getWidth(), panel.getPreferredSize().height);
|
||||||
panel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(0, 0, 0, padding),
|
|
||||||
BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(), BorderFactory.createEtchedBorder())));
|
|
||||||
|
|
||||||
var size = new Dimension(list.getWidth() - 50, panel.getPreferredSize().height);
|
|
||||||
|
|
||||||
panel.setPreferredSize(size);
|
panel.setPreferredSize(size);
|
||||||
panel.setMinimumSize(size);
|
panel.setMinimumSize(size);
|
||||||
|
Reference in New Issue
Block a user