package org.ovirt.engine.ui.userportal.section.main.presenter.tab; import org.ovirt.engine.ui.uicommonweb.place.UserPortalApplicationPlaces; import org.ovirt.engine.ui.userportal.ApplicationConstants; import org.ovirt.engine.ui.userportal.gin.AssetProvider; import org.ovirt.engine.ui.userportal.section.main.presenter.MainTabPanelPresenter; import org.ovirt.engine.ui.userportal.uicommon.model.UserPortalModelInitEvent; import org.ovirt.engine.ui.userportal.uicommon.model.vm.UserPortalListProvider; import org.ovirt.engine.ui.userportal.utils.ConnectAutomaticallyManager; import com.google.gwt.event.shared.EventBus; import com.google.gwt.event.shared.GwtEvent.Type; import com.google.inject.Inject; import com.gwtplatform.mvp.client.ChangeTabHandler; import com.gwtplatform.mvp.client.RequestTabsHandler; import com.gwtplatform.mvp.client.TabContainerPresenter; import com.gwtplatform.mvp.client.TabData; import com.gwtplatform.mvp.client.TabDataBasic; import com.gwtplatform.mvp.client.TabView; import com.gwtplatform.mvp.client.annotations.ChangeTab; import com.gwtplatform.mvp.client.annotations.ContentSlot; import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit; import com.gwtplatform.mvp.client.annotations.RequestTabs; import com.gwtplatform.mvp.client.annotations.TabInfo; import com.gwtplatform.mvp.client.proxy.NonLeafTabContentProxy; import com.gwtplatform.mvp.client.proxy.RevealContentHandler; public class MainTabExtendedPresenter extends TabContainerPresenter<MainTabExtendedPresenter.ViewDef, MainTabExtendedPresenter.ProxyDef> { private static final ApplicationConstants constants = AssetProvider.getConstants(); @ProxyCodeSplit public interface ProxyDef extends NonLeafTabContentProxy<MainTabExtendedPresenter> { } public interface ViewDef extends TabView { } @RequestTabs public static final Type<RequestTabsHandler> TYPE_RequestTabs = new Type<>(); @ChangeTab public static final Type<ChangeTabHandler> TYPE_ChangeTab = new Type<>(); @ContentSlot public static final Type<RevealContentHandler<?>> TYPE_SetTabContent = new Type<>(); @TabInfo(container = MainTabPanelPresenter.class, nameToken = UserPortalApplicationPlaces.extendedVirtualMachineSideTabPlace) static TabData getTabData() { return new TabDataBasic(constants.extendedMainTabLabel(), 1); } @Inject public MainTabExtendedPresenter(EventBus eventBus, ViewDef view, ProxyDef proxy, final ConnectAutomaticallyManager connectAutomaticallyManager, final UserPortalListProvider provider) { super(eventBus, view, proxy, TYPE_SetTabContent, TYPE_RequestTabs, TYPE_ChangeTab, MainTabPanelPresenter.TYPE_SetTabContent); connectAutomaticallyManager.registerModel(provider.getModel()); getEventBus().addHandler(UserPortalModelInitEvent.getType(), event -> { connectAutomaticallyManager.unregisterModels(); connectAutomaticallyManager.registerModel(provider.getModel()); }); } }