/*
* GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007
*/
package hudson.gwtmarketplace.client.pages.layout;
import hudson.gwtmarketplace.client.PageLoader;
import hudson.gwtmarketplace.client.Session;
import hudson.gwtmarketplace.client.commands.LoginCommand;
import hudson.gwtmarketplace.client.model.UserInfo;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.gwtpages.client.Pages;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.TextBox;
public class Header extends Composite implements ClickHandler, KeyUpHandler {
interface MyUiBinder extends UiBinder<FlowPanel, Header> {
}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
@UiField
Anchor loginLogout;
@UiField
TextBox searchBox;
@UiField
Image searchImg;
Boolean isLoggedIn;
public Header() {
initWidget(uiBinder.createAndBindUi(this));
loginLogout.setVisible(false);
loginLogout.addClickHandler(this);
searchImg.addClickHandler(this);
searchImg.setUrl("images/search.png");
searchBox.addKeyUpHandler(this);
new LoginCommand() {
@Override
public void onSuccess(UserInfo result) {
loginLogout.setVisible(true);
isLoggedIn = result.isLoggedIn();
if (result.isLoggedIn()) {
loginLogout.setText("logout");
} else {
loginLogout.setText("login");
}
}
}.execute();
}
private void onLoginLogout() {
if (isLoggedIn) {
Window.Location.assign(Session.get().getLogoutUrl());
} else {
Window.Location.assign(Session.get().getLoginUrl());
}
}
private void onSearch() {
Pages.get().goTo(PageLoader.PAGE_SEARCH, searchBox.getValue())
.execute();
searchBox.setValue(null);
}
@Override
public void onClick(ClickEvent event) {
if (event.getSource().equals(loginLogout)) {
onLoginLogout();
} else if (event.getSource().equals(searchImg)) {
onSearch();
}
}
@Override
public void onKeyUp(KeyUpEvent event) {
if (event.getSource().equals(searchBox)) {
if (KeyCodes.KEY_ENTER == event.getNativeKeyCode()) {
onSearch();
}
}
}
}