implemented UserComponentListRenderer
This commit is contained in:
parent
432a58330b
commit
1fb4ddaa47
@ -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