package scrum.client.collaboration; import ilarkesto.core.scope.Scope; import scrum.client.admin.User; import scrum.client.common.AScrumWidget; import scrum.client.workspace.ProjectWorkspaceWidgets; import com.google.gwt.event.dom.client.MouseMoveEvent; import com.google.gwt.event.dom.client.MouseMoveHandler; import com.google.gwt.event.dom.client.MouseOutEvent; import com.google.gwt.event.dom.client.MouseOutHandler; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; public class UserStatusWidget extends AScrumWidget { private UsersStatus usersStatus; private Label label; private User user; public UserStatusWidget(User user) { this.user = user; } @Override protected Widget onInitialization() { usersStatus = Scope.get().getComponent(UsersStatus.class); label = new Label(user.getName() + getCurrentProject().getUsersRolesAsString(user, " (", ")")); label.setStyleName("UserStatusWidget"); return label; } @Override protected void onUpdate() { String color = getCurrentProject().getUserConfig(user).getColor(); label.getElement().getStyle().setProperty("color", color); Highlighter highlighter = new Highlighter(); label.addMouseMoveHandler(highlighter); label.addMouseOutHandler(highlighter); if (usersStatus.isOnline(user) || user == getCurrentUser()) { label.addStyleName("UserStatusWidget-online"); } else { label.removeStyleName("UserStatusWidget-online"); } } class Highlighter implements MouseMoveHandler, MouseOutHandler { public void onMouseMove(MouseMoveEvent event) { Scope.get().getComponent(ProjectWorkspaceWidgets.class).highlightUser(user); } public void onMouseOut(MouseOutEvent event) { Scope.get().getComponent(ProjectWorkspaceWidgets.class).highlightUser(null); } } }