package org.vaadin.mideaas.frontend;
import java.util.ArrayList;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.vaadin.mideaas.editor.DocDifference;
import org.vaadin.mideaas.editor.EditorUser;
import org.vaadin.mideaas.editor.MultiUserDoc.DifferingChangedListener;
import org.vaadin.mideaas.model.ProjectItem;
import com.vaadin.ui.Label;
@SuppressWarnings("serial")
public class ProjectItemLabel extends Label implements DifferingChangedListener {
private final ProjectItem item;
public ProjectItemLabel(ProjectItem item) {
super(item.getName());
this.item = item;
}
@Override
public void attach() {
super.attach();
item.addDifferingChangedListener(this);
}
@Override
public void detach() {
super.detach();
item.removeDifferingChangedListener(this);
}
@Override
public void differingChanged(final Map<EditorUser, DocDifference> diffs) {
getUI().access(new Runnable() {
@Override
public void run() {
String caption = item.getName();
if (!diffs.isEmpty()) {
ArrayList<String> names = new ArrayList<String>(diffs.size());
for (DocDifference dd : diffs.values()) {
names.add(dd.getUser().getName());
}
caption += " (" + StringUtils.join(names, ", ") + ")";
}
setValue(caption);
}
});
}
}