Lior Vernia has uploaded a new change for review. Change subject: webadmin: Added shared MAC pools to configure dialog ......................................................................
webadmin: Added shared MAC pools to configure dialog Added a left tab in the dialog, which is populated with shared MAC pools configured in the system. Shared pools may be added, edited and removed. Change-Id: Idabfa4e2abd3c9f0b4af0d28f00a27aa92a6552f Signed-off-by: Lior Vernia <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/MacPoolModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/configure/ConfigurePopupPresenterWidget.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/macpool/SharedMacPoolPopupPresenterWidget.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.ui.xml A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolPopupView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolPopupView.ui.xml A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/SharedMacPoolModelProvider.java 17 files changed, 455 insertions(+), 4 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/91/27791/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java index ff5a721..2aa27e8 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java @@ -254,6 +254,12 @@ new_data_center___guide_me("new_data_center___guide_me", HelpTagType.WEBADMIN), //$NON-NLS-1$ + new_shared_mac_pool("new_shared_mac_pool", HelpTagType.WEBADMIN, "Configure > MAC Address Pools > New"), //$NON-NLS-1$ $NON-NLS-2$ + + edit_shared_mac_pool("edit_shared_mac_pool", HelpTagType.WEBADMIN, "Configure > MAC Address Pools > Edit"), //$NON-NLS-1$ $NON-NLS-2$ + + remove_shared_mac_pools("remove_shared_mac_pools", HelpTagType.WEBADMIN, "Configure > MAC Address Pools > Remove"), //$NON-NLS-1$ $NON-NLS-2$ + new_domain("new_domain", HelpTagType.WEBADMIN, "Storage Tab > New Domain"), //$NON-NLS-1$ //$NON-NLS-2$ new_external_subnet("new_external_subnet", HelpTagType.WEBADMIN, "Networks main tab -> External Subnet sub tab -> New"), //$NON-NLS-1$ //$NON-NLS-2$ diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java index 38c6952..95ee3bf 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java @@ -32,6 +32,7 @@ import org.ovirt.engine.ui.uicommonweb.models.events.EventListModel; import org.ovirt.engine.ui.uicommonweb.models.events.TaskListModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostListModel; +import org.ovirt.engine.ui.uicommonweb.models.macpool.SharedMacPoolListModel; import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkListModel; import org.ovirt.engine.ui.uicommonweb.models.pools.PoolListModel; import org.ovirt.engine.ui.uicommonweb.models.profiles.VnicProfileListModel; @@ -82,6 +83,7 @@ private RoleListModel roleListModel; private SystemPermissionListModel systemPermissionListModel; private ClusterPolicyListModel clusterPolicyListModel; + private SharedMacPoolListModel sharedMacPoolListModel; // NOTE: when adding a new ListModel here, be sure to add it to the list in initItems() private SearchableListModel dataCenterList; @@ -201,6 +203,7 @@ roleListModel = new RoleListModel(); systemPermissionListModel = new SystemPermissionListModel(); clusterPolicyListModel = new ClusterPolicyListModel(); + sharedMacPoolListModel = new SharedMacPoolListModel(); // Activate the default list model. setSelectedItem(getDefaultItem()); @@ -557,7 +560,7 @@ model.setTitle(ConstantsManager.getInstance().getConstants().ConfigureTitle()); model.setHelpTag(HelpTag.configure); model.setHashName("configure"); //$NON-NLS-1$ - model.setEntity(new Model[] { roleListModel, systemPermissionListModel, clusterPolicyListModel }); + model.setEntity(new Model[] { roleListModel, systemPermissionListModel, clusterPolicyListModel, sharedMacPoolListModel }); UICommand tempVar = new UICommand("Cancel", this); //$NON-NLS-1$ tempVar.setTitle(ConstantsManager.getInstance().getConstants().close()); @@ -1061,6 +1064,10 @@ return clusterPolicyListModel; } + public SharedMacPoolListModel getSharedMacPoolListModel() { + return sharedMacPoolListModel; + } + public Event getSignedOutEvent() { return privateSignedOutEvent; diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/MacPoolModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/MacPoolModel.java index e217014..1b828cb 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/MacPoolModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/MacPoolModel.java @@ -37,7 +37,7 @@ setEntity(new MacPool()); } - private void init() { + protected void init() { allowDuplicates.setEntity(getEntity().isAllowDuplicateMacAddresses()); List<MacRangeModel> rangeModels = new ArrayList<MacRangeModel>(); for (MacRange range : getEntity().getRanges()) { 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 new file mode 100644 index 0000000..92d933f --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolListModel.java @@ -0,0 +1,125 @@ +package org.ovirt.engine.ui.uicommonweb.models.macpool; + +import java.util.ArrayList; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.MacPool; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.help.HelpTag; +import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; +import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +public class SharedMacPoolListModel extends ListWithDetailsModel { + + private static final String CMD_REMOVE = "OnRemove"; //$NON-NLS-1$ + private static final String CMD_CANCEL = "Cancel"; //$NON-NLS-1$ + + private UICommand newCommand; + private UICommand editCommand; + private UICommand removeCommand; + + public UICommand getNewCommand() { + return newCommand; + } + + public UICommand getEditCommand() { + return editCommand; + } + + public UICommand getRemoveCommand() { + return removeCommand; + } + + public SharedMacPoolListModel() { + newCommand = new UICommand("New", this); + editCommand = new UICommand("Edit", this); + removeCommand = new UICommand("Remove", this); + } + + @Override + protected String getListName() { + return "SharedMacPoolListModel"; //$NON-NLS-1$ + } + + private void updateActionAvailability() { + getEditCommand().setIsExecutionAllowed(getSelectedItems() != null && getSelectedItems().size() == 1); + + boolean removeAllowed = true; + if (getSelectedItems() == null || getSelectedItems().isEmpty()) { + removeAllowed = false; + } else { + for (MacPool macPool : (List<MacPool>) getSelectedItems()) { + // TODO: add check if macPool is locked, if so set to false + } + } + getRemoveCommand().setIsExecutionAllowed(removeAllowed); + } + + private void newMacPool() { + SharedMacPoolModel model = new SharedMacPoolModel(this, ); + model.setTitle(ConstantsManager.getInstance().getConstants().newSharedMacPoolTitle()); + model.setHashName("new_shared_mac_pool"); + model.setHelpTag(HelpTag.new_shared_mac_pool); + setWindow(model); + } + + private void editMacPool() { + SharedMacPoolModel model = new SharedMacPoolModel(this, ); + model.setTitle(ConstantsManager.getInstance().getConstants().editSharedMacPoolTitle()); + model.setHashName("edit_shared_mac_pool"); + model.setHelpTag(HelpTag.edit_shared_mac_pool); + setWindow(model); + model.setEntity((MacPool) getSelectedItem()); + } + + private void removeMacPools() { + ConfirmationModel model = new ConfirmationModel(); + model.setTitle(ConstantsManager.getInstance().getConstants().removeSharedMacPoolsTitle()); + model.setHashName("remove_shared_mac_pools"); + model.setHelpTag(HelpTag.remove_shared_mac_pools); + + UICommand tempVar = new UICommand(CMD_REMOVE, this); //$NON-NLS-1$ + tempVar.setTitle(ConstantsManager.getInstance().getConstants().ok()); + tempVar.setIsDefault(true); + model.getCommands().add(tempVar); + UICommand tempVar2 = new UICommand(CMD_CANCEL, this); //$NON-NLS-1$ + tempVar2.setTitle(ConstantsManager.getInstance().getConstants().cancel()); + tempVar2.setIsCancel(true); + model.getCommands().add(tempVar2); + + setConfirmWindow(model); + + List<String> macPoolNames = new ArrayList<String>(); + for (MacPool macPool : (List<MacPool>) getSelectedItems()) { + macPoolNames.add(macPool.getName()); + } + model.setItems(macPoolNames); + } + + private void cancel() { + setConfirmWindow(null); + } + + private void onRemove() { + // TODO: add backend command + } + + @Override + public void executeCommand(UICommand command) { + super.executeCommand(command); + + if (command == getNewCommand()) { + newMacPool(); + } else if (command == getEditCommand()) { + editMacPool(); + } else if (command == getRemoveCommand()) { + removeMacPools(); + } else if (CMD_REMOVE.equals(command.getName())) { + onRemove(); + } else if (CMD_CANCEL.equals(command.getName())) { + cancel(); + } + } + +} 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 new file mode 100644 index 0000000..ff2a966 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/SharedMacPoolModel.java @@ -0,0 +1,87 @@ +package org.ovirt.engine.ui.uicommonweb.models.macpool; + +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.MacPool; +import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.models.EntityModel; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; +import org.ovirt.engine.ui.uicommonweb.validation.IValidation; +import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +public class SharedMacPoolModel extends MacPoolModel { + + private static final String CMD_SAVE = "OnSave"; //$NON-NLS-1$ + private static final String CMD_CANCEL = "Cancel"; //$NON-NLS-1$ + + private final ListModel<?> sourceListModel; + private final VdcActionType actionType; + + private final EntityModel<String> name = new EntityModel<String>(); + private final EntityModel<String> description = new EntityModel<String>(); + + public EntityModel<String> getName() { + return name; + } + + public EntityModel<String> getDescription() { + return description; + } + + public SharedMacPoolModel(ListModel<?> sourceListModel, VdcActionType actionType) { + this.sourceListModel = sourceListModel; + this.actionType = actionType; + + UICommand tempVar = new UICommand("OnSave", this); //$NON-NLS-1$ + tempVar.setTitle(ConstantsManager.getInstance().getConstants().ok()); + tempVar.setIsDefault(true); + getCommands().add(tempVar); + UICommand tempVar2 = new UICommand("Cancel", this); //$NON-NLS-1$ + tempVar2.setTitle(ConstantsManager.getInstance().getConstants().cancel()); + tempVar2.setIsCancel(true); + getCommands().add(tempVar2); + } + + @Override + protected void init() { + super.init(); + getName().setEntity(getEntity().getName()); + getDescription().setEntity(getEntity().getComment()); + } + + @Override + public MacPool flush() { + getEntity().setName(getName().getEntity()); + getEntity().setComment(getDescription().getEntity()); + return super.flush(); + } + + @Override + public boolean validate() { + super.validate(); + getName().validateEntity(new IValidation[] { new NotEmptyValidation() }); + setIsValid(getIsValid() && getName().getIsValid()); + return getIsValid(); + } + + private void cancel() { + sourceListModel.setWindow(null); + } + + private void onSave() { + // TODO: run backend action + } + + @Override + public void executeCommand(UICommand command) { + super.executeCommand(command); + + if (CMD_SAVE.equals(command.getName())) { + onSave(); + } else if (CMD_CANCEL.equals(command.getName())) { + cancel(); + } + } + +} diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java index a13a222..7e0fda5 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java @@ -188,6 +188,15 @@ @DefaultStringValue("Change Data Center Compatibility Version") String changeDataCenterCompatibilityVersionTitle(); + @DefaultStringValue("New Shared MAC Address Pool") + String newSharedMacPoolTitle(); + + @DefaultStringValue("Edit Shared MAC Address Pool") + String editSharedMacPoolTitle(); + + @DefaultStringValue("Remove Shared MAC Address Pool(s)") + String removeSharedMacPoolsTitle(); + @DefaultStringValue("Logical Networks") String logicalNetworksTitle(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java index 87a3e6f..cc1eeb1 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java @@ -1090,6 +1090,9 @@ @DefaultStringValue("Description") String descriptionDc(); + @DefaultStringValue("MAC Address Pools") + String configureMacPoolsTabLabel(); + // Storage DC @DefaultStringValue("Domain Status in Data-Center") String domainStatusInDcStorageDc(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java index 7b63d22..dcb6e0f 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java @@ -62,6 +62,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.SetupNetworksBondPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.SetupNetworksInterfacePopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.SetupNetworksManagementPopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.macpool.SharedMacPoolPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.pool.PoolEditPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.pool.PoolNewPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.profile.VnicProfilePopupPresenterWidget; @@ -281,6 +282,7 @@ import org.ovirt.engine.ui.webadmin.section.main.view.popup.host.SetupNetworksBondPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.host.SetupNetworksInterfacePopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.host.SetupNetworksManagementPopupView; +import org.ovirt.engine.ui.webadmin.section.main.view.popup.macpool.SharedMacPoolPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.networkQoS.NetworkQoSPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.pool.PoolEditPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.pool.PoolNewPopupView; @@ -497,6 +499,9 @@ bindPresenterWidget(ManagePolicyUnitPopupPresenterWidget.class, ManagePolicyUnitPopupPresenterWidget.ViewDef.class, ManagePolicyUnitPopupView.class); + bindPresenterWidget(SharedMacPoolPopupPresenterWidget.class, + SharedMacPoolPopupPresenterWidget.ViewDef.class, + SharedMacPoolPopupView.class); bindPresenterWidget(AffinityGroupPopupPresenterWidget.class, AffinityGroupPopupPresenterWidget.ViewDef.class, AffinityGroupPopupView.class); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java index 71031d1..e6a78e7 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java @@ -28,6 +28,7 @@ import org.ovirt.engine.ui.webadmin.uicommon.model.EventModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.RoleModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.RolePermissionModelProvider; +import org.ovirt.engine.ui.webadmin.uicommon.model.SharedMacPoolModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.SystemPermissionModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.SystemTreeModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.TagModelProvider; @@ -102,6 +103,9 @@ // ClusterPolicyClusterListModel bind(ClusterPolicyClusterModelProvider.class).asEagerSingleton(); + + // SharedMacPoolListModel + bind(SharedMacPoolModelProvider.class).asEagerSingleton(); } void bindIntegration() { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/configure/ConfigurePopupPresenterWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/configure/ConfigurePopupPresenterWidget.java index 9e553fa..41f1b87 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/configure/ConfigurePopupPresenterWidget.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/configure/ConfigurePopupPresenterWidget.java @@ -7,6 +7,7 @@ import org.ovirt.engine.ui.webadmin.uicommon.model.ClusterPolicyModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.RoleModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.RolePermissionModelProvider; +import org.ovirt.engine.ui.webadmin.uicommon.model.SharedMacPoolModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.SystemPermissionModelProvider; import com.google.gwt.event.shared.EventBus; @@ -26,6 +27,7 @@ private SystemPermissionModelProvider systemPermissionModelProvider; private ClusterPolicyModelProvider clusterPolicyModelProvider; private ClusterPolicyClusterModelProvider clusterPolicyClusterModelProvider; + private SharedMacPoolModelProvider sharedMacPoolModelProvider; @Inject public ConfigurePopupPresenterWidget(EventBus eventBus, ViewDef view, @@ -33,13 +35,15 @@ RolePermissionModelProvider permissionModelProvider, SystemPermissionModelProvider systemPermissionModelProvider, ClusterPolicyModelProvider clusterPolicyModelProvider, - ClusterPolicyClusterModelProvider clusterPolicyClusterModelProvider) { + ClusterPolicyClusterModelProvider clusterPolicyClusterModelProvider, + SharedMacPoolModelProvider sharedMacPoolModelProvider) { super(eventBus, view); this.roleModelProvider = roleModelProvider; this.permissionModelProvider = permissionModelProvider; this.systemPermissionModelProvider = systemPermissionModelProvider; this.clusterPolicyModelProvider = clusterPolicyModelProvider; this.clusterPolicyClusterModelProvider = clusterPolicyClusterModelProvider; + this.sharedMacPoolModelProvider = sharedMacPoolModelProvider; } @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/macpool/SharedMacPoolPopupPresenterWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/macpool/SharedMacPoolPopupPresenterWidget.java new file mode 100644 index 0000000..62b377c --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/macpool/SharedMacPoolPopupPresenterWidget.java @@ -0,0 +1,17 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.macpool; + +import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; +import org.ovirt.engine.ui.uicommonweb.models.macpool.SharedMacPoolModel; +import org.ovirt.engine.ui.webadmin.section.main.view.popup.macpool.SharedMacPoolPopupView; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; + +public class SharedMacPoolPopupPresenterWidget extends AbstractModelBoundPopupPresenterWidget<SharedMacPoolModel, SharedMacPoolPopupView> { + + @Inject + public SharedMacPoolPopupPresenterWidget(EventBus eventBus, SharedMacPoolPopupView view) { + super(eventBus, view); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.java index e36b462..54e0628 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.java @@ -41,6 +41,9 @@ DialogTab systemPermissionsTab; @UiField + DialogTab macPoolsTab; + + @UiField SimplePanel rolesTabPanel; @UiField @@ -48,6 +51,9 @@ @UiField SimplePanel systemPermissionTabPanel; + + @UiField + SimplePanel macPoolsTabPanel; @Inject public ConfigurePopupView( @@ -75,6 +81,7 @@ rolesTab.setLabel(constants.configureRoleTabLabel()); clusterPoliciesTab.setLabel(constants.configureClusterPolicyTabLabel()); systemPermissionsTab.setLabel(constants.configureSystemPermissionTabLabel()); + macPoolsTab.setLabel(constants.configureMacPoolsTabLabel()); } @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.ui.xml index 00c7503c..8a83b03 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.ui.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" - xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.dialog.tab"> + xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.dialog.tab" xmlns:dc="urn:import:org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter"> <ui:style> .panel { @@ -37,6 +37,13 @@ </t:content> </t:DialogTab> </t:tab> + <t:tab> + <t:DialogTab ui:field="macPoolsTab"> + <t:content> + <dc:MacPoolWidget addStyleNames="{style.panel}" ui:field="macPoolsTabPanel" /> + </t:content> + </t:DialogTab> + </t:tab> </t:DialogTabPanel> </d:content> diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolPopupView.java new file mode 100644 index 0000000..bdeb50f --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolPopupView.java @@ -0,0 +1,59 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.popup.macpool; + +import org.ovirt.engine.ui.common.CommonApplicationResources; +import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView; +import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel; +import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor; +import org.ovirt.engine.ui.uicommonweb.models.macpool.SharedMacPoolModel; + +import com.google.gwt.core.shared.GWT; +import com.google.gwt.editor.client.SimpleBeanEditorDriver; +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.inject.Inject; + +public class SharedMacPoolPopupView extends AbstractModelBoundPopupView<SharedMacPoolModel> { + + interface Driver extends SimpleBeanEditorDriver<SharedMacPoolModel, SharedMacPoolPopupView> { + } + + private Driver driver = GWT.create(Driver.class); + + interface ViewUiBinder extends UiBinder<SimpleDialogPanel, SharedMacPoolPopupView> { + ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); + } + + @UiField + @Path(value = "name.entity") + StringEntityModelTextBoxEditor nameEditor; + + @UiField + @Path(value = "description.entity") + StringEntityModelTextBoxEditor descriptionEditor; + + @UiField + MacPoolWidget macPoolWidget; + + @Inject + public SharedMacPoolPopupView(EventBus eventBus, CommonApplicationResources resources) { + super(eventBus, resources); + initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); + driver.initialize(this); + } + + @Override + public void edit(SharedMacPoolModel model) { + driver.edit(model); + macPoolWidget.edit(model); + } + + @Override + public SharedMacPoolModel flush() { + macPoolWidget.flush(); + return driver.flush(); + } + + + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolPopupView.ui.xml new file mode 100644 index 0000000..64ec2d1 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolPopupView.ui.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> +<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"" xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic" xmlns:dc="urn:import:org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter"> + + <d:SimpleDialogPanel> + <d:content> + <g:FlowPanel> + <ge:StringEntityModelTextBoxEditor ui:field="nameEditor" /> + <ge:StringEntityModelTextBoxEditor ui:field="descriptionEditor" /> + <dc:MacPoolWidget ui:field="macPoolWidget" /> + </g:FlowPanel> + </d:content> + </d:SimpleDialogPanel> + +</ui:UiBinder> \ No newline at end of file diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolView.java new file mode 100644 index 0000000..38549ca --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolView.java @@ -0,0 +1,37 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.popup.macpool; + +import org.ovirt.engine.core.common.businessentities.MacPool; +import org.ovirt.engine.ui.common.MainTableHeaderlessResources; +import org.ovirt.engine.ui.common.MainTableResources; +import org.ovirt.engine.ui.common.system.ClientStorage; +import org.ovirt.engine.ui.common.widget.table.SimpleActionTable; +import org.ovirt.engine.ui.webadmin.uicommon.model.SharedMacPoolModelProvider; + +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.SplitLayoutPanel; +import com.google.inject.Inject; + +public class SharedMacPoolView extends Composite { + + private SplitLayoutPanel rootPanel; + private SimpleActionTable<MacPool> macPoolTable; + + @Inject + public SharedMacPoolView(SharedMacPoolModelProvider sharedMacPoolModelProvider, + EventBus eventBus, + ClientStorage clientStorage, + MainTableHeaderlessResources headerlessResources, + MainTableResources resources) { + macPoolTable = + new SimpleActionTable<MacPool>(sharedMacPoolModelProvider, + headerlessResources, + resources, + eventBus, + clientStorage); + rootPanel = new SplitLayoutPanel(); + rootPanel.add(macPoolTable); + initWidget(rootPanel); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/SharedMacPoolModelProvider.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/SharedMacPoolModelProvider.java new file mode 100644 index 0000000..9dceb1a --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/SharedMacPoolModelProvider.java @@ -0,0 +1,59 @@ +package org.ovirt.engine.ui.webadmin.uicommon.model; + +import org.ovirt.engine.core.common.businessentities.MacPool; +import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; +import org.ovirt.engine.ui.common.presenter.popup.DefaultConfirmationPopupPresenterWidget; +import org.ovirt.engine.ui.common.presenter.popup.RemoveConfirmationPopupPresenterWidget; +import org.ovirt.engine.ui.common.uicommon.model.SearchableTabModelProvider; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; +import org.ovirt.engine.ui.uicommonweb.models.Model; +import org.ovirt.engine.ui.uicommonweb.models.macpool.SharedMacPoolListModel; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.macpool.SharedMacPoolPopupPresenterWidget; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import com.google.inject.Provider; + +public class SharedMacPoolModelProvider extends SearchableTabModelProvider<MacPool, SharedMacPoolListModel> { + + private final Provider<SharedMacPoolPopupPresenterWidget> sharedMacPoolPopupProvider; + private final Provider<RemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider; + + @Inject + public SharedMacPoolModelProvider(EventBus eventBus, + Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider, + Provider<SharedMacPoolPopupPresenterWidget> sharedMacPoolPopupProvider, + Provider<RemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider) { + super(eventBus, defaultConfirmPopupProvider); + this.sharedMacPoolPopupProvider = sharedMacPoolPopupProvider; + this.removeConfirmPopupProvider = removeConfirmPopupProvider; + } + + @Override + public SharedMacPoolListModel getModel() { + return getCommonModel().getSharedMacPoolListModel(); + } + + @Override + public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(SharedMacPoolListModel source, + UICommand lastExecutedCommand, + Model windowModel) { + if (lastExecutedCommand == getModel().getNewCommand() || lastExecutedCommand == getModel().getEditCommand()) { + return sharedMacPoolPopupProvider.get(); + } else { + return super.getModelPopup(source, lastExecutedCommand, windowModel); + } + } + + @Override + public AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?> getConfirmModelPopup(SharedMacPoolListModel source, + UICommand lastExecutedCommand) { + if (lastExecutedCommand == getModel().getRemoveCommand()) { + return removeConfirmPopupProvider.get(); + } else { + return super.getConfirmModelPopup(source, lastExecutedCommand); + } + } + +} -- To view, visit http://gerrit.ovirt.org/27791 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idabfa4e2abd3c9f0b4af0d28f00a27aa92a6552f 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
