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