Martin Mucha has uploaded a new change for review. Change subject: webadmin: syntax sugar, simplified popup definition syntat ......................................................................
webadmin: syntax sugar, simplified popup definition syntat Change-Id: I0d2a31583b16a70fb4763a0915a2641ebda9e1e7 Signed-off-by: Martin Mucha <[email protected]> --- M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/NetworkModule.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/SearchableDetailModelProviderBuilder.java 2 files changed, 122 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/42/33942/1 diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/NetworkModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/NetworkModule.java index 389acdb..1436078 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/NetworkModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/NetworkModule.java @@ -1,10 +1,10 @@ package org.ovirt.engine.ui.webadmin.gin.uicommon; +import org.ovirt.engine.core.common.businessentities.Permissions; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmTemplate; -import org.ovirt.engine.core.common.businessentities.Permissions; import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet; import org.ovirt.engine.core.common.businessentities.network.NetworkCluster; import org.ovirt.engine.core.common.businessentities.network.NetworkView; @@ -326,6 +326,19 @@ }; } + public SearchableDetailModelProvider<Permissions, NetworkListModel, PermissionListModel> getNetworkPermissionListProvider____(EventBus eventBus, + Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider, + Provider<PermissionsPopupPresenterWidget> popupProvider, + Provider<RolePermissionsRemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider) { + + SearchableDetailModelProviderBuilder<NetworkListModel, PermissionListModel> builder = + SearchableDetailModelProviderBuilder.createBuilder(PermissionListModel.class, NetworkListModel.class); + + return builder.addConfirmPopupRule(builder.getDetailModel().getRemoveCommand(), removeConfirmPopupProvider) + .addModelPopupRule(builder.getDetailModel().getRemoveCommand(), popupProvider) + .build(eventBus, defaultConfirmPopupProvider); + } + @Override protected void configure() { } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/SearchableDetailModelProviderBuilder.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/SearchableDetailModelProviderBuilder.java new file mode 100644 index 0000000..8aad746 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/SearchableDetailModelProviderBuilder.java @@ -0,0 +1,108 @@ +package org.ovirt.engine.ui.webadmin.gin.uicommon; + +import java.util.HashMap; +import java.util.Map; + +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.CommonModelManager; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailTabModelProvider; +import org.ovirt.engine.ui.common.uicommon.model.UiCommonModelResolver; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; +import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel; +import org.ovirt.engine.ui.uicommonweb.models.Model; +import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Provider; + +public class SearchableDetailModelProviderBuilder<M extends ListWithDetailsModel, D extends SearchableListModel> { + + private final Class<D> detailModelClass; + private final Class<M> mainModelClass; + + private final Map<UICommand, Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends Model, ?>>> popupProviderMap; + private final Map<UICommand, Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?>>> confirmPopupProviderMap; + + public SearchableDetailModelProviderBuilder(Class<D> detailModelClass, Class<M> mainModelClass) { + this.detailModelClass = detailModelClass; + this.mainModelClass = mainModelClass; + + confirmPopupProviderMap = new HashMap<UICommand, Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?>>>(); + popupProviderMap = new HashMap<UICommand, Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends Model, ?>>>(); + } + + public static <M extends ListWithDetailsModel, D extends SearchableListModel> SearchableDetailModelProviderBuilder<M, D> createBuilder(Class<D> detailModel, Class<M> mainModel) { + return new SearchableDetailModelProviderBuilder<M, D>(detailModel, mainModel); + } + + public D getDetailModel() { + return UiCommonModelResolver.getDetailListModel(CommonModelManager.instance(), mainModelClass, detailModelClass); + } + + public SearchableDetailModelProviderBuilder<M ,D> addModelPopupRule(UICommand uiCommand, Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends Model, ?>> provider) { + popupProviderMap.put(uiCommand, provider); + return this; + } + + public SearchableDetailModelProviderBuilder<M, D> addConfirmPopupRule(UICommand uiCommand, Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?>> provider) { + confirmPopupProviderMap.put(uiCommand, provider); + return this; + } + + public <T> SearchableDetailTabModelProvider<T, M, D> build(EventBus eventBus, Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider) { + return new SearchableDetailTabModelProviderWithConfirmAndPopupProvider<T, M, D>(eventBus, + defaultConfirmPopupProvider, + mainModelClass, + detailModelClass, + popupProviderMap, + confirmPopupProviderMap + ); + } + + public static class SearchableDetailTabModelProviderWithConfirmAndPopupProvider<T, M extends ListWithDetailsModel, D extends SearchableListModel> + extends SearchableDetailTabModelProvider<T, M, D>{ + + Map<UICommand, Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends Model, ?>>> popupProviderMap; + Map<UICommand, Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?>>> confirmPopupProviderMap; + + public SearchableDetailTabModelProviderWithConfirmAndPopupProvider(EventBus eventBus, + Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider, + Class<M> mainModelClass, + Class<D> detailModelClass, + Map<UICommand, Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends Model, ?>>> popupProviderMap, + Map<UICommand, Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?>>> confirmPopupProviderMap) { + super(eventBus, defaultConfirmPopupProvider, mainModelClass, detailModelClass); + + this.popupProviderMap = popupProviderMap; + this.confirmPopupProviderMap = confirmPopupProviderMap; + } + + @Override + public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(D source, + UICommand lastExecutedCommand, Model windowModel) { + + Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends Model, ?>> popupProvider = popupProviderMap.get(lastExecutedCommand); + + if (popupProvider != null) { + return popupProvider.get(); + } else { + return super.getModelPopup(source, lastExecutedCommand, windowModel); + } + } + + @Override + public AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?> getConfirmModelPopup(D source, + UICommand lastExecutedCommand) { + + Provider<? extends AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?>> confirmPopupProvider = confirmPopupProviderMap.get(lastExecutedCommand); + if (confirmPopupProvider != null) { + return confirmPopupProvider.get(); + } else { + return super.getConfirmModelPopup(source, lastExecutedCommand); + } + } + } + +} -- To view, visit http://gerrit.ovirt.org/33942 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0d2a31583b16a70fb4763a0915a2641ebda9e1e7 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Mucha <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
