Add binding from list width to message padding

This commit is contained in:
Kai S. K. Engelbart 2020-07-21 08:41:41 +02:00
parent 60791f2913
commit ebfe603bc7

View File

@ -1,5 +1,6 @@
package envoy.client.ui.listcell;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.ListView;
@ -20,12 +21,18 @@ public final class MessageListCell extends AbstractListCell<Message, MessageCont
* @param listView the list view inside of which the cell will be displayed
* @since Envoy Client v0.1-beta
*/
public MessageListCell(ListView<? extends Message> listView) { super(listView); }
public MessageListCell(ListView<? extends Message> listView) {
super(listView);
}
@Override
protected MessageControl renderItem(Message message) {
final var control = new MessageControl(message);
maxWidthProperty().bind(listView.widthProperty().multiply(0.6));
listView.widthProperty()
.addListener((observable, oldValue, newValue) -> {
int padding = Math.min(100, newValue.intValue() / 10);
setPadding(new Insets(0, padding, 0, padding));
});
if (control.isOwnMessage()) setAlignment(Pos.CENTER_RIGHT);
else setAlignment(Pos.CENTER_LEFT);
return control;