implemented UserComponentListRenderer
This commit is contained in:
		| @@ -70,6 +70,7 @@ public class ChatWindow extends JFrame { | ||||
| 	private JTextPane				textPane				= new JTextPane(); | ||||
| 	private PrimaryButton			postButton				= new PrimaryButton("Post"); | ||||
| 	private PrimaryButton			settingsButton			= new PrimaryButton("Settings"); | ||||
| 	private JPopupMenu				contextMenu; | ||||
|  | ||||
| 	// Contacts Header | ||||
| 	private JPanel			contactsHeader	= new JPanel(); | ||||
|   | ||||
| @@ -0,0 +1,78 @@ | ||||
| package envoy.client.ui.renderer; | ||||
|  | ||||
| import java.awt.BorderLayout; | ||||
| import java.awt.Dimension; | ||||
| import java.io.Serializable; | ||||
|  | ||||
| import javax.swing.JComponent; | ||||
| import javax.swing.JLabel; | ||||
| import javax.swing.JPanel; | ||||
|  | ||||
| import envoy.client.data.Settings; | ||||
| import envoy.client.ui.Theme; | ||||
| import envoy.client.ui.list.ComponentList; | ||||
| import envoy.client.ui.list.ComponentListCellRenderer; | ||||
| import envoy.data.User; | ||||
| import envoy.data.User.UserStatus; | ||||
|  | ||||
| /** | ||||
|  * Project: <strong>envoy-client</strong><br> | ||||
|  * File: <strong>UserComponentListRenderer.java</strong><br> | ||||
|  * Created: <strong>15 Mar 2020</strong><br> | ||||
|  * | ||||
|  * @author Leon Hofmeister | ||||
|  * @since Envoy v0.1-beta | ||||
|  */ | ||||
| public class UserComponentListRenderer implements ComponentListCellRenderer<User>, Serializable { | ||||
|  | ||||
| 	private static final long serialVersionUID = -2379244319112111284L; | ||||
|  | ||||
| 	/** | ||||
| 	 * @since Envoy v0.1-beta | ||||
| 	 */ | ||||
| 	public UserComponentListRenderer() {} | ||||
|  | ||||
| 	@Override | ||||
| 	public JComponent getListCellComponent(ComponentList<? extends User> list, User value, boolean isSelected) { | ||||
| 		final JPanel panel = new JPanel(); | ||||
| 		panel.setLayout(new BorderLayout()); | ||||
| 		final Theme theme = Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()); | ||||
|  | ||||
| 		// Panel background | ||||
| 		panel.setBackground(isSelected ? theme.getSelectionColor() : theme.getCellColor()); | ||||
| 		panel.setOpaque(true); | ||||
|  | ||||
| 		panel.setPreferredSize(new Dimension(100, 35)); | ||||
|  | ||||
| 		// TODO add profile picture support in BorderLayout.West | ||||
|  | ||||
| 		JLabel username = new JLabel(value.getName()); | ||||
| 		username.setForeground(theme.getUserNameColor()); | ||||
| 		panel.add(username, BorderLayout.CENTER); | ||||
|  | ||||
| 		final UserStatus	status		= value.getStatus(); | ||||
| 		JLabel				statusLabel	= new JLabel(status.toString()); | ||||
| 		java.awt.Color		foreground; | ||||
| 		switch (status) { | ||||
| 			case OFFLINE: | ||||
| 				foreground = java.awt.Color.LIGHT_GRAY; | ||||
| 				break; | ||||
| 			case AWAY: | ||||
| 				foreground = java.awt.Color.YELLOW; | ||||
| 				break; | ||||
| 			case BUSY: | ||||
| 				foreground = java.awt.Color.BLUE; | ||||
| 				break; | ||||
| 			case ONLINE: | ||||
| 				foreground = java.awt.Color.GREEN; | ||||
| 				break; | ||||
| 			default: | ||||
| 				foreground = java.awt.Color.LIGHT_GRAY; | ||||
| 				break; | ||||
| 		} | ||||
| 		statusLabel.setForeground(foreground); | ||||
| 		panel.add(statusLabel, BorderLayout.NORTH); | ||||
| 		return panel; | ||||
| 	} | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 delvh
					delvh