/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*******************************************************************************/
package org.ebayopensource.turmeric.policy.adminui.client.view;
import org.ebayopensource.turmeric.policy.adminui.client.PolicyAdminUIUtil;
import org.ebayopensource.turmeric.policy.adminui.client.presenter.SplashPresenter;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.Image;
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.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
/**
* SplashView
*
* Display the splash page.
*
*/
public class SplashView extends Composite implements SplashPresenter.Display {
/** The submit button. */
protected Button submitButton;
/** The login label. */
protected Label loginLabel;
/** The password label. */
protected Label passwordLabel;
/** The domain label. */
protected Label domainLabel;
/** The login. */
protected TextBox login;
/** The password. */
protected TextBox password;
/** The domain. */
protected TextBox domain;
/** The logo. */
protected Image logo;
/** The panel. */
protected VerticalPanel panel;
/** The id. */
protected String id;
/** The lang. */
protected static String lang;
/** The display message. */
protected Label displayMessage;
/**
* Instantiates a new splash view.
*/
public SplashView ()
{
panel = new VerticalPanel();
panel.setHorizontalAlignment(VerticalPanel.ALIGN_CENTER);
panel.setVerticalAlignment(VerticalPanel.ALIGN_MIDDLE);
panel.setWidth("100%");
initWidget(panel);
FlowPanel languagePanel = new FlowPanel();
languagePanel.setWidth("100%");
languagePanel.addStyleName("lang-panel");
panel.add(languagePanel);
Anchor it = new Anchor();
it.setText(PolicyAdminUIUtil.constants.italian());
//TODO this doesn't work when refactored into a reusable method!
it.addClickHandler(new ClickHandler() {
public native void onClick(ClickEvent event)
/*-{
var l = @org.ebayopensource.turmeric.policy.adminui.client.view.SplashView::lang;
var url = "";
var currLocation = $wnd.location.toString().split("?");
if (currLocation.length > 1) {
var params = currLocation[1].toString().split("&");
var done = false;
for (var i=0;i<params.length;i++) {
if (params[i].indexOf("locale") == 0) {
params[i] = "locale=it";
done = true;
}
}
if (!done) {
params.splice(0,0, "locale=it");
}
url = currLocation[0]+"?"+params.join("&");
} else {
var anchors = currLocation[0].toString().split("#");
if (anchors.length > 1) {
url = anchors[0] +"?"+ "locale=it#" + anchors[1];
} else {
url = currLocation[0]+"?"+ "locale=it";
}
}
$wnd.location.href = url;
$wnd.location.replace(url);
}-*/;
});
Anchor en = new Anchor(PolicyAdminUIUtil.constants.english());
en.addClickHandler(new ClickHandler() {
public native void onClick(ClickEvent event)
/*-{
var l = @org.ebayopensource.turmeric.policy.adminui.client.view.SplashView::lang;
var url = "";
var currLocation = $wnd.location.toString().split("?");
if (currLocation.length > 1) {
var params = currLocation[1].toString().split("&");
var done = false;
for (var i=0;i<params.length;i++) {
if (params[i].indexOf("locale") == 0) {
params[i] = "locale=en";
done = true;
}
}
if (!done) {
params.splice(0,0, "locale=en");
}
url = currLocation[0]+"?"+params.join("&");
} else {
var anchors = currLocation[0].toString().split("#");
if (anchors.length > 1) {
url = anchors[0] +"?"+ "locale=en#" + anchors[1];
} else {
url = currLocation[0]+"?"+ "locale=en";
}
}
$wnd.location.href = url;
$wnd.location.replace(url);
}-*/;
});
Anchor fr = new Anchor(PolicyAdminUIUtil.constants.french());
fr.setEnabled(false);
fr.addStyleName("hidden");
languagePanel.add(it);
languagePanel.add(fr);
languagePanel.add(en);
this.logo = new Image("images/turmeric.png");
this.logo.addStyleDependentName("turmeric");
this.logo.addStyleDependentName("splash");
this.submitButton = new Button(PolicyAdminUIUtil.constants.enter());
this.loginLabel = new Label(PolicyAdminUIUtil.constants.login());
this.login = new TextBox();
this.passwordLabel = new Label(PolicyAdminUIUtil.constants.password());
this.password = new PasswordTextBox();
this.domainLabel = new Label(PolicyAdminUIUtil.constants.domain());
this.domain = new TextBox();
panel.add(logo);
Grid grid = new Grid(4,2);
grid.addStyleName("splash");
// TODO all login related behaviour is commented out for R1 until
// proper consideration in R2 of PolicyService behaviour.
grid.setWidget(0,0,this.loginLabel);
grid.setWidget(0,1,this.login);
grid.setWidget(1,0,this.passwordLabel);
grid.setWidget(1,1,this.password);
grid.setWidget(2,0,this.domainLabel);
grid.setWidget(2,1,this.domain);
grid.setWidget(3,1,this.submitButton);
grid.getCellFormatter().setHorizontalAlignment(3, 1, HasHorizontalAlignment.ALIGN_RIGHT);
panel.add(grid);
displayMessage = new Label();
panel.add(displayMessage);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.Display#activate()
*/
public void activate () {
this.login.setValue("");
this.password.setValue("");
setWidth("100%");
}
/* (non-Javadoc)
* @see com.google.gwt.user.client.ui.Widget#asWidget()
*/
public Widget asWidget() {
return this;
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.SplashPresenter.Display#getSubmitButton()
*/
public HasClickHandlers getSubmitButton() {
return this.submitButton;
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.SplashPresenter.Display#getLogin()
*/
public HasValue<String> getLogin() {
return this.login;
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.SplashPresenter.Display#getPassword()
*/
public HasValue<String> getPassword() {
return this.password;
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.SplashPresenter.Display#getDomain()
*/
public HasValue<String> getDomain() {
return this.domain;
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.Display#getAssociatedId()
*/
public String getAssociatedId() {
return this.id;
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.Display#setAssociatedId(java.lang.String)
*/
public void setAssociatedId(String id) {
this.id = id;
}
/**
* Configure language button.
*
* @param button
* the button
*/
protected void configureLanguageButton (Button button) {
button.addClickHandler(new ClickHandler() {
public native void onClick(ClickEvent event)
/*-{
var l = @org.ebayopensource.turmeric.policy.adminui.client.view.SplashView::lang;
alert ("value of static field = "+l);
var url = "";
var currLocation = $wnd.location.toString().split("?");
if (currLocation.length > 1) {
var params = currLocation[1].toString().split("&");
var done = false;
for (var i=0;i<params.length;i++) {
if (params[i].indexOf("locale") == 0) {
params[i] = "locale="+l;
done = true;
}
}
if (!done) {
params.splice(0,0, "locale="+l);
}
url = currLocation[0]+"?"+params.join("&");
} else {
url = currLocation[0]+"?"+ "locale="+l;
}
$wnd.location.href = url;
$wnd.location.replace(url);
}-*/;
});
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.policy.adminui.client.presenter.SplashPresenter.Display#promptMessage(java.lang.String)
*/
public void promptMessage(String message) {
displayMessage.setText(message);
displayMessage.setVisible(true);
}
}