package org.ovirt.engine.ui.userportal.section.main.presenter.tab;
import org.ovirt.engine.ui.common.auth.LoggedInGatekeeper;
import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalBasicListModel;
import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalItemModel;
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.AbstractModelActivationPresenter;
import org.ovirt.engine.ui.userportal.section.main.presenter.MainTabPanelPresenter;
import org.ovirt.engine.ui.userportal.section.main.presenter.tab.basic.MainTabBasicDetailsPresenterWidget;
import org.ovirt.engine.ui.userportal.section.main.presenter.tab.basic.MainTabBasicListPresenterWidget;
import org.ovirt.engine.ui.userportal.uicommon.model.UserPortalModelInitEvent;
import org.ovirt.engine.ui.userportal.uicommon.model.basic.UserPortalBasicListProvider;
import org.ovirt.engine.ui.userportal.utils.ConnectAutomaticallyManager;
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.inject.Inject;
import com.gwtplatform.mvp.client.TabData;
import com.gwtplatform.mvp.client.TabDataBasic;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.ContentSlot;
import com.gwtplatform.mvp.client.annotations.NameToken;
import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
import com.gwtplatform.mvp.client.annotations.TabInfo;
import com.gwtplatform.mvp.client.annotations.UseGatekeeper;
import com.gwtplatform.mvp.client.proxy.RevealContentHandler;
import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace;
public class MainTabBasicPresenter extends AbstractModelActivationPresenter<UserPortalItemModel, UserPortalBasicListModel, MainTabBasicPresenter.ViewDef, MainTabBasicPresenter.ProxyDef> {
private static final ApplicationConstants constants = AssetProvider.getConstants();
@ProxyCodeSplit
@NameToken(UserPortalApplicationPlaces.basicMainTabPlace)
@UseGatekeeper(LoggedInGatekeeper.class)
public interface ProxyDef extends TabContentProxyPlace<MainTabBasicPresenter> {
}
public interface ViewDef extends View {
HasClickHandlers getRefreshButton();
}
@TabInfo(container = MainTabPanelPresenter.class)
static TabData getTabData() {
return new TabDataBasic(constants.basicMainTabLabel(), 0);
}
@ContentSlot
public static final Type<RevealContentHandler<?>> TYPE_VmListContent = new Type<>();
@ContentSlot
public static final Type<RevealContentHandler<?>> TYPE_VmDetailsContent = new Type<>();
private final MainTabBasicListPresenterWidget vmList;
private final MainTabBasicDetailsPresenterWidget vmDetails;
@Inject
public MainTabBasicPresenter(EventBus eventBus, ViewDef view, ProxyDef proxy,
MainTabBasicListPresenterWidget vmList,
MainTabBasicDetailsPresenterWidget vmDetails,
final UserPortalBasicListProvider provider,
final ConnectAutomaticallyManager connectAutomaticallyManager) {
super(eventBus, view, proxy, provider, MainTabPanelPresenter.TYPE_SetTabContent);
this.vmList = vmList;
this.vmDetails = vmDetails;
connectAutomaticallyManager.registerModel(provider.getModel());
getEventBus().addHandler(UserPortalModelInitEvent.getType(),
event -> connectAutomaticallyManager.registerModel(provider.getModel()));
}
@Override
protected void onReveal() {
super.onReveal();
setInSlot(TYPE_VmListContent, vmList);
setInSlot(TYPE_VmDetailsContent, vmDetails);
}
}