package org.sigmah.client.ui.view.password;
/*
* #%L
* Sigmah
* %%
* Copyright (C) 2010 - 2016 URD
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import org.sigmah.client.i18n.I18N;
import org.sigmah.client.ui.presenter.password.ResetPasswordPresenter;
import org.sigmah.client.ui.view.LoginView;
import org.sigmah.client.ui.view.base.AbstractView;
import org.sigmah.client.ui.widget.Loadable;
import org.sigmah.client.ui.widget.button.Button;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.ValueBoxBase;
import com.google.inject.Singleton;
/**
* Reset password view.
*
* @author Denis Colliot (dcolliot@ideia.fr)
*/
@Singleton
public class ResetPasswordView extends AbstractView implements ResetPasswordPresenter.View {
private TextBox emailTextBox;
private PasswordTextBox passwordTextBox;
private PasswordTextBox passwordConfirmationTextBox;
private Button validationButton;
/**
* {@inheritDoc}
*/
@Override
public void initialize() {
final SimplePanel panel = new SimplePanel();
panel.setStyleName(LoginView.LOGIN_BG);
final Grid grid = new Grid(1, 2);
grid.setStyleName(LoginView.LOGIN_BOX);
// Logo.
grid.setWidget(0, 0, new Image(LoginView.LOGO_URL));
// Form.
final FlexTable form = new FlexTable();
form.setWidth("90%");
int y = 0;
// Login field (email).
form.setText(y, 0, I18N.CONSTANTS.loginLoginField());
form.getCellFormatter().setStyleName(y, 0, LoginView.LOGIN_BOX_FORM_LABEL);
emailTextBox = new TextBox();
emailTextBox.setWidth("100%");
emailTextBox.setEnabled(false);
form.setWidget(y, 1, emailTextBox);
form.getFlexCellFormatter().setColSpan(y, 1, 2);
y++;
// Separator.
for (int i = 0; i < 3; i++) {
form.getCellFormatter().setStyleName(y, i, LoginView.LOGIN_BOX_FORM_SEPARATOR);
}
y++;
// Password field.
form.setText(y, 0, I18N.CONSTANTS.newPassword() + '*');
form.getCellFormatter().setStyleName(y, 0, LoginView.LOGIN_BOX_FORM_LABEL);
passwordTextBox = new PasswordTextBox();
passwordTextBox.setWidth("100%");
form.setWidget(y, 1, passwordTextBox);
form.getFlexCellFormatter().setColSpan(y, 1, 2);
y++;
// Separator.
for (int i = 0; i < 3; i++) {
form.getCellFormatter().setStyleName(y, i, LoginView.LOGIN_BOX_FORM_SEPARATOR);
}
y++;
// Confirmation password field.
form.setText(y, 0, I18N.CONSTANTS.confirmPassword() + '*');
form.getCellFormatter().setStyleName(y, 0, LoginView.LOGIN_BOX_FORM_LABEL);
passwordConfirmationTextBox = new PasswordTextBox();
passwordConfirmationTextBox.setWidth("100%");
form.setWidget(y, 1, passwordConfirmationTextBox);
form.getFlexCellFormatter().setColSpan(y, 1, 2);
y++;
// Separator.
for (int i = 0; i < 3; i++) {
form.getCellFormatter().setStyleName(y, i, LoginView.LOGIN_BOX_FORM_SEPARATOR);
}
y++;
// Validation button.
validationButton = new Button(I18N.CONSTANTS.confirmUpdate());
validationButton.setWidth("130px");
form.setWidget(y, 0, validationButton);
form.getCellFormatter().setHorizontalAlignment(y, 1, HasHorizontalAlignment.ALIGN_RIGHT);
y++;
// Adding the form to the orange box.
grid.getCellFormatter().setHorizontalAlignment(0, 1, HasHorizontalAlignment.ALIGN_CENTER);
grid.setWidget(0, 1, form);
// Styles.
grid.getCellFormatter().setStyleName(0, 0, LoginView.LOGIN_BOX_LOGO);
grid.getCellFormatter().setStyleName(0, 1, LoginView.LOGIN_BOX_FORM);
panel.add(grid);
add(panel);
}
/**
* {@inheritDoc}
*/
@Override
public boolean isFullPage() {
return true;
}
/**
* {@inheritDoc}
*/
@Override
public Loadable[] getLoadables() {
return new Loadable[] { validationButton
};
}
/**
* {@inheritDoc}
*/
@Override
public ValueBoxBase<String> getEmailField() {
return emailTextBox;
}
/**
* {@inheritDoc}
*/
@Override
public ValueBoxBase<String> getPasswordField() {
return passwordTextBox;
}
/**
* {@inheritDoc}
*/
@Override
public ValueBoxBase<String> getPasswordConfirmationField() {
return passwordConfirmationTextBox;
}
/**
* {@inheritDoc}
*/
@Override
public Button getValidateButton() {
return validationButton;
}
}