package org.ovirt.engine.ui.webadmin.section.main.presenter;
import org.ovirt.engine.ui.webadmin.auth.CurrentUser;
import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.configure.ConfigurePopupPresenterWidget;
import org.ovirt.engine.ui.webadmin.utils.WebUtils;
import org.ovirt.engine.ui.webadmin.widget.tab.HeadlessTabPanel.TabWidgetHandler;
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.event.shared.EventBus;
import com.google.gwt.event.shared.GwtEvent.Type;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.PresenterWidget;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.ContentSlot;
import com.gwtplatform.mvp.client.proxy.RevealContentHandler;
import com.gwtplatform.mvp.client.proxy.RevealRootPopupContentEvent;
public class HeaderPresenterWidget extends PresenterWidget<HeaderPresenterWidget.ViewDef> implements TabWidgetHandler, MainTabBarOffsetUiHandlers {
public interface ViewDef extends View, TabWidgetHandler, MainTabBarOffsetUiHandlers {
void setUserNameLabel(String userName);
HasClickHandlers getConfigureLink();
HasClickHandlers getLogoutLink();
HasClickHandlers getAboutLink();
HasClickHandlers getGuideLink();
}
@ContentSlot
public static final Type<RevealContentHandler<?>> TYPE_SetSearchPanel = new Type<RevealContentHandler<?>>();
private final CurrentUser user;
private final SearchPanelPresenterWidget searchPanel;
private final AboutPopupPresenterWidget aboutPopup;
private final ConfigurePopupPresenterWidget configurePopup;
@Inject
public HeaderPresenterWidget(EventBus eventBus,
ViewDef view,
CurrentUser user,
SearchPanelPresenterWidget searchPanel,
AboutPopupPresenterWidget aboutPopup,
ConfigurePopupPresenterWidget configurePopup) {
super(eventBus, view);
this.user = user;
this.searchPanel = searchPanel;
this.aboutPopup = aboutPopup;
this.configurePopup = configurePopup;
}
@Override
public void addTabWidget(Widget tabWidget, int index) {
getView().addTabWidget(tabWidget, index);
}
@Override
public void removeTabWidget(Widget tabWidget) {
getView().removeTabWidget(tabWidget);
}
@Override
public void setMainTabBarOffset(int left) {
getView().setMainTabBarOffset(left);
}
@Override
protected void onBind() {
super.onBind();
registerHandler(getView().getConfigureLink().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
RevealRootPopupContentEvent.fire(HeaderPresenterWidget.this, configurePopup);
}
}));
registerHandler(getView().getLogoutLink().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
user.logout();
}
}));
registerHandler(getView().getAboutLink().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
RevealRootPopupContentEvent.fire(HeaderPresenterWidget.this, aboutPopup);
}
}));
registerHandler(getView().getGuideLink().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
String url = com.google.gwt.user.client.Window.Location
.getProtocol()
+ "//"
+ com.google.gwt.user.client.Window.Location.getHost()
+ "/rhev-docs/en-US/html/Administration_Guide/index.html";
WebUtils.openUrlInNewWindow("ENGINE Web Admin Documentation", url);
}
}));
}
@Override
protected void onReveal() {
super.onReveal();
setInSlot(TYPE_SetSearchPanel, searchPanel);
}
@Override
protected void onReset() {
super.onReset();
getView().setUserNameLabel(user.getUserName());
}
}