# HG changeset patch # User Björn Ricks # Date 1354267269 -3600 # Node ID 7898117a0730a2b9e163047ecf1d7e2c3c337121 # Parent 7a9aa2e52a3a370db8b43a6cdf56f269fc7252f7 Remove obsolete MainMenu MainMenu got merged into FLYSHeader diff -r 7a9aa2e52a3a -r 7898117a0730 flys-client/src/main/java/de/intevation/flys/client/client/ui/MainMenu.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/MainMenu.java Fri Nov 30 10:19:02 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,269 +0,0 @@ -package de.intevation.flys.client.client.ui; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.i18n.client.LocaleInfo; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.smartgwt.client.types.Alignment; -import com.smartgwt.client.util.BooleanCallback; -import com.smartgwt.client.util.SC; -import com.smartgwt.client.widgets.Button; -import com.smartgwt.client.widgets.Label; -import com.smartgwt.client.widgets.events.ClickEvent; -import com.smartgwt.client.widgets.events.ClickHandler; -import com.smartgwt.client.widgets.layout.HLayout; - -import de.intevation.flys.client.client.FLYS; -import de.intevation.flys.client.client.FLYSConstants; -import de.intevation.flys.client.client.services.UserService; -import de.intevation.flys.client.client.services.UserServiceAsync; -import de.intevation.flys.client.shared.model.User; - - -/** - * @author Ingo Weinzierl - */ -public class MainMenu extends HLayout { - - /** The interface that provides i18n messages. */ - private final FLYSConstants messages = GWT.create(FLYSConstants.class); - - /** An instance to FLYS.*/ - protected FLYS flys; - - /** The user that is currently logged in. */ - protected User currentUser; - - /** The label that displays the current logged in user. */ - protected Label userText; - - /** The button to log the current user out.*/ - protected Button logout; - - /** The button to open the project list.*/ - protected Button projectList; - - /** The button to switch between the english and german version.*/ - protected Button language; - - /** The button to open an info panel.*/ - protected Button info; - - protected UserServiceAsync userService = - GWT.create(UserService.class); - - /** - * The default constructor for creating a new MainMenu. - */ - public MainMenu(FLYS flys) { - this.flys = flys; - - String guest = messages.user() + " " + messages.guest(); - - userText = new Label(guest); - projectList = new Button(messages.manage_projects()); - logout = new Button(messages.logout()); - language = new Button(messages.switch_language()); - info = new Button(messages.info()); - - projectList.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - GWT.log("Clicked 'Open ProjectList' button."); - ProjectList list = getFlys().getProjectList(); - if (list.isVisible()) - list.hide(); - else - list.show(); - } - }); - - logout.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - GWT.log("Clicked 'logout' button."); - userService.logoutCurrentUser(new AsyncCallback() { - public void onFailure(Throwable caught) { - } - - public void onSuccess(Void result) { - /* Just reload the page. GGInAFilter is goint to redirect - * to the correct login page */ - Window.Location.reload(); - } - }); - - } - }); - - language.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - LocaleInfo info = LocaleInfo.getCurrentLocale(); - final String currentLocale = info.getLocaleName(); - final String newLocale = currentLocale.equals("de") - ? "en" - : "de"; - - SC.confirm(messages.warning(), messages.warning_language(), - new BooleanCallback() { - @Override - public void execute(Boolean value) { - if (value) { - switchLanguage(currentLocale, newLocale); - } - } - }); - } - }); - - info.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - GWT.log("Clicked 'info' button."); - GWT.log("IMPLEMENT the 'open info panel' function."); - } - }); - - init(); - } - - - /** - * This method is called by the constructor after creating the necessary - * components. It initializes layout specific stuff like width, height, - * colors and so on and appends the components. - */ - protected void init() { - setStyleName("bgBlueDark"); - setHeight("25px"); - setLayoutMargin(5); - - projectList.setStyleName("fontLightSmall"); - userText.setStyleName("fontLightSmall"); - logout.setStyleName("fontLightSmall"); - language.setStyleName("fontLightSmall"); - info.setStyleName("fontLightSmall"); - - projectList.setWidth("140px"); - - HLayout leftPanel = new HLayout(); - leftPanel.setWidth("80%"); - leftPanel.setMembersMargin(5); - leftPanel.addMember(projectList); - - userText.setAlign(Alignment.RIGHT); - userText.setWidth(200); - logout.setWidth(70); - info.setWidth(40); - language.setWidth(70); - - HLayout rightPanel = new HLayout(); - rightPanel.setAlign(Alignment.RIGHT); - rightPanel.setMembersMargin(3); - rightPanel.setLayoutRightMargin(5); - rightPanel.addMember(userText); - rightPanel.addMember(logout); - rightPanel.addMember(language); - rightPanel.addMember(info); - - addMember(leftPanel); - addMember(rightPanel); - } - - - /** - * Returns the FLYS instance stored in this class. - * - * @return the flys instance. - */ - protected FLYS getFlys() { - return flys; - } - - - /** - * Set the current {@link User} and call {@link updateCurrentUser()} - * afterwards. - * - * @param user the new user. - */ - public void setCurrentUser(User currentUser) { - this.currentUser = currentUser; - - updateCurrentUser(); - } - - - /** - * Update the text field that shows the current user. If no user is - * currently logged in, the text will display {@link FLYSConstants.guest()}. - */ - public void updateCurrentUser() { - String name = currentUser != null - ? currentUser.getName() - : messages.guest(); - - GWT.log("Update the current user: " + name); - - String username = messages.user() + " " + name; - userText.setContents(username); - } - - - /** - * Create a new project by calling FLYS.newProject(). - */ - protected void createNewProject() { - flys.newProject(); - } - - - /** - * This method triggers the language switch between the currentLocale - * and the newLocale. The switch is done by replacing a "locale=" - * parameter in the url of the application. We could use the GWT UrlBuilder - * class to create a new URL, but - in my eyes - this class is a bit - * inconsistens in its implementation. - * - * @param currentLocale The current locale string (e.g. "en"). - * @param newLocale The new locale string (e.g. "de"). - */ - protected void switchLanguage(String currentLocale, String newLocale) { - String newLocation = Window.Location.getHref(); - - if (newLocation.endsWith("/")) { - newLocation = newLocation.substring(0, newLocation.length()-1); - } - - String replace = null; - String replaceWith = null; - - if (newLocation.indexOf("&locale=") >= 0) { - replace = currentLocale.equals("de") - ? "&locale=de" - : "&locale=en"; - - replaceWith = "&locale=" + newLocale; - } - else if (newLocation.indexOf("?locale=") >= 0) { - replace = currentLocale.equals("de") - ? "?locale=de" - : "?locale=en"; - - replaceWith = "?locale=" + newLocale; - } - else { - newLocation += newLocation.indexOf("?") >= 0 - ? "&locale=" + newLocale - : "?locale=" + newLocale; - } - - if (replace != null && replaceWith != null) { - newLocation = newLocation.replace(replace, replaceWith); - } - - Window.open(newLocation, "_self", ""); - } -} -// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :