Maor Lipchuk has uploaded a new change for review. Change subject: webadmin: Add attach warnning in Data center module ......................................................................
webadmin: Add attach warnning in Data center module Change-Id: I3086670488aba8d0df12223dd61b3830f6764bd9 Bug-Url: https://bugzilla.redhat.com/1138115 Signed-off-by: Maor Lipchuk <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterStorageListModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java 2 files changed, 85 insertions(+), 18 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/52/36452/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterStorageListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterStorageListModel.java index 255577c..a364573 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterStorageListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterStorageListModel.java @@ -1,6 +1,7 @@ package org.ovirt.engine.ui.uicommonweb.models.datacenters; import java.util.ArrayList; +import java.util.List; import org.ovirt.engine.core.common.VdcActionUtils; import org.ovirt.engine.core.common.action.AttachStorageDomainToPoolParameters; @@ -11,6 +12,7 @@ import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainSharedStatus; +import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; import org.ovirt.engine.core.common.businessentities.StorageDomainType; import org.ovirt.engine.core.common.businessentities.StorageFormatType; @@ -163,6 +165,8 @@ { privatepb_remove = value; } + + private ArrayList<StorageDomain> selectedStorageDomains; public DataCenterStorageListModel() { @@ -449,6 +453,7 @@ public void onAttach() { ListModel model = (ListModel) getWindow(); + ArrayList<StorageDomain> selectedDataStorageDomains = new ArrayList<StorageDomain>(); if (getEntity() == null) { @@ -456,26 +461,83 @@ return; } - ArrayList<StorageDomain> items = new ArrayList<StorageDomain>(); - for (EntityModel a : Linq.<EntityModel> cast(model.getItems())) - { - if (a.getIsSelected()) - { - items.add((StorageDomain) a.getEntity()); + selectedStorageDomains = new ArrayList<StorageDomain>(); + for (EntityModel a : Linq.<EntityModel> cast(model.getItems())) { + if (a.getIsSelected()) { + StorageDomain storageDomain = (StorageDomain) a.getEntity(); + selectedStorageDomains.add(storageDomain); + if (storageDomain.getStorageDomainType() == StorageDomainType.Data) { + selectedDataStorageDomains.add(storageDomain); + } } } - if (items.size() > 0) - { - ArrayList<VdcActionParametersBase> pb = new ArrayList<VdcActionParametersBase>(); - for (StorageDomain a : items) - { - pb.add(new AttachStorageDomainToPoolParameters(a.getId(), getEntity().getId())); - } - - Frontend.getInstance().runMultipleAction(VdcActionType.AttachStorageDomainToPool, pb); + if (selectedStorageDomains.isEmpty()) { + cancel(); + return; } + AsyncDataProvider.getInstance().getStorageDomainsWithAttachedStoragePoolGuid( + new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object target, Object returnValue) { + DataCenterStorageListModel dataCenterStorageListModel = (DataCenterStorageListModel) target; + List<StorageDomainStatic> attachedStorageDomains = (List<StorageDomainStatic>) returnValue; + if (!attachedStorageDomains.isEmpty()) { + ConfirmationModel model = new ConfirmationModel(); + dataCenterStorageListModel.setWindow(null); + dataCenterStorageListModel.setWindow(model); + + List<String> stoageDomainNames = new ArrayList<String>(); + for (StorageDomainStatic domain : attachedStorageDomains) { + stoageDomainNames.add(domain.getStorageName()); + } + model.setItems(stoageDomainNames); + + model.setTitle(ConstantsManager.getInstance() + .getConstants() + .storageDomainsAttachedToDataCenterWarningTitle()); + model.setMessage(ConstantsManager.getInstance() + .getConstants() + .storageDomainsAttachedToDataCenterWarningMessage()); + + model.setHelpTag(HelpTag.attach_storage_domain_confirmation); + model.setHashName("attach_storage_domain_confirmation"); //$NON-NLS-1$ + + model.getLatch().setIsAvailable(true); + model.getLatch().setIsChangable(true); + + UICommand onApprove = new UICommand("OnAttachApprove", dataCenterStorageListModel); //$NON-NLS-1$ + onApprove.setTitle(ConstantsManager.getInstance().getConstants().ok()); + onApprove.setIsDefault(true); + model.getCommands().add(onApprove); + + UICommand cancel = new UICommand("Cancel", dataCenterStorageListModel); //$NON-NLS-1$ + cancel.setTitle(ConstantsManager.getInstance().getConstants().cancel()); + cancel.setIsCancel(true); + model.getCommands().add(cancel); + } else { + executeAttachStorageDomains(); + } + } + }), getEntity(), selectedDataStorageDomains); + } + + public void onAttachApprove() { + ConfirmationModel model = (ConfirmationModel) getWindow(); + if (!model.validate()) { + return; + } + + executeAttachStorageDomains(); + } + + public void executeAttachStorageDomains() { + ArrayList<VdcActionParametersBase> pb = new ArrayList<VdcActionParametersBase>(); + for (StorageDomain storageDomain : selectedStorageDomains) { + pb.add(new AttachStorageDomainToPoolParameters(storageDomain.getId(), getEntity().getId())); + } + Frontend.getInstance().runMultipleAction(VdcActionType.AttachStorageDomainToPool, pb); cancel(); } @@ -796,6 +858,10 @@ { onAttach(); } + else if ("OnAttachApprove".equals(command.getName())) //$NON-NLS-1$ + { + onAttachApprove(); + } else if ("OnDetach".equals(command.getName())) //$NON-NLS-1$ { onDetach(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java index d82f504..d06bb0c 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java @@ -178,13 +178,13 @@ final Provider<RemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider, final Provider<DataCenterListModel> mainModelProvider, final Provider<DataCenterStorageListModel> modelProvider) { - SearchableDetailTabModelProvider<StorageDomain, DataCenterListModel, DataCenterStorageListModel> result = new SearchableDetailTabModelProvider<StorageDomain, DataCenterListModel, DataCenterStorageListModel>( eventBus, defaultConfirmPopupProvider) { @Override public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(DataCenterStorageListModel source, - UICommand lastExecutedCommand, Model windowModel) { + UICommand lastExecutedCommand, + Model windowModel) { DataCenterStorageListModel model = getModel(); if (lastExecutedCommand == model.getAttachStorageCommand()) { @@ -200,7 +200,8 @@ @Override public AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?> getConfirmModelPopup(DataCenterStorageListModel source, UICommand lastExecutedCommand) { - if (lastExecutedCommand == getModel().getDetachCommand()) { + if (lastExecutedCommand == getModel().getDetachCommand() || + lastExecutedCommand.getName().equals("OnAttach")) { //$NON-NLS-1$ ) { return removeConfirmPopupProvider.get(); } else { return super.getConfirmModelPopup(source, lastExecutedCommand); -- To view, visit http://gerrit.ovirt.org/36452 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3086670488aba8d0df12223dd61b3830f6764bd9 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Maor Lipchuk <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
