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

Reply via email to