package scrum.client.collaboration; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import scrum.client.admin.User; import scrum.client.common.AScrumWidget; import scrum.client.project.Project; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; public class UsersStatusWidget extends AScrumWidget { private FlowPanel containerPanel; private Map<User, UserStatusWidget> userWidgets = new HashMap<User, UserStatusWidget>(); @Override protected Widget onInitialization() { containerPanel = new FlowPanel(); containerPanel.setStyleName("UsersStatusWidget"); return containerPanel; } @Override protected void onUpdate() { Project project = getCurrentProject(); if (project == null) return; List<User> users = new ArrayList<User>(project.getParticipants()); Collections.sort(users, User.ONLINE_OFFLINE_COMPARATOR); containerPanel.clear(); for (User user : users) { UserStatusWidget widget = userWidgets.get(user); if (widget == null) { widget = new UserStatusWidget(user); userWidgets.put(user, widget); } containerPanel.add(widget); widget.update(); } } }