/*
* 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.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.util.Callback;
import uk.ac.cam.echo.data.User;
/**
*
* @author Philip
*/
class avitarCellFactory implements Callback<ListView<User>, ListCell<String>> {
public avitarCellFactory() {
}
@Override
public ListCell<String> call(ListView<User> list) {
final ListCell cell = new ListCell() {
private GridPane cellContents;
private Text name;
private ImageView avitar;
@Override
public void updateItem(Object item, boolean empty) {
super.updateItem(item, empty);
if (!isEmpty()) {
cellContents = new GridPane();
User user = (User)item;
String dispName;
if (user.getUsername() == null) dispName = "Anonymous";
else if (user.getDisplayName() != null) dispName = user.getDisplayName();
else dispName = user.getUsername();
name = new Text(dispName);
name.setWrappingWidth(50);
avitar = new ImageView();
avitar.setFitHeight(50);
avitar.setFitWidth(50);
avitar.setImage(user.getAvatarLink()==null? new Image("http://www.gravatar.com/avatar/"):
new Image(user.getAvatarLink()));
cellContents.add(avitar, 0, 0);
cellContents.add(name, 0, 1);
setGraphic(cellContents);
this.setDisable(true);
}
}
};
return cell;
}
}