package org.appfuse.webapp.client.ui.users.active; import java.util.HashSet; import java.util.Set; import org.appfuse.webapp.client.application.ApplicationResources; import org.appfuse.webapp.client.application.utils.tables.CustomColumn; import org.appfuse.webapp.client.proxies.UserProxy; import com.github.gwtbootstrap.client.ui.Button; import com.google.gwt.cell.client.Cell.Context; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.cellview.client.CellTable; import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; public class ActiveUsersViewImpl extends Composite implements ActiveUsersView { interface Binder extends UiBinder<Widget, ActiveUsersViewImpl> { } private static final Binder uiBinder = GWT.create(Binder.class); private Delegate delegate; @UiField(provided = true) ApplicationResources i18n = GWT.create(ApplicationResources.class); @UiField Button doneButton; @UiField CellTable<UserProxy> table; Set<String> paths = new HashSet<String>(); public ActiveUsersViewImpl() { initWidget(uiBinder.createAndBindUi(this)); table.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED); createTableColumns(); } @Override public void setDelegate(final Delegate delegate) { this.delegate = delegate; } @Override public CellTable<UserProxy> getCellTable() { return table; } @Override public String[] getPaths() { return paths.toArray(new String[paths.size()]); } @UiHandler("doneButton") public void doneClicked(final ClickEvent event) { delegate.cancelClicked(); } public void createTableColumns() { int columnNumber = 0; paths.add("username"); table.addColumn(new CustomColumn<UserProxy, String>("username", true) { @Override public String getValue(final UserProxy user) { return user.getUsername(); } }, i18n.user_username()); table.setColumnWidth(columnNumber++, "30%"); paths.add("email"); paths.add("firstName"); paths.add("lastName"); table.addColumn(new CustomColumn<UserProxy, String>("firstName", true) { @Override public String getValue(final UserProxy user) { return user.getFirstName() + " " + user.getLastName(); } @Override public void render(final Context context, final UserProxy object, final SafeHtmlBuilder sb) { final String template = SafeHtmlUtils.htmlEscape(getValue(object)) + " " + "<a href=\"mailto:" + SafeHtmlUtils.htmlEscape(object.getEmail()) + "\">\n" + " <img class=\"icon\" alt=\"E-Mail\" src=\"images/iconEmail.gif\">\n" + "</a>"; sb.append(SafeHtmlUtils.fromTrustedString(template)); }; }, i18n.activeUsers_fullName()); } }