package scrum.client.admin;
import ilarkesto.gwt.client.AOutputViewEditWidget;
import ilarkesto.gwt.client.TableBuilder;
import scrum.client.ScrumGwt;
import scrum.client.common.ABlockWidget;
import scrum.client.common.BlockHeaderWidget;
import scrum.client.common.BlockWidgetFactory;
import scrum.client.img.Img;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
public class UserBlock extends ABlockWidget<User> {
private Label lastLoginLabel;
private SimplePanel iconWrapper;
@Override
protected void onInitializationHeader(BlockHeaderWidget header) {
User user = getObject();
iconWrapper = header.insertPrefixIcon();
lastLoginLabel = header.appendCenterSuffix("");
header.addMenuAction(new ResetUserPasswordAction(user));
header.addMenuAction(new ConfirmUserEmailAction(user));
header.addMenuAction(new DisableUserAction(user));
header.addMenuAction(new EnableUserAction(user));
header.addMenuAction(new DeleteUserAction(user));
}
@Override
protected void onUpdateHeader(BlockHeaderWidget header) {
User user = getObject();
header.setDragHandle("usr");
header.setCenter(user.getName());
lastLoginLabel.setText(ScrumGwt.getPeriodToAsShortestString("login ", user.getLastLoginDateAndTime(), " ago"));
Image icon = null;
if (user.isDisabled()) {
icon = Img.bundle.usrDisabled().createImage();
icon.setTitle("User is disabled.");
} else if (!user.isEmailVerified()) {
icon = Img.bundle.usrEmailUnverified().createImage();
icon.setTitle("Users email is not verified.");
}
iconWrapper.setWidget(icon);
}
@Override
protected Widget onExtendedInitialization() {
final User user = getObject();
TableBuilder tb = ScrumGwt.createFieldTable();
tb.addFieldRow("Name", user.getNameModel());
tb.addFieldRow("E-Mail", user.getEmailModel());
tb.addFieldRow("OpenID", user.getOpenIdModel());
tb.addFieldRow("Projects", new AOutputViewEditWidget() {
@Override
protected void onViewerUpdate() {
setViewer(ScrumGwt.createToHtmlItemsWidget(user.getProjects()));
}
});
return tb.createTable();
}
public static final BlockWidgetFactory<User> FACTORY = new BlockWidgetFactory<User>() {
@Override
public UserBlock createBlock() {
return new UserBlock();
}
};
}