/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package uk.ac.cam.echo.TouchClient;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.util.Callback;
import uk.ac.cam.echo.data.Message;
/**
*
* @author Philip
*/
public class messageCellFactory implements Callback<ListView<String>, ListCell<String>>{
@Override
public ListCell<String> call(final ListView<String> list) {
final ListCell cell = new ListCell() {
private GridPane cellContents;
private Text name;
private Text text;
@Override
public void updateItem(Object item, boolean empty) {
super.updateItem(item, empty);
if (!isEmpty()) {
Message msg = (Message)item;
String sender;
if (msg.getSender() == null) sender = "Anonymous";
else if (msg.getSender().getDisplayName() != null) sender = msg.getSender().getDisplayName();
else sender = msg.getSender().getUsername();
sender = sender.concat(" : ");
//String sender = (msg.getSender() == null ? "Anonymous" : msg.getSender().getDisplayName()).concat(" : ");
String message = " ".concat(msg.getContents());
cellContents = new GridPane();
name = new Text(sender);
text = new Text(message);
text.setWrappingWidth(list.getPrefWidth()-30);
cellContents.add(name, 0, 0);
cellContents.add(text, 0, 1);
setGraphic(cellContents);
}
}
};
return cell;
}
}