Tomas Jelinek has uploaded a new change for review. Change subject: webadmin: new instance type dialog + instance type list ......................................................................
webadmin: new instance type dialog + instance type list Change-Id: I09722a0c3879268a6c683d88630440b6f8d8f794 Signed-off-by: Tomas Jelinek <tjeli...@redhat.com> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/tab/DialogTabPanel.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/instancetypes/InstanceTypesPopupWidget.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/clusters/ClusterHostListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewInstanceTypeModelBehavior.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/instancetypes/InstanceTypesNewPopupPresenterWidget.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/instancetypes/InstanceTypesNewPopupView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.ui.xml A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/InstanceTypeModelProvider.java 20 files changed, 537 insertions(+), 4 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/21/21821/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/tab/DialogTabPanel.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/tab/DialogTabPanel.java index 3641f29..9717608 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/tab/DialogTabPanel.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/tab/DialogTabPanel.java @@ -99,4 +99,13 @@ public DialogTab getActiveTab() { return activeTab; } + + public void setHeaderVisible(boolean visible) { + if (visible) { + tabHeaderContainer.getElement().getStyle().setDisplay(Display.BLOCK); + } else { + tabHeaderContainer.getElement().getStyle().setDisplay(Display.NONE); + } + + } } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java index d20fe53..169830f 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java @@ -598,7 +598,11 @@ @UiField @Ignore - ButtonBase refreshButton; + public ButtonBase refreshButton; + + @Ignore + @UiField + public DialogTabPanel wholePanel; private UnitVmModel unitVmModel; @@ -681,6 +685,8 @@ }, ""); //$NON-NLS-1$ driver.initialize(this); + + postInit(); } private void initTextBoxEditors() { @@ -1445,6 +1451,10 @@ return nextTabIndex; } + protected void postInit() { + + } + @Override protected PopupWidgetConfigMap createWidgetConfiguration() { return super.createWidgetConfiguration(). diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml index d929827..d95e96a 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml @@ -312,7 +312,7 @@ } </ui:style> - <t:DialogTabPanel width="100%" height="100%"> + <t:DialogTabPanel width="100%" height="100%" ui:field="wholePanel"> <t:header> <g:FlowPanel addStyleNames="{style.headerPanel}"> <e:ListModelTypeAheadListBoxEditor ui:field="dataCenterWithClusterEditor" /> diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/instancetypes/InstanceTypesPopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/instancetypes/InstanceTypesPopupWidget.java new file mode 100644 index 0000000..bab2de8 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/instancetypes/InstanceTypesPopupWidget.java @@ -0,0 +1,62 @@ +package org.ovirt.engine.ui.common.widget.uicommon.popup.instancetypes; + +import com.google.gwt.core.client.GWT; +import org.ovirt.engine.ui.common.CommonApplicationConstants; +import org.ovirt.engine.ui.common.CommonApplicationMessages; +import org.ovirt.engine.ui.common.CommonApplicationResources; +import org.ovirt.engine.ui.common.CommonApplicationTemplates; +import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; +import org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractVmPopupWidget; +import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfigMap; +import static org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.hiddenField; + +public class InstanceTypesPopupWidget extends AbstractVmPopupWidget { + + interface ViewIdHandler extends ElementIdHandler<InstanceTypesPopupWidget> { + ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); + } + + public InstanceTypesPopupWidget(CommonApplicationConstants constants, + CommonApplicationResources resources, + CommonApplicationMessages messages, + CommonApplicationTemplates applicationTemplates) { + super(constants, resources, messages, applicationTemplates); + } + + @Override + protected void generateIds() { + ViewIdHandler.idHandler.generateAndSetIds(this); + } + + @Override + protected void postInit() { + super.postInit(); + + wholePanel.setHeaderVisible(false); + } + + @Override + protected PopupWidgetConfigMap createWidgetConfiguration() { + return super.createWidgetConfiguration(). + putAll(poolSpecificFields(), hiddenField()). + putOne(logicalNetworksEditorPanel, hiddenField()). + putOne(isDeleteProtectedEditor, hiddenField()). + putOne(isStatelessEditor, hiddenField()). + putOne(isRunAndPauseEditor, hiddenField()). + putOne(commentEditor, hiddenField()). + putOne(vmTypeEditor, hiddenField()). + putOne(oSTypeEditor, hiddenField()). + putOne(templateEditor, hiddenField()). + putOne(dataCenterWithClusterEditor, hiddenField()). + putOne(initialRunTab, hiddenField()). + putOne(expander, hiddenField()). + putOne(allowConsoleReconnectEditor, hiddenField()). + putOne(highAvailabilityTab, hiddenField()). + putOne(cdAttachedEditor, hiddenField()). + putOne(customPropertiesTab, hiddenField()). + putOne(isSingleQxlEnabledEditor, hiddenField()). + putOne(isSoundcardEnabledEditor, hiddenField()). + putOne(cdImageEditor, hiddenField()). + putOne(refreshButton, hiddenField()); + } +} 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 45d2bd1..64e1223 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 @@ -22,6 +22,7 @@ import org.ovirt.engine.ui.uicommonweb.models.bookmarks.BookmarkListModel; import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.SystemPermissionListModel; +import org.ovirt.engine.ui.uicommonweb.models.configure.instancetypes.InstanceTypeListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.roles_ui.RoleListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.ClusterPolicyListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterListModel; @@ -80,6 +81,7 @@ private RoleListModel roleListModel; private SystemPermissionListModel systemPermissionListModel; private ClusterPolicyListModel clusterPolicyListModel; + private InstanceTypeListModel instanceTypeListModel; // NOTE: when adding a new ListModel here, be sure to add it to the list in initItems() private SearchableListModel dataCenterList; @@ -200,6 +202,7 @@ roleListModel = new RoleListModel(); systemPermissionListModel = new SystemPermissionListModel(); clusterPolicyListModel = new ClusterPolicyListModel(); + instanceTypeListModel = new InstanceTypeListModel(); // Activate the default list model. setSelectedItem(getDefaultItem()); @@ -528,6 +531,7 @@ getRoleListModel().stopRefresh(); getSystemPermissionListModel().stopRefresh(); getClusterPolicyListModel().stopRefresh(); + getInstanceTypeListModel().stopRefresh(); if (Frontend.getInstance().getIsUserLoggedIn()) { @@ -1061,6 +1065,10 @@ return clusterPolicyListModel; } + public InstanceTypeListModel getInstanceTypeListModel() { + return instanceTypeListModel; + } + public Event getSignedOutEvent() { return privateSignedOutEvent; diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterHostListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterHostListModel.java index f1769da..b3ee0b1 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterHostListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterHostListModel.java @@ -88,6 +88,9 @@ } private void updateActionAvailability() { + if (getEntity() == null) { + return; + } if (getEntity().getcompatibility_version().compareTo(Version.v3_3) >= 0) { getUpdateMomPolicyCommand().setIsAvailable(true); ArrayList<VDS> items = diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java new file mode 100644 index 0000000..f9090b0 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java @@ -0,0 +1,126 @@ +package org.ovirt.engine.ui.uicommonweb.models.configure.instancetypes; + +import org.ovirt.engine.core.common.action.AddVmTemplateParameters; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.action.VdcReturnValueBase; +import org.ovirt.engine.core.common.businessentities.InstanceType; +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VmEntityType; +import org.ovirt.engine.core.common.businessentities.VmTemplate; +import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.queries.SearchParameters; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.compat.StringHelper; +import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.NewInstanceTypeModelBehavior; +import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmBasedWidgetSwitchModeCommand; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel; +import org.ovirt.engine.ui.uicompat.ConstantsManager; +import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; +import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; + +public class InstanceTypeListModel extends ListWithDetailsModel { + + private UICommand newInstanceTypeCommand; + + public UICommand getNewInstanceTypeCommand() { + return newInstanceTypeCommand; + } + + public InstanceTypeListModel() { + setDefaultSearchString("Instancetypes:"); //$NON-NLS-1$ + setSearchString(getDefaultSearchString()); + this.newInstanceTypeCommand = new UICommand("NewInstanceType", this);//$NON-NLS-1$ + setSearchPageSize(1000); + } + + @Override + protected void syncSearch() { + SearchParameters params = new SearchParameters(getSearchString(), SearchType.InstanceType, isCaseSensitiveSearch()); + params.setMaxCount(getSearchPageSize()); + super.syncSearch(VdcQueryType.Search, params); + } + + private void newInstanceType() { + if (getWindow() != null) { + return; + } + + UnitVmModel model = new UnitVmModel(new NewInstanceTypeModelBehavior()); + setWindow(model); + + model.setTitle(ConstantsManager.getInstance().getConstants().newInstanceTypeTitle()); + model.setHashName("new_instance_type"); //$NON-NLS-1$ + model.setIsNew(true); + + model.initialize(null); + + VmBasedWidgetSwitchModeCommand switchModeCommand = new VmBasedWidgetSwitchModeCommand(); + switchModeCommand.init(model); + model.getCommands().add(switchModeCommand); + + UICommand newTemplate = new UICommand("OnNewInstanceType", this); //$NON-NLS-1$ + newTemplate.setTitle(ConstantsManager.getInstance().getConstants().ok()); + newTemplate.setIsDefault(true); + model.getCommands().add(newTemplate); + + UICommand cancel = new UICommand("Cancel", this); //$NON-NLS-1$ + cancel.setTitle(ConstantsManager.getInstance().getConstants().cancel()); + cancel.setIsCancel(true); + model.getCommands().add(cancel); + } + + private void onNewInstanceType() { + UnitVmModel model = (UnitVmModel) getWindow(); + VmTemplate instanceType = new VmTemplate(); + instanceType.setTemplateType(VmEntityType.INSTANCE_TYPE); + instanceType.setName(model.getName().getEntity()); + + AddVmTemplateParameters addInstanceTypeParameters = + new AddVmTemplateParameters(); + addInstanceTypeParameters.setTemplateType(VmEntityType.INSTANCE_TYPE); + addInstanceTypeParameters.setName(model.getName().getEntity()); + + getWindow().startProgress(null); + Frontend.RunAction(VdcActionType.AddVmTemplate, addInstanceTypeParameters, + new IFrontendActionAsyncCallback() { + @Override + public void executed(FrontendActionAsyncResult result) { + getWindow().stopProgress(); + VdcReturnValueBase returnValueBase = result.getReturnValue(); + if (returnValueBase != null && returnValueBase.getSucceeded()) { + cancel(); + } + + } + }, this); + + } + + private void cancel() { + setWindow(null); + } + + @Override + protected String getListName() { + return "InstanceTypeListModel"; //$NON-NLS-1$ + } + + @Override + public void executeCommand(UICommand command) { + super.executeCommand(command); + + if (command == getNewInstanceTypeCommand()) { + newInstanceType(); + } else if (StringHelper.stringsEqual(command.getName(), "Cancel")) { //$NON-NLS-1$ + cancel(); + } else if (StringHelper.stringsEqual(command.getName(), "OnNewInstanceType")) { //$NON-NLS-1$ + onNewInstanceType(); + } + } + + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewInstanceTypeModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewInstanceTypeModelBehavior.java new file mode 100644 index 0000000..29a56e0 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewInstanceTypeModelBehavior.java @@ -0,0 +1,25 @@ +package org.ovirt.engine.ui.uicommonweb.models.vms; + +public class NewInstanceTypeModelBehavior extends VmModelBehaviorBase<UnitVmModel> { + + @Override + public void template_SelectedItemChanged() { + + } + + @Override + public void postDataCenterWithClusterSelectedItemChanged() { + } + + @Override + public void defaultHost_SelectedItemChanged() { + } + + @Override + public void provisioning_SelectedItemChanged() { + } + + @Override + public void updateMinAllocatedMemory() { + } +} 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 24c55d1..df384cd 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 @@ -629,6 +629,9 @@ @DefaultStringValue("New Template") String newTemplateTitle(); + @DefaultStringValue("New InstanceType") + String newInstanceTypeTitle(); + @DefaultStringValue("Migrate Virtual Machine(s)") String migrateVirtualMachinesTitle(); 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 b8680cf..1987569 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 @@ -3364,4 +3364,15 @@ @DefaultStringValue("External Policy Unit") String externalPolicyUnit(); + + // Instance Types + + @DefaultStringValue("Instance Types") + String instanceTypes(); + + @DefaultStringValue("Name") + String instanceTypeName(); + + @DefaultStringValue("New") + String newInstanceType(); } 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 d5c2c85..a1ab9e3 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 @@ -25,6 +25,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.ManageGlusterSwiftPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.NewClusterNetworkPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.configure.ConfigurePopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.instancetypes.InstanceTypesNewPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.configure.RolePopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.datacenter.DataCenterForceRemovePopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.datacenter.DataCenterPopupPresenterWidget; @@ -235,6 +236,7 @@ import org.ovirt.engine.ui.webadmin.section.main.view.popup.cluster.ManageGlusterSwiftPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.cluster.NewClusterNetworkPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.configure.ConfigurePopupView; +import org.ovirt.engine.ui.webadmin.section.main.view.popup.instancetypes.InstanceTypesNewPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.configure.RolePopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter.DataCenterForceRemovePopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter.DataCenterPopupView; @@ -1217,6 +1219,11 @@ TemplateNewPresenterWidget.ViewDef.class, TemplateNewPopupView.class); + // Instance Types + bindPresenterWidget(InstanceTypesNewPopupPresenterWidget.class, + InstanceTypesNewPopupPresenterWidget.ViewDef.class, + InstanceTypesNewPopupView.class); + // Add/Edit Template's NIC bindPresenterWidget(TemplateInterfacePopupPresenterWidget.class, TemplateInterfacePopupPresenterWidget.ViewDef.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..4aa3ee7 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 @@ -26,6 +26,7 @@ import org.ovirt.engine.ui.webadmin.uicommon.model.ClusterPolicyModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.EventFirstRowModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.EventModelProvider; +import org.ovirt.engine.ui.webadmin.uicommon.model.InstanceTypeModelProvider; 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.SystemPermissionModelProvider; @@ -102,6 +103,8 @@ // ClusterPolicyClusterListModel bind(ClusterPolicyClusterModelProvider.class).asEagerSingleton(); + + bind(InstanceTypeModelProvider.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..347206d 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 @@ -5,6 +5,7 @@ import org.ovirt.engine.ui.uicommonweb.models.ApplicationModeHelper; import org.ovirt.engine.ui.webadmin.uicommon.model.ClusterPolicyClusterModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.ClusterPolicyModelProvider; +import org.ovirt.engine.ui.webadmin.uicommon.model.InstanceTypeModelProvider; 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.SystemPermissionModelProvider; @@ -26,6 +27,7 @@ private SystemPermissionModelProvider systemPermissionModelProvider; private ClusterPolicyModelProvider clusterPolicyModelProvider; private ClusterPolicyClusterModelProvider clusterPolicyClusterModelProvider; + private InstanceTypeModelProvider instanceTypeModelProvider; @Inject public ConfigurePopupPresenterWidget(EventBus eventBus, ViewDef view, @@ -33,13 +35,15 @@ RolePermissionModelProvider permissionModelProvider, SystemPermissionModelProvider systemPermissionModelProvider, ClusterPolicyModelProvider clusterPolicyModelProvider, - ClusterPolicyClusterModelProvider clusterPolicyClusterModelProvider) { + ClusterPolicyClusterModelProvider clusterPolicyClusterModelProvider, + InstanceTypeModelProvider instanceTypeModelProvider) { super(eventBus, view); this.roleModelProvider = roleModelProvider; this.permissionModelProvider = permissionModelProvider; this.systemPermissionModelProvider = systemPermissionModelProvider; this.clusterPolicyModelProvider = clusterPolicyModelProvider; this.clusterPolicyClusterModelProvider = clusterPolicyClusterModelProvider; + this.instanceTypeModelProvider = instanceTypeModelProvider; } @Override @@ -53,6 +57,7 @@ } else { getView().hideClusterPolicyTab(); } + instanceTypeModelProvider.getModel().search(); } @Override @@ -63,6 +68,7 @@ systemPermissionModelProvider.getModel().stopRefresh(); clusterPolicyModelProvider.getModel().stopRefresh(); clusterPolicyClusterModelProvider.getModel().stopRefresh(); + instanceTypeModelProvider.getModel().stopRefresh(); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/instancetypes/InstanceTypesNewPopupPresenterWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/instancetypes/InstanceTypesNewPopupPresenterWidget.java new file mode 100644 index 0000000..b68ebe4 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/instancetypes/InstanceTypesNewPopupPresenterWidget.java @@ -0,0 +1,17 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.instancetypes; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import org.ovirt.engine.ui.common.widget.popup.AbstractVmBasedPopupPresenterWidget; + +public class InstanceTypesNewPopupPresenterWidget extends AbstractVmBasedPopupPresenterWidget<InstanceTypesNewPopupPresenterWidget.ViewDef> { + + public interface ViewDef extends AbstractVmBasedPopupPresenterWidget.ViewDef { + + } + + @Inject + public InstanceTypesNewPopupPresenterWidget(EventBus eventBus, ViewDef 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..2391fd5 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 @@ -7,6 +7,7 @@ import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.ApplicationResources; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.configure.ConfigurePopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.view.popup.instancetypes.InstanceTypesView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.scheduling.ClusterPolicyView; import com.google.gwt.core.client.GWT; @@ -41,6 +42,9 @@ DialogTab systemPermissionsTab; @UiField + DialogTab instanceTypesTab; + + @UiField SimplePanel rolesTabPanel; @UiField @@ -49,6 +53,9 @@ @UiField SimplePanel systemPermissionTabPanel; + @UiField + SimplePanel instanceTypesTabPanel; + @Inject public ConfigurePopupView( EventBus eventBus, @@ -56,16 +63,24 @@ ApplicationConstants constants, RoleView roleView, ClusterPolicyView clusterPolicyView, - SystemPermissionView systemPermissionView) { + SystemPermissionView systemPermissionView, + InstanceTypesView instanceTypesView + ) { super(eventBus, resources); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); localize(constants); + roleView.setWidth("100%"); //$NON-NLS-1$ rolesTabPanel.add(roleView); + clusterPolicyView.setWidth("100%"); //$NON-NLS-1$ clusterPoliciesTabPanel.add(clusterPolicyView); + systemPermissionTabPanel.setWidth("100%"); //$NON-NLS-1$ systemPermissionTabPanel.add(systemPermissionView); + + instanceTypesView.setWidth("100%"); //$NON-NLS-1$ + instanceTypesTabPanel.add(instanceTypesView); } void localize(ApplicationConstants constants) { @@ -75,6 +90,7 @@ rolesTab.setLabel(constants.configureRoleTabLabel()); clusterPoliciesTab.setLabel(constants.configureClusterPolicyTabLabel()); systemPermissionsTab.setLabel(constants.configureSystemPermissionTabLabel()); + instanceTypesTab.setLabel(constants.instanceTypes()); } @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 c8d53bf..a37382c 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 @@ -37,6 +37,13 @@ </t:content> </t:DialogTab> </t:tab> + <t:tab> + <t:DialogTab ui:field="instanceTypesTab"> + <t:content> + <g:SimplePanel addStyleNames="{style.panel}" ui:field="instanceTypesTabPanel" /> + </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/instancetypes/InstanceTypesNewPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesNewPopupView.java new file mode 100644 index 0000000..9bc0321 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesNewPopupView.java @@ -0,0 +1,26 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.popup.instancetypes; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import org.ovirt.engine.ui.common.CommonApplicationMessages; +import org.ovirt.engine.ui.common.CommonApplicationTemplates; +import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; +import org.ovirt.engine.ui.common.view.popup.AbstractVmPopupView; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationResources; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.instancetypes.InstanceTypesNewPopupPresenterWidget; +import org.ovirt.engine.ui.common.widget.uicommon.popup.instancetypes.InstanceTypesPopupWidget; + +public class InstanceTypesNewPopupView extends AbstractVmPopupView implements InstanceTypesNewPopupPresenterWidget.ViewDef { + + interface ViewIdHandler extends ElementIdHandler<InstanceTypesNewPopupView> { + ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); + } + + @Inject + public InstanceTypesNewPopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants, CommonApplicationMessages messages, CommonApplicationTemplates templates) { + super(eventBus, resources, new InstanceTypesPopupWidget(constants, resources, messages, templates), "710px", "570px"); //$NON-NLS-1$ //$NON-NLS-2$ + ViewIdHandler.idHandler.generateAndSetIds(this); + } +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.java new file mode 100644 index 0000000..91e4ba2 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.java @@ -0,0 +1,134 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.popup.instancetypes; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.cellview.client.CellTable.Resources; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.SimplePanel; +import com.google.gwt.user.client.ui.SplitLayoutPanel; +import com.google.gwt.view.client.SelectionChangeEvent; +import com.google.inject.Inject; +import org.ovirt.engine.core.common.businessentities.InstanceType; +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.common.widget.table.column.TextColumnWithTooltip; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.uicommon.model.InstanceTypeModelProvider; +import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition; + +public class InstanceTypesView extends Composite { + + interface ViewUiBinder extends UiBinder<FlowPanel, InstanceTypesView> { + ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); + } + + @UiField + SimplePanel instanceTypesTabContent; + + private SimpleActionTable<InstanceType> table; + private SimpleActionTable<InstanceType> detailTable; + private SplitLayoutPanel splitLayoutPanel; + + private final InstanceTypeModelProvider instanceTypeModelProvider; + + private final EventBus eventBus; + + private final ClientStorage clientStorage; + + @Inject + public InstanceTypesView(ApplicationConstants constants, + InstanceTypeModelProvider instanceTypeModelProvider, + EventBus eventBus, ClientStorage clientStorage) { + this.instanceTypeModelProvider = instanceTypeModelProvider; + this.eventBus = eventBus; + this.clientStorage = clientStorage; + + initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); + + initSplitLayoutPanel(); + + initMainTable(constants); + initSubtabTable(constants); + } + + private void initSplitLayoutPanel() { + splitLayoutPanel = new SplitLayoutPanel(); + splitLayoutPanel.setHeight("100%"); //$NON-NLS-1$ + splitLayoutPanel.setWidth("100%"); //$NON-NLS-1$ + instanceTypesTabContent.add(splitLayoutPanel); + } + + public void setSubTabVisibility(boolean visible) { + splitLayoutPanel.clear(); + if (visible) { + splitLayoutPanel.addSouth(detailTable, 150); + } + splitLayoutPanel.add(table); + } + + private void initMainTable(ApplicationConstants constants) { + table = new SimpleActionTable<InstanceType>(instanceTypeModelProvider, + getTableHeaderlessResources(), getTableResources(), eventBus, clientStorage); + + TextColumnWithTooltip<InstanceType> nameColumn = new TextColumnWithTooltip<InstanceType>() { + @Override + public String getValue(InstanceType object) { + return object.getName(); + } + }; + table.addColumn(nameColumn, constants.instanceTypeName(), "100px"); //$NON-NLS-1$ + + + table.addActionButton(new WebAdminButtonDefinition<InstanceType>(constants.newInstanceType()) { + @Override + protected UICommand resolveCommand() { + return instanceTypeModelProvider.getModel().getNewInstanceTypeCommand(); + } + }); + + splitLayoutPanel.add(table); + + table.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() { + + @Override + public void onSelectionChange(SelectionChangeEvent event) { + instanceTypeModelProvider.setSelectedItems(table.getSelectionModel().getSelectedList()); + if (table.getSelectionModel().getSelectedList().size() > 0) { + setSubTabVisibility(true); + } else { + setSubTabVisibility(false); + } + } + }); + + } + + private void initSubtabTable(ApplicationConstants constants) { + detailTable = new SimpleActionTable<InstanceType>(instanceTypeModelProvider, + getTableHeaderlessResources(), getTableResources(), eventBus, clientStorage); + + TextColumnWithTooltip<InstanceType> instanceTypeNameColumn = new TextColumnWithTooltip<InstanceType>() { + @Override + public String getValue(InstanceType object) { + return object.getName(); + } + }; + + detailTable.addColumn(instanceTypeNameColumn, constants.instanceTypeName()); + } + + protected Resources getTableHeaderlessResources() { + return GWT.create(MainTableHeaderlessResources.class); + } + + protected Resources getTableResources() { + return GWT.create(MainTableResources.class); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.ui.xml new file mode 100644 index 0000000..a32d12a --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.ui.xml @@ -0,0 +1,10 @@ +<?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"> + <ui:with field='resources' type='org.ovirt.engine.ui.webadmin.ApplicationResources' /> + + <g:FlowPanel> + <g:SimplePanel ui:field="instanceTypesTabContent" height="495px" /> + </g:FlowPanel> + +</ui:UiBinder> diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/InstanceTypeModelProvider.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/InstanceTypeModelProvider.java new file mode 100644 index 0000000..5a8a509 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/InstanceTypeModelProvider.java @@ -0,0 +1,50 @@ +package org.ovirt.engine.ui.webadmin.uicommon.model; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import com.google.inject.Provider; +import org.ovirt.engine.core.common.businessentities.InstanceType; +import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; +import org.ovirt.engine.ui.common.presenter.popup.DefaultConfirmationPopupPresenterWidget; +import org.ovirt.engine.ui.common.uicommon.model.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.configure.instancetypes.InstanceTypeListModel; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.instancetypes.InstanceTypesNewPopupPresenterWidget; + +public class InstanceTypeModelProvider extends SearchableTabModelProvider<InstanceType, InstanceTypeListModel> { + + private final Provider<InstanceTypesNewPopupPresenterWidget> instanceTypeNewPopupProvider; + + @Inject + public InstanceTypeModelProvider(EventBus eventBus, + final Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider, + final Provider<InstanceTypesNewPopupPresenterWidget> instanceTypeNewPopupProvider) { + super(eventBus, defaultConfirmPopupProvider); + this.instanceTypeNewPopupProvider = instanceTypeNewPopupProvider; + } + + @Override + public InstanceTypeListModel getModel() { + return getCommonModel().getInstanceTypeListModel(); + } + + @Override + public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(InstanceTypeListModel source, + UICommand lastExecutedCommand, Model windowModel) { + if (lastExecutedCommand == getModel().getNewInstanceTypeCommand()) { + return instanceTypeNewPopupProvider.get(); + } else { + return super.getModelPopup(source, lastExecutedCommand, windowModel); + } + } + + @Override + public AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?> getConfirmModelPopup(InstanceTypeListModel source, + UICommand lastExecutedCommand) { + return super.getConfirmModelPopup(source, lastExecutedCommand); + + } + +} -- To view, visit http://gerrit.ovirt.org/21821 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I09722a0c3879268a6c683d88630440b6f8d8f794 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <tjeli...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches