Lior Vernia has uploaded a new change for review. Change subject: webadmin: Add button for MAC pool creation in DC dialog ......................................................................
webadmin: Add button for MAC pool creation in DC dialog This to shorten the process of adding a new MAC pool in case no existing one suffices. Change-Id: I585ab2d39bb5e0f88285d16e69eeae1c818391bc Signed-off-by: Lior Vernia <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/NewSharedMacPoolModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/datacenter/DataCenterPopupPresenterWidget.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/DataCenterPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/DataCenterPopupView.ui.xml 9 files changed, 132 insertions(+), 13 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/30/29230/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterListModel.java index 795be82..b4373da 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterListModel.java @@ -10,6 +10,7 @@ import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; +import org.ovirt.engine.core.common.businessentities.MacPool; import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum; import org.ovirt.engine.core.common.businessentities.StorageDomain; @@ -48,6 +49,8 @@ import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel; import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemType; import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel; +import org.ovirt.engine.ui.uicommonweb.models.macpool.NewSharedMacPoolModel; +import org.ovirt.engine.ui.uicommonweb.models.macpool.SharedMacPoolModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; @@ -135,6 +138,16 @@ privateRecoveryStorageCommand = value; } + private UICommand addMacPoolCommand; + + public UICommand getAddMacPoolCommand() { + return addMacPoolCommand; + } + + private void setAddMacPoolCommand(UICommand addMacPoolCommand) { + this.addMacPoolCommand = addMacPoolCommand; + } + protected Object[] getSelectedKeys() { if (getSelectedItems() == null) @@ -179,6 +192,7 @@ setNewCommand(new UICommand("New", this)); //$NON-NLS-1$ setEditCommand(new UICommand("Edit", this)); //$NON-NLS-1$ setRemoveCommand(new UICommand("Remove", this)); //$NON-NLS-1$ + setAddMacPoolCommand(new UICommand("AddMacPool", this)); //$NON-NLS-1$ UICommand tempVar = new UICommand("ForceRemove", this); //$NON-NLS-1$ tempVar.setIsExecutionAllowed(true); setForceRemoveCommand(tempVar); @@ -277,6 +291,7 @@ tempVar2.setTitle(ConstantsManager.getInstance().getConstants().cancel()); tempVar2.setIsCancel(true); model.getCommands().add(tempVar2); + model.setAddMacPoolCommand(addMacPoolCommand); } public void edit() @@ -337,6 +352,21 @@ tempVar2.setTitle(ConstantsManager.getInstance().getConstants().cancel()); tempVar2.setIsCancel(true); model.getCommands().add(tempVar2); + model.setAddMacPoolCommand(addMacPoolCommand); + } + + private void addMacPool(final DataCenterModel dcModel) { + SharedMacPoolModel macPoolModel = new NewSharedMacPoolModel(this) { + @Override + protected void postSave(Guid macPoolId) { + super.postSave(macPoolId); + ArrayList<MacPool> macPools = new ArrayList<MacPool>(dcModel.getMacPoolListModel().getItems()); + macPools.add(1, getEntity()); + dcModel.getMacPoolListModel().setItems(macPools); + dcModel.getMacPoolListModel().setSelectedItem(getEntity()); + } + }; + setConfirmWindow(macPoolModel); } public void remove() @@ -967,6 +997,15 @@ } } + @Override + public void executeCommand(UICommand command, Object... parameters) { + super.executeCommand(command, parameters); + + if (command == getAddMacPoolCommand()) { + addMacPool((DataCenterModel) parameters[0]); + } + } + private SystemTreeItemModel systemTreeSelectedItem; @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterModel.java index 7aaf3a7..1f5020f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterModel.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; import org.ovirt.engine.core.common.businessentities.MacPool; @@ -18,6 +19,7 @@ import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.Linq; +import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; @@ -184,6 +186,16 @@ this.macPoolModel = macPoolModel; } + private UICommand addMacPoolCommand; + + public UICommand getAddMacPoolCommand() { + return addMacPoolCommand; + } + + public void setAddMacPoolCommand(UICommand addMacPoolCommand) { + this.addMacPoolCommand = addMacPoolCommand; + } + public DataCenterModel() { setName(new EntityModel<String>()); @@ -210,7 +222,9 @@ new AsyncQuery(new INewAsyncCallback() { @Override public void onSuccess(Object model, Object returnValue) { - getMacPoolListModel().setItems((Collection<MacPool>) ((VdcQueryReturnValue) returnValue).getReturnValue()); + ArrayList<MacPool> allMacPools = new ArrayList<MacPool>((Collection<MacPool>) ((VdcQueryReturnValue) returnValue).getReturnValue()); + Collections.sort(allMacPools, new Linq.SharedMacPoolComparator()); + getMacPoolListModel().setItems(allMacPools); initSelectedMacPool(); stopProgress(); } @@ -330,10 +344,12 @@ StoragePool dc = getEntity(); if (allMacPools != null && dc != null) { Guid macPoolId = dc.getMacPoolId(); - for (MacPool macPool : allMacPools) { - if ((macPoolId == null) ? macPool.isDefaultPool() : macPoolId.equals(macPool.getId())) { - getMacPoolListModel().setSelectedItem(macPool); - break; + if (macPoolId != null) { + for (MacPool macPool : allMacPools) { + if (macPoolId.equals(macPool.getId())) { + getMacPoolListModel().setSelectedItem(macPool); + break; + } } } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/NewSharedMacPoolModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/NewSharedMacPoolModel.java new file mode 100644 index 0000000..eb58318 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/NewSharedMacPoolModel.java @@ -0,0 +1,24 @@ +package org.ovirt.engine.ui.uicommonweb.models.macpool; + +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.ui.uicommonweb.help.HelpTag; +import org.ovirt.engine.ui.uicommonweb.models.Model; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +public class NewSharedMacPoolModel extends SharedMacPoolModel { + + public NewSharedMacPoolModel(Model sourceModel) { + super(sourceModel, VdcActionType.AddMacPool); + sourceModel.setTitle(ConstantsManager.getInstance().getConstants().newSharedMacPoolTitle()); + sourceModel.setHashName("new_shared_mac_pool"); //$NON-NLS-1$ + sourceModel.setHelpTag(HelpTag.new_shared_mac_pool); + } + + @Override + protected void postSave(Guid macPoolId) { + super.postSave(macPoolId); + getEntity().setId(macPoolId); + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolListModel.java index 479b8c8..0e68fae 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolListModel.java @@ -80,10 +80,7 @@ } private void newMacPool() { - SharedMacPoolModel model = new SharedMacPoolModel(this, VdcActionType.AddMacPool); - model.setTitle(ConstantsManager.getInstance().getConstants().newSharedMacPoolTitle()); - model.setHashName("new_shared_mac_pool"); //$NON-NLS-1$ - model.setHelpTag(HelpTag.new_shared_mac_pool); + SharedMacPoolModel model = new NewSharedMacPoolModel(this); setWindow(model); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolModel.java index d47b0f06..509fdd6 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolModel.java @@ -3,6 +3,7 @@ import org.ovirt.engine.core.common.action.MacPoolParameter; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.MacPool; +import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; @@ -85,12 +86,16 @@ public void executed(FrontendActionAsyncResult result) { stopProgress(); if (result.getReturnValue() != null && result.getReturnValue().getSucceeded()) { - cancel(); + postSave((Guid) result.getReturnValue().getActionReturnValue()); } } }); } + protected void postSave(Guid macPoolId) { + cancel(); + } + @Override public void executeCommand(UICommand command) { super.executeCommand(command); 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 5b5c3d3..c1463cb 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 @@ -44,6 +44,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.datacenter.RecoveryStoragePopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.event.EventPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.guide.GuidePopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.macpool.SharedMacPoolPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.quota.QuotaPopupPresenterWidget; import com.google.gwt.event.shared.EventBus; @@ -65,7 +66,8 @@ final Provider<RemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider, final Provider<RecoveryStoragePopupPresenterWidget> recoveryStorageConfirmPopupProvider, final Provider<ReportPresenterWidget> reportWindowProvider, - final Provider<DataCenterForceRemovePopupPresenterWidget> forceRemovePopupProvider) { + final Provider<DataCenterForceRemovePopupPresenterWidget> forceRemovePopupProvider, + final Provider<SharedMacPoolPopupPresenterWidget> macPoolPopupProvider) { return new MainTabModelProvider<StoragePool, DataCenterListModel>(eventBus, defaultConfirmPopupProvider, DataCenterListModel.class) { @Override public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(DataCenterListModel source, @@ -75,6 +77,8 @@ return popupProvider.get(); } else if (lastExecutedCommand == getModel().getGuideCommand()) { return guidePopupProvider.get(); + } else if (lastExecutedCommand == getModel().getAddMacPoolCommand()) { + return macPoolPopupProvider.get(); } else { return super.getModelPopup(source, lastExecutedCommand, windowModel); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/datacenter/DataCenterPopupPresenterWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/datacenter/DataCenterPopupPresenterWidget.java index b259541..8460e57 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/datacenter/DataCenterPopupPresenterWidget.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/datacenter/DataCenterPopupPresenterWidget.java @@ -1,12 +1,15 @@ package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.datacenter; import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; +import org.ovirt.engine.ui.common.widget.UiCommandButton; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterModel; import org.ovirt.engine.ui.uicommonweb.models.macpool.MacPoolModel; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventArgs; import org.ovirt.engine.ui.uicompat.IEventListener; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; @@ -14,6 +17,7 @@ public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDef<DataCenterModel> { void updateMacPool(MacPoolModel macPoolModel); + UiCommandButton getMacPoolButton(); } @Inject @@ -31,6 +35,15 @@ getView().updateMacPool(model.getMacPoolModel()); } }); + + getView().getMacPoolButton().setCommand(model.getAddMacPoolCommand()); + getView().getMacPoolButton().addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + getView().getMacPoolButton().getCommand().execute(model); + } + }); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/DataCenterPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/DataCenterPopupView.java index 5ffc435..0b95f9b 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/DataCenterPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/DataCenterPopupView.java @@ -6,6 +6,7 @@ import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.idhandler.WithElementId; import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView; +import org.ovirt.engine.ui.common.widget.UiCommandButton; import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel; import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor; @@ -81,6 +82,9 @@ MacPoolWidget macPoolWidget; @UiField + UiCommandButton addMacPoolButton; + + @UiField Style style; private final Driver driver = GWT.create(Driver.class); @@ -147,6 +151,11 @@ macPoolWidget.edit(macPoolModel); } + @Override + public UiCommandButton getMacPoolButton() { + return addMacPoolButton; + } + public void addContentStyleName(String styleName) { this.asWidget().addContentStyleName(styleName); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/DataCenterPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/DataCenterPopupView.ui.xml index c5273bf..c6221ea 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/DataCenterPopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/DataCenterPopupView.ui.xml @@ -4,12 +4,21 @@ xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic" xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.dialog.tab" - xmlns:m="urn:import:org.ovirt.engine.ui.webadmin.section.main.view.popup.macpool"> + xmlns:m="urn:import:org.ovirt.engine.ui.webadmin.section.main.view.popup.macpool" xmlns:c="urn:import:org.ovirt.engine.ui.common.widget"> <ui:with field='constants' type='org.ovirt.engine.ui.webadmin.ApplicationConstants'/> <ui:style type="org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter.DataCenterPopupView.Style"> .contentStyle { + } + + .inlineWidget { + display: inline-block; + float: left; + } + + .indentedButton { + margin-left: 20px; } </ui:style> @@ -34,7 +43,10 @@ <t:DialogTab label="{constants.dataCenterMacPoolTab}"> <t:content> <g:FlowPanel> - <e:ListModelListBoxEditor ui:field="macPoolListEditor" /> + <g:FlowPanel> + <e:ListModelListBoxEditor ui:field="macPoolListEditor" addStyleNames="{style.inlineWidget}" /> + <c:UiCommandButton ui:field="addMacPoolButton" addStyleNames="{style.inlineWidget} {style.indentedButton}" /> + </g:FlowPanel> <m:MacPoolWidget ui:field="macPoolWidget" /> </g:FlowPanel> </t:content> -- To view, visit http://gerrit.ovirt.org/29230 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I585ab2d39bb5e0f88285d16e69eeae1c818391bc Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
