package net.thesocialos.client.view; import net.thesocialos.client.TheSocialOS; import net.thesocialos.client.helper.RPCXSRF; import net.thesocialos.client.service.UserService; import net.thesocialos.client.service.UserServiceAsync; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.PasswordTextBox; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; public class ChngPasswordPopUP extends Composite { private static ChngPasswordPopUPUiBinder uiBinder = GWT.create(ChngPasswordPopUPUiBinder.class); @UiField Label lblState; @UiField Button btnSave; @UiField PasswordTextBox txtOldPass; @UiField PasswordTextBox txtNewPass1; @UiField PasswordTextBox txtNewPass2; @UiField Label lblOldPass; @UiField Label lblNewPass1; @UiField Label lblNewPass2; @UiField HTMLPanel htmlPanel; private final UserServiceAsync userService = GWT.create(UserService.class); PopupPanel popUP = new PopupPanel(true, true); final Timer timer = new Timer() { @Override public void run() { popUP.hide(); } }; interface ChngPasswordPopUPUiBinder extends UiBinder<Widget, ChngPasswordPopUP> { } public ChngPasswordPopUP() { initWidget(uiBinder.createAndBindUi(this)); lblState.setText(""); btnSave.setText(TheSocialOS.getConstants().change()); lblOldPass.setText(TheSocialOS.getConstants().oldPass()); lblNewPass1.setText(TheSocialOS.getConstants().newPassword1()); lblNewPass2.setText(TheSocialOS.getConstants().newPassword2()); txtOldPass.setText(""); txtNewPass1.setText(""); txtNewPass1.setText(""); bind(); handler(); } private void bind() { popUP.setWidth("297px"); popUP.setHeight("204px"); popUP.getElement().getStyle().setZIndex(900); popUP.add(this); popUP.center(); popUP.show(); } private void handler() { btnSave.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (isPasswordsEquals()) changePassword(new AsyncCallback<Boolean>() { @Override public void onFailure(Throwable caught) { // TODO Auto-generated method stub } @Override public void onSuccess(Boolean result) { if (result) { lblState.setText(TheSocialOS.getConstants().passwordChangeCorretly()); timer.schedule(2000); } else lblState.setText(TheSocialOS.getConstants().passworNotValid()); } }); else lblState.setText(TheSocialOS.getConstants().passwordDontMatch()); } }); } private boolean isPasswordsEquals() { if (txtNewPass1.getText().trim().isEmpty() || txtNewPass2.getText().trim().isEmpty()) return false; if (txtNewPass2.getText().trim().length() < 6) return false; return txtNewPass1.getText().trim().equals(txtNewPass2.getText().trim()); } private void changePassword(final AsyncCallback<Boolean> callback) { new RPCXSRF<Boolean>(userService) { @Override public void onFailure(Throwable caught) { } @Override public void onSuccess(Boolean result) { // User registered succesfully callback.onSuccess(result); timer.schedule(4000); } @Override protected void XSRFcallService(AsyncCallback<Boolean> cb) { userService.changePassWord(txtOldPass.getText().trim(), txtNewPass2.getText().trim(), cb); } }.retry(3); } }