This repository has been archived on 2021-12-05. You can view files and clone it, but cannot push or open issues or pull requests.
envoy/client/src/main/java/envoy/client/ui/control/ChatControl.java

64 lines
1.8 KiB
Java
Raw Normal View History

package envoy.client.ui.control;
import javafx.geometry.*;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
2020-07-11 10:40:42 +02:00
import javafx.scene.layout.*;
import envoy.client.data.*;
import envoy.client.util.IconUtil;
/**
* Displays a chat using a contact control for the recipient and a label for the unread message
* count.
*
* @see ContactControl
* @author Leon Hofmeister
* @since Envoy Client v0.1-beta
*/
public final class ChatControl extends HBox {
private static final Image userIcon = IconUtil.loadIconThemeSensitive("user_icon", 32),
groupIcon = IconUtil.loadIconThemeSensitive("group_icon", 32);
/**
* Creates a new {@code ChatControl}.
*
* @param chat the chat to display
* @since Envoy Client v0.1-beta
*/
public ChatControl(Chat chat) {
2020-07-17 13:56:36 +02:00
setAlignment(Pos.CENTER_LEFT);
setPadding(new Insets(0, 0, 3, 0));
// Profile picture
var contactProfilePic =
new ProfilePicImageView(chat instanceof GroupChat ? groupIcon : userIcon, 32);
getChildren().add(contactProfilePic);
// Spacing
var leftSpacing = new Region();
2020-07-17 13:56:36 +02:00
leftSpacing.setPrefSize(8, 0);
leftSpacing.setMinSize(8, 0);
leftSpacing.setMaxSize(8, 0);
getChildren().add(leftSpacing);
// Contact control
getChildren().add(new ContactControl(chat.getRecipient()));
// Unread messages
if (chat.getUnreadAmount() != 0) {
var spacing = new Region();
setHgrow(spacing, Priority.ALWAYS);
getChildren().add(spacing);
var unreadMessagesLabel = new Label(
chat.getUnreadAmount() > 99 ? "99+" : String.valueOf(chat.getUnreadAmount()));
unreadMessagesLabel.setMinSize(15, 15);
unreadMessagesLabel.setAlignment(Pos.CENTER_RIGHT);
unreadMessagesLabel.getStyleClass().add("unread-messages-amount");
getChildren().add(unreadMessagesLabel);
}
getStyleClass().add("list-element");
}
}