package org.ovirt.engine.ui.webadmin.section.main.presenter;
import org.ovirt.engine.ui.common.auth.CurrentUser;
import org.ovirt.engine.ui.common.presenter.AbstractHeaderPresenterWidget;
import org.ovirt.engine.ui.common.presenter.ScrollableTabBarPresenterWidget;
import org.ovirt.engine.ui.common.system.HeaderOffsetChangeEvent;
import org.ovirt.engine.ui.common.uicommon.model.OptionsProvider;
import org.ovirt.engine.ui.common.widget.tab.TabWidgetHandler;
import org.ovirt.engine.ui.webadmin.ApplicationDynamicMessages;
import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.configure.ConfigurePopupPresenterWidget;
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.IsWidget;
import com.google.inject.Inject;
import com.google.inject.Provider;
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 AbstractHeaderPresenterWidget<HeaderPresenterWidget.ViewDef> implements
TabWidgetHandler, MainTabBarOffsetUiHandlers {
public interface ViewDef extends AbstractHeaderPresenterWidget.ViewDef {
HasClickHandlers getConfigureLink();
HasClickHandlers getAboutLink();
}
@ContentSlot
public static final Type<RevealContentHandler<?>> TYPE_SetSearchPanel = new Type<>();
@ContentSlot
public static final Type<RevealContentHandler<?>> TYPE_SetTabBar = new Type<>();
private final SearchPanelPresenterWidget searchPanel;
private final ScrollableTabBarPresenterWidget tabBar;
private final Provider<AboutPopupPresenterWidget> aboutPopupProvider;
private final Provider<ConfigurePopupPresenterWidget> configurePopupProvider;
private final ApplicationDynamicMessages dynamicMessages;
@Inject
public HeaderPresenterWidget(EventBus eventBus, ViewDef view, CurrentUser user,
SearchPanelPresenterWidget searchPanel,
ScrollableTabBarPresenterWidget tabBar,
OptionsProvider optionsProvider,
Provider<AboutPopupPresenterWidget> aboutPopupProvider,
Provider<ConfigurePopupPresenterWidget> configurePopupProvider,
ApplicationDynamicMessages dynamicMessages) {
super(eventBus, view, user, optionsProvider, dynamicMessages.applicationDocTitle(), dynamicMessages.guideUrl());
this.searchPanel = searchPanel;
this.tabBar = tabBar;
this.aboutPopupProvider = aboutPopupProvider;
this.configurePopupProvider = configurePopupProvider;
this.dynamicMessages = dynamicMessages;
}
@Override
public void addTabWidget(IsWidget tabWidget, int index) {
tabBar.addTabWidget(tabWidget, index);
}
@Override
public void removeTabWidget(IsWidget tabWidget) {
tabBar.removeTabWidget(tabWidget);
}
@Override
public void setMainTabBarOffset(int left) {
HeaderOffsetChangeEvent.fire(this, left);
}
@Override
protected void onBind() {
super.onBind();
registerHandler(getView().getConfigureLink().addClickHandler(event ->
RevealRootPopupContentEvent.fire(HeaderPresenterWidget.this, configurePopupProvider.get())));
registerHandler(getView().getAboutLink().addClickHandler(event ->
RevealRootPopupContentEvent.fire(HeaderPresenterWidget.this, aboutPopupProvider.get())));
}
@Override
protected void onReveal() {
super.onReveal();
setInSlot(TYPE_SetSearchPanel, searchPanel);
setInSlot(TYPE_SetTabBar, tabBar);
}
}