package de.tud.kom.socom.web.client.login;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.resources.client.CssResource;
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.uibinder.client.UiTemplate;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import de.tud.kom.socom.web.client.htmlelements.ErrorList;
import de.tud.kom.socom.web.client.htmlelements.ErrorListItemView;
import de.tud.kom.socom.web.client.sharedmodels.SocialMediaApplications;
/** the view showing the result of token processing in the popup window
* It may as well automatically close the window
* @author jkonert
*
*/
public class PostLoginOAuthWindowView extends Composite implements LoginOAuthWindowPresenter.PostLoginOAuthWindowViewInterface {
@UiTemplate("PostLoginOAuthWindowView.ui.xml")
interface NetworkLoginViewUiBinder extends UiBinder<Widget, PostLoginOAuthWindowView> {
}
interface style extends CssResource
{
String invisible();
}
@UiField style style;
@UiField SpanElement networkName;
@UiField DivElement pleaseWait;
@UiField DivElement success;
@UiField SpanElement seconds;
@UiField DivElement failure;
@UiField Button retryButton;
@UiField Button closeButton;
@UiField ErrorList errorList;
private static NetworkLoginViewUiBinder uiBinder = GWT.create(NetworkLoginViewUiBinder.class);
private LoginOAuthWindowPresenter presenter;
private String oldNetworkName = null;
private String oldSeconds = null;
public PostLoginOAuthWindowView(LoginOAuthWindowPresenter presenter) {
this.presenter = presenter;
initWidget(uiBinder.createAndBindUi(this));
}
@Override
public void setNetworkName(SocialMediaApplications app)
{
if (this.oldNetworkName == null) this.oldNetworkName = networkName.getInnerText();
networkName.setInnerText(app.getDisplayname());
}
@Override
public void setSecconds(int sec)
{
if (this.oldSeconds == null) this.oldSeconds = seconds.getInnerText();
seconds.setInnerText(String.valueOf(sec));
}
@Override
public void showSuccess()
{
pleaseWait.addClassName(style.invisible());
failure.addClassName(style.invisible());
success.removeClassName(style.invisible());
}
@Override
public void showFailure()
{
pleaseWait.addClassName(style.invisible());
success.addClassName(style.invisible());
failure.removeClassName(style.invisible());
}
@Override
public void clear()
{
networkName.setInnerText(oldNetworkName);
pleaseWait.removeClassName(style.invisible());
success.addClassName(style.invisible());
failure.addClassName(style.invisible());
}
@Override
public native void close()
/*-{
$wnd.close();
}-*/ ;
@UiHandler("retryButton")
public void onRetryButtonClick(ClickEvent event)
{
presenter.onRetryButtonClick();
}
@UiHandler("closeButton")
public void onCloseButtonClick(ClickEvent event)
{
presenter.onCloseButtonClick();
}
@Override
public void showError(ErrorListItemView error) {
errorList.addError(error);
}
@Override
public void hideErrors() {
errorList.clear();
}
@Override
public void hideError(ErrorListItemView error) {
errorList.removeError(error);
}
}