71 lines
2.2 KiB
Java
71 lines
2.2 KiB
Java
package envoy.client.ui.listcell;
|
|
|
|
import javafx.geometry.Insets;
|
|
import javafx.geometry.Pos;
|
|
import javafx.scene.control.Label;
|
|
import javafx.scene.image.ImageView;
|
|
import javafx.scene.layout.*;
|
|
import javafx.scene.shape.Rectangle;
|
|
|
|
import envoy.client.data.Chat;
|
|
import envoy.client.ui.IconUtil;
|
|
import envoy.data.Group;
|
|
|
|
/**
|
|
* Displays a chat using a contact control for the recipient and a label for the
|
|
* unread message count.
|
|
* <p>
|
|
* Project: <strong>envoy-client</strong><br>
|
|
* File: <strong>ContactControl.java</strong><br>
|
|
* Created: <strong>01.07.2020</strong><br>
|
|
*
|
|
* @see ContactControl
|
|
* @author Leon Hofmeister
|
|
* @since Envoy Client v0.1-beta
|
|
*/
|
|
public class ChatControl extends HBox {
|
|
|
|
/**
|
|
* @param chat the chat to display
|
|
* @since Envoy Client v0.1-beta
|
|
*/
|
|
public ChatControl(Chat chat) {
|
|
setAlignment(Pos.CENTER_LEFT);
|
|
setPadding(new Insets(0, 0, 3, 0));
|
|
// profile pic
|
|
ImageView contactProfilePic;
|
|
if (chat.getRecipient() instanceof Group) contactProfilePic = new ImageView(IconUtil.loadIconThemeSensitive("group_icon", 32));
|
|
else contactProfilePic = new ImageView(IconUtil.loadIconThemeSensitive("user_icon", 32));
|
|
Rectangle clip = new Rectangle();
|
|
clip.setWidth(32);
|
|
clip.setHeight(32);
|
|
clip.setArcHeight(32);
|
|
clip.setArcWidth(32);
|
|
contactProfilePic.setClip(clip);
|
|
getChildren().add(contactProfilePic);
|
|
// spacing
|
|
Region leftSpacing = new Region();
|
|
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) {
|
|
final var spacing = new Region();
|
|
setHgrow(spacing, Priority.ALWAYS);
|
|
getChildren().add(spacing);
|
|
final var unreadMessagesLabel = new Label(Integer.toString(chat.getUnreadAmount()));
|
|
unreadMessagesLabel.setMinSize(15, 15);
|
|
final var vBox2 = new VBox();
|
|
vBox2.setAlignment(Pos.CENTER_RIGHT);
|
|
unreadMessagesLabel.setAlignment(Pos.CENTER);
|
|
unreadMessagesLabel.getStyleClass().add("unreadMessagesAmount");
|
|
vBox2.getChildren().add(unreadMessagesLabel);
|
|
getChildren().add(vBox2);
|
|
}
|
|
getStyleClass().add("listElement");
|
|
}
|
|
}
|