package scrum.client.admin;
import ilarkesto.core.scope.Scope;
import ilarkesto.gwt.client.AAction;
import ilarkesto.gwt.client.AViewEditWidget;
import ilarkesto.gwt.client.ToolbarWidget;
import scrum.client.common.FieldsWidget;
import scrum.client.workspace.Ui;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
public class PasswordChangeWidget extends AViewEditWidget {
private FieldsWidget fields;
private TextBox currentPasswordBox;
private TextBox newPasswordBox;
private TextBox newPasswordRepeatBox;
@Override
protected Widget onViewerInitialization() {
return new Label("*****");
}
@Override
protected void onViewerUpdate() {}
@Override
protected Widget onEditorInitialization() {
currentPasswordBox = new PasswordTextBox();
newPasswordBox = new PasswordTextBox();
newPasswordRepeatBox = new PasswordTextBox();
fields = new FieldsWidget();
fields.add("Current Password", currentPasswordBox);
fields.add("New Password", newPasswordBox);
fields.add("Repeat new Password", newPasswordRepeatBox);
FlowPanel mainpanel = new FlowPanel();
mainpanel.setWidth("100%");
mainpanel.add(fields);
ToolbarWidget toolbar = new ToolbarWidget();
toolbar.addButton(new SaveChangesAction());
toolbar.addButton(new CancelAction());
mainpanel.add(toolbar.update());
return mainpanel;
}
@Override
protected void onEditorUpdate() {
currentPasswordBox.setText("");
newPasswordBox.setText("");
newPasswordRepeatBox.setText("");
fields.update();
}
@Override
protected void onEditorSubmit() {
String currentPassword = currentPasswordBox.getText();
String newPassword = newPasswordBox.getText();
String newPasswordRepeat = newPasswordRepeatBox.getText();
if (currentPassword == null) {
Scope.get().getComponent(Ui.class).getWorkspace().showError("old password is empty");
return;
} else if (newPassword == null) {
Scope.get().getComponent(Ui.class).getWorkspace().showError("new password is empty");
return;
} else if (newPasswordRepeat == null) {
Scope.get().getComponent(Ui.class).getWorkspace().showError("new password repeat is empty");
return;
} else if (!newPassword.equals(newPasswordRepeat)) {
Scope.get().getComponent(Ui.class).getWorkspace().showError(
"the new password repeat did not match the new password.");
return;
}
new ChangePasswordServiceCall(currentPassword, newPassword).execute();
}
@Override
public boolean isEditable() {
return true;
}
class SaveChangesAction extends AAction {
@Override
public String getLabel() {
return "Change Password";
}
@Override
protected void onExecute() {
submitEditor();
}
}
class CancelAction extends AAction {
@Override
public String getLabel() {
return "Cancel";
}
@Override
protected void onExecute() {
cancelEditor();
}
}
}