package org.ovirt.engine.ui.webadmin.gin.uicommon;
import org.ovirt.engine.core.common.businessentities.AuditLog;
import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
import org.ovirt.engine.ui.common.presenter.popup.DefaultConfirmationPopupPresenterWidget;
import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
import org.ovirt.engine.ui.common.uicommon.model.MainTabModelProvider;
import org.ovirt.engine.ui.uicommonweb.UICommand;
import org.ovirt.engine.ui.uicommonweb.models.CommonModel;
import org.ovirt.engine.ui.uicommonweb.models.Model;
import org.ovirt.engine.ui.uicommonweb.models.events.EventListModel;
import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.event.EventPopupPresenterWidget;
import org.ovirt.engine.ui.webadmin.uicommon.model.EventModelProvider;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.inject.client.AbstractGinModule;
import com.google.inject.Provider;
import com.google.inject.Provides;
import com.google.inject.Singleton;
import com.google.inject.TypeLiteral;
import com.google.inject.name.Named;
import com.google.inject.name.Names;
public class EventModule extends AbstractGinModule {
// Main List Model
@Provides
@Singleton
public MainModelProvider<AuditLog, EventListModel<Void>> getEventListProvider(EventBus eventBus,
Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider,
final Provider<EventPopupPresenterWidget> popupProvider,
@Named("main") final Provider<EventListModel<Void>> modelProvider,
final Provider<CommonModel> commonModelProvider) {
MainTabModelProvider<AuditLog, EventListModel<Void>> result =
new MainTabModelProvider<AuditLog, EventListModel<Void>>(eventBus, defaultConfirmPopupProvider,
commonModelProvider) {
@Override
public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(EventListModel<Void> source,
UICommand lastExecutedCommand, Model windowModel) {
if (lastExecutedCommand == getModel().getDetailsCommand()) {
return popupProvider.get();
} else {
return super.getModelPopup(source, lastExecutedCommand, windowModel);
}
}
};
result.setModelProvider(modelProvider);
return result;
}
@Provides
@Singleton
@Named("footer")
public EventModelProvider getEventModelProvider(EventBus eventBus,
Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider,
@Named("footer") final Provider<EventListModel<Void>> modelProvider) {
EventModelProvider result = new EventModelProvider(eventBus, defaultConfirmPopupProvider);
result.setModelProvider(modelProvider);
return result;
}
@Override
protected void configure() {
bind(new TypeLiteral<EventListModel<Void>>(){})
.annotatedWith(Names.named("main")).to(new TypeLiteral<EventListModel<Void>>(){}) //$NON-NLS-1$
.in(Singleton.class);
bind(new TypeLiteral<EventListModel<Void>>(){})
.annotatedWith(Names.named("footer")).to(new TypeLiteral<EventListModel<Void>>(){}) //$NON-NLS-1$
.in(Singleton.class);
}
}