package org.ovirt.engine.ui.userportal.section.main.presenter;
import org.ovirt.engine.ui.common.presenter.ScrollableTabBarPresenterWidget;
import org.ovirt.engine.ui.common.widget.tab.TabWidgetHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.GwtEvent.Type;
import com.google.gwt.user.client.ui.IsWidget;
import com.gwtplatform.mvp.client.ChangeTabHandler;
import com.gwtplatform.mvp.client.HasUiHandlers;
import com.gwtplatform.mvp.client.RequestTabsHandler;
import com.gwtplatform.mvp.client.TabContainerPresenter;
import com.gwtplatform.mvp.client.TabView;
import com.gwtplatform.mvp.client.annotations.ContentSlot;
import com.gwtplatform.mvp.client.proxy.Proxy;
import com.gwtplatform.mvp.client.proxy.RevealContentHandler;
/**
* Base class for sub tab panel presenters.
*
* @param <V>
* View type.
* @param <P>
* Proxy type.
*/
public abstract class AbstractSubTabPanelPresenter<V extends AbstractSubTabPanelPresenter.ViewDef, P extends Proxy<?>>
extends TabContainerPresenter<V, P> implements TabWidgetHandler {
public interface ViewDef extends TabView, HasUiHandlers<TabWidgetHandler> {
}
@ContentSlot
public static final Type<RevealContentHandler<?>> TYPE_SetTabBar = new Type<>();
protected final ScrollableTabBarPresenterWidget tabBar;
public AbstractSubTabPanelPresenter(EventBus eventBus, V view, P proxy,
Object tabContentSlot,
Type<RequestTabsHandler> requestTabsEventType,
Type<ChangeTabHandler> changeTabEventType, GwtEvent.Type<RevealContentHandler<?>> slot,
ScrollableTabBarPresenterWidget tabBar) {
super(eventBus, view, proxy, tabContentSlot, requestTabsEventType, changeTabEventType, slot);
getView().setUiHandlers(tabBar);
this.tabBar = tabBar;
}
@Override
protected void onReveal() {
super.onReveal();
setInSlot(TYPE_SetTabBar, tabBar);
}
@Override
public void addTabWidget(IsWidget tabWidget, int index) {
tabBar.addTabWidget(tabWidget, index);
}
@Override
public void removeTabWidget(IsWidget tabWidget) {
tabBar.removeTabWidget(tabWidget);
}
}