/**
*
*/
package org.appfuse.webapp.client.ui.users.editUser;
import java.util.List;
import org.appfuse.webapp.client.application.ApplicationResources;
import org.appfuse.webapp.client.proxies.LabelValueProxy;
import org.appfuse.webapp.client.proxies.RoleProxy;
import org.appfuse.webapp.client.proxies.UserProxy;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.CheckBox;
import com.github.gwtbootstrap.client.ui.IntegerBox;
import com.github.gwtbootstrap.client.ui.ListBox;
import com.github.gwtbootstrap.client.ui.LongBox;
import com.github.gwtbootstrap.client.ui.PasswordTextBox;
import com.github.gwtbootstrap.client.ui.TextBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.editor.client.EditorError;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
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.client.Window;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.UIObject;
import com.google.gwt.user.client.ui.Widget;
import com.google.web.bindery.requestfactory.gwt.client.RequestFactoryEditorDriver;
/**
* @author ivangsa
*
*/
public class EditUserViewImpl extends Composite implements EditUserView {
interface Binder extends UiBinder<Widget, EditUserViewImpl> {}
private static final Binder BINDER = GWT.create(Binder.class);
interface Driver extends RequestFactoryEditorDriver<UserProxy, EditUserViewImpl> { }
@UiField(provided=true)
protected ApplicationResources i18n = GWT.create(ApplicationResources.class);
private EditUserView.Delegate delegate;
@UiField
protected Element subheading;
@UiField LongBox id;
@UiField IntegerBox version;
@UiField TextBox username;
@UiField PasswordTextBox password;
@UiField Anchor updatePasswordButton;
@UiField TextBox passwordHint;
@UiField TextBox firstName;
@UiField TextBox lastName;
@UiField TextBox email;
@UiField TextBox phoneNumber;
@UiField TextBox website;
@UiField UIObject addressFieldset;
@UiField @Path("address.address")
TextBox address;
@UiField @Path("address.city")
TextBox city;
@UiField @Path("address.province")
TextBox province;
@UiField @Path("address.country")
ListBox country;
@UiField @Path("address.postalCode")
TextBox postalCode;
@UiField(provided=true)
protected RolesListBox roles = new RolesListBox();
@UiField protected Widget passwordControlGroup;
@UiField protected Widget updatePasswordControl;
@UiField protected Widget userRoles;//control group for
@UiField protected Widget accountSettings;//control group for
@UiField CheckBox enabled;
@UiField CheckBox accountExpired;
@UiField CheckBox accountLocked;
@UiField CheckBox credentialsExpired;
@UiField Button saveButton;
@UiField protected Button deleteButton;
@UiField Button cancelButton;
/**
*
*/
public EditUserViewImpl() {
super();
initWidget(BINDER.createAndBindUi(this));
passwordControlGroup.setVisible(false);
updatePasswordControl.setVisible(false);
}
@Override
public void setDelegate(final EditUserView.Delegate delegate) {
this.delegate = delegate;
}
@Override
public RequestFactoryEditorDriver<UserProxy, ? extends EditUserView> createEditorDriver() {
final RequestFactoryEditorDriver<UserProxy, EditUserViewImpl> editorDriver = GWT.create(Driver.class);
editorDriver.initialize(this);
return editorDriver;
}
@Override
public void setCountries(final List<LabelValueProxy> countries) {
for (final LabelValueProxy labelValue : countries) {
country.addItem(labelValue.getLabel(), labelValue.getValue());
}
}
@Override
public void setAvailableRoles(final List<RoleProxy> roles) {
this.roles.setRowData(roles);
}
@Override
public void showErrors(final List<EditorError> errors) {
if(errors != null && !errors.isEmpty()) {
final SafeHtmlBuilder b = new SafeHtmlBuilder();
for (final EditorError error : errors) {
if(error.getPath() != null && !"".equals(error.getPath())) {
final Object userData = error.getUserData();
b.appendEscaped(error.getPath()).appendEscaped(": ");
}
b.appendEscaped(error.getMessage()).appendEscaped("\n");
}
Window.alert(b.toSafeHtml().asString());
}
}
@UiHandler("saveButton")
public void onSaveButtonClick(final ClickEvent event) {
delegate.saveClicked();
}
@UiHandler("deleteButton")
public void onDeleteButtonClick(final ClickEvent event) {
delegate.deleteClicked();
}
@UiHandler("cancelButton")
public void onCancelButtonClick(final ClickEvent event) {
delegate.cancelClicked();
}
@UiHandler("updatePasswordButton")
public void onUpdatePasswordClick(final ClickEvent event) {
delegate.updatePasswordClicked();
}
@Override
public void setEnabled(final boolean b) {
//TODO
}
}