Working on line wrapping and message height (borders currently broken)
This commit is contained in:
		| @@ -53,7 +53,6 @@ public class ComponentList<E> extends JPanel { | ||||
| 	 */ | ||||
| 	public ComponentList(ComponentListModel<E> model, ComponentListCellRenderer<E> renderer) { | ||||
| 		this(renderer); | ||||
| 		this.model = model; | ||||
| 		setModel(model); | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -10,7 +10,6 @@ import javax.swing.*; | ||||
| import envoy.client.data.Settings; | ||||
| import envoy.client.ui.Color; | ||||
| import envoy.client.ui.IconUtil; | ||||
| import envoy.client.ui.Theme; | ||||
| import envoy.client.ui.list.ComponentList; | ||||
| import envoy.client.ui.list.ComponentListCellRenderer; | ||||
| import envoy.data.Message; | ||||
| @@ -40,13 +39,14 @@ public class MessageListRenderer implements ComponentListCellRenderer<Message> { | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// TODO: Handle message attachments | ||||
|  | ||||
| 	@Override | ||||
| 	public JPanel getListCellComponent(ComponentList<? extends Message> list, Message message, boolean isSelected) { | ||||
| 		final Theme theme = Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()); | ||||
| 		final var theme = Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()); | ||||
|  | ||||
| 		// panel | ||||
| 		final JPanel panel = new JPanel(); | ||||
| 		// Panel | ||||
| 		final var panel = new JPanel(); | ||||
|  | ||||
| 		GridBagLayout gbl_panel = new GridBagLayout(); | ||||
| 		gbl_panel.columnWidths	= new int[] { 1, 1 }; | ||||
| @@ -57,30 +57,21 @@ public class MessageListRenderer implements ComponentListCellRenderer<Message> { | ||||
| 		panel.setLayout(gbl_panel); | ||||
| 		panel.setBackground(isSelected ? theme.getSelectionColor() : theme.getCellColor()); | ||||
|  | ||||
| 		// TODO: Handle message attachments | ||||
|  | ||||
| 		// content variables | ||||
| 		final String	status	= message.getStatus().toString(); | ||||
| 		final String	date	= new SimpleDateFormat("dd.MM.yyyy HH:mm").format(message.getCreationDate()); | ||||
| 		final String	text	= message.getText(); | ||||
|  | ||||
| 		// date Label - The Label that displays the creation date of a message | ||||
| 		JLabel dateLabel = new JLabel(); | ||||
| 		dateLabel.setText(date); | ||||
| 		// Date Label - The Label that displays the creation date of a message | ||||
| 		var dateLabel = new JLabel(new SimpleDateFormat("dd.MM.yyyy HH:mm").format(message.getCreationDate())); | ||||
| 		dateLabel.setForeground(theme.getDateColor()); | ||||
| 		dateLabel.setAlignmentX(1f); | ||||
| 		dateLabel.setFont(new Font("Arial", Font.PLAIN, 12)); | ||||
| 		dateLabel.setPreferredSize(dateLabel.getPreferredSize()); | ||||
|  | ||||
| 		GridBagConstraints gbc_dateLabel = new GridBagConstraints(); | ||||
| 		var gbc_dateLabel = new GridBagConstraints(); | ||||
| 		gbc_dateLabel.fill	= GridBagConstraints.BOTH; | ||||
| 		gbc_dateLabel.gridx	= 0; | ||||
| 		gbc_dateLabel.gridy	= 0; | ||||
| 		panel.add(dateLabel, gbc_dateLabel); | ||||
|  | ||||
|  | ||||
| 		// Message area - The JTextArea that displays the text content of a message. | ||||
| 		var messageTextArea = new JTextArea(text); | ||||
| 		var messageTextArea = new JTextArea(message.getText()); | ||||
| 		messageTextArea.setLineWrap(true); | ||||
| 		messageTextArea.setWrapStyleWord(true); | ||||
| 		messageTextArea.setForeground(theme.getMessageTextColor()); | ||||
| @@ -88,51 +79,49 @@ public class MessageListRenderer implements ComponentListCellRenderer<Message> { | ||||
| 		messageTextArea.setBackground(Color.red); | ||||
| 		messageTextArea.setEditable(false); | ||||
| 		messageTextArea.setFont(new Font("Arial", Font.PLAIN, 14)); | ||||
| 		// messageTextArea.setPreferredSize(messageTextArea.getPreferredSize()); | ||||
| 		messageTextArea.setSize(list.getWidth() - 1, 200); | ||||
|  | ||||
| 		GridBagConstraints gbc_messageTextArea = new GridBagConstraints(); | ||||
| 		var gbc_messageTextArea = new GridBagConstraints(); | ||||
| 		gbc_messageTextArea.fill	= GridBagConstraints.HORIZONTAL; | ||||
| 		gbc_messageTextArea.gridx	= 0; | ||||
| 		gbc_messageTextArea.gridy	= 1; | ||||
| 		panel.add(messageTextArea, gbc_messageTextArea); | ||||
|  | ||||
| 		// Status Label - displays the status of the message | ||||
| 		var statusLabel = new JLabel(statusIcons.get(message.getStatus())); | ||||
|  | ||||
| 		// status Label - displays the status of the message | ||||
| 		JLabel statusLabel = new JLabel(statusIcons.get(message.getStatus())); | ||||
|  | ||||
| 		GridBagConstraints gbc_statusLabel = new GridBagConstraints(); | ||||
| 		var gbc_statusLabel = new GridBagConstraints(); | ||||
| 		gbc_statusLabel.fill	= GridBagConstraints.BOTH; | ||||
| 		gbc_statusLabel.gridx	= 1; | ||||
| 		gbc_statusLabel.gridy	= 1; | ||||
| 		panel.add(statusLabel, gbc_statusLabel); | ||||
|  | ||||
| 		// Forwarding | ||||
| 		if (message.isForwarded()) try { | ||||
| 			var forwardLabel = new JLabel("Forwarded", new ImageIcon(ClassLoader.getSystemResourceAsStream(null).readAllBytes()), | ||||
| 					SwingConstants.CENTER); | ||||
| 		if (message.isForwarded()) { | ||||
| 			// TODO: icon | ||||
| 			var forwardLabel = new JLabel("Forwarded", null, SwingConstants.CENTER); | ||||
| 			forwardLabel.setBackground(panel.getBackground()); | ||||
| 			forwardLabel.setForeground(Color.lightGray); | ||||
| 			 | ||||
| 			GridBagConstraints gbc_forwardLabel = new GridBagConstraints(); | ||||
|  | ||||
| 			var gbc_forwardLabel = new GridBagConstraints(); | ||||
| 			gbc_forwardLabel.fill	= GridBagConstraints.BOTH; | ||||
| 			gbc_forwardLabel.gridx	= 1; | ||||
| 			gbc_forwardLabel.gridy	= 0; | ||||
| 			panel.add(forwardLabel, gbc_forwardLabel); | ||||
| 		} catch (IOException e) { | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
|  | ||||
| 		int padding = (int) (list.getWidth() * 0.35); | ||||
|  | ||||
| 		// Define some space to the messages below | ||||
| 		panel.setBorder(BorderFactory.createCompoundBorder( | ||||
| 				BorderFactory.createEmptyBorder(0, 0, 0, padding), | ||||
| 		panel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(0, 0, 0, padding), | ||||
| 				BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(), BorderFactory.createEtchedBorder()))); | ||||
|  | ||||
| 		var size = new Dimension(list.getWidth(), (int) panel.getPreferredSize().getHeight()); | ||||
| 		var size = new Dimension(list.getWidth() - 50, panel.getPreferredSize().height); | ||||
|  | ||||
| 		// panel.setPreferredSize(panel.getPreferredSize()); | ||||
| 		panel.setPreferredSize(size); | ||||
| 		panel.setMinimumSize(size); | ||||
| 		panel.setMaximumSize(size); | ||||
| 		// System.out.println(panel.getMaximumSize()); | ||||
|  | ||||
| 		return panel; | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user