/******************************************************************************* * 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); } }