package envoy.client.ui.listcell; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.control.ListView; import envoy.data.Message; /** * A list cell containing messages represented as message controls. *

* Project: envoy-client
* File: MessageListCell.java
* Created: 18.07.2020
* * @author Kai S. K. Engelbart * @since Envoy Client v0.1-beta */ public final class MessageListCell extends AbstractListCell { /** * @param listView the list view inside of which the cell will be displayed * @since Envoy Client v0.1-beta */ public MessageListCell(ListView listView) { super(listView); } @Override protected MessageControl renderItem(Message message) { final var control = new MessageControl(message); listView.widthProperty().addListener((observable, oldValue, newValue) -> adjustPadding(newValue.intValue())); adjustPadding((int) listView.getWidth()); if (control.isOwnMessage()) setAlignment(Pos.CENTER_RIGHT); else setAlignment(Pos.CENTER_LEFT); return control; } private void adjustPadding(int listWidth) { int padding = 0; if (listWidth > 1020) padding = (listWidth - 1000) / 2; else padding = 10; setPadding(new Insets(0, padding, 6, padding)); } }