Daniel Erez has uploaded a new change for review. Change subject: webadmin: import entities from data SDs - sub-tabs ......................................................................
webadmin: import entities from data SDs - sub-tabs Added import VMs/Templates from data storage domains sub-tabs (under storage main-tab). Feature-Page: http://www.ovirt.org/Features/ImportStorageDomain#Import_VM.2FTemplate_sub-tab Change-Id: Id4f0a6af44c4e066cf4e0b876331f7c8ce78b79c Signed-off-by: Daniel Erez <[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/storage/StorageListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterEntityListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterTemplateListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterVmListModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.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/uicommon/StorageModule.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterTemplatePresenter.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterVmPresenter.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterTemplateView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterVmView.java 12 files changed, 503 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/04/28604/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 2c7f512c..72bf27a 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 @@ -200,6 +200,10 @@ images("images", HelpTagType.UNKNOWN), //$NON-NLS-1$ + register_vms("register_vms", HelpTagType.WEBADMIN), //$NON-NLS-1$ + + register_templates("register_templates", HelpTagType.WEBADMIN), //$NON-NLS-1$ + import_conflict("import_conflict", HelpTagType.WEBADMIN, "during import of a VM/Template: A dialog that warns that there is a name conflict between the import candidate and an existing VM/Template in the system"), //$NON-NLS-1$ //$NON-NLS-2$ import_images("import_images", HelpTagType.WEBADMIN, "[Glance integration] Storage main tab -> Images sub-tab (only for 'ISO' storage domain) -> 'Import Image(s)' dialog"), //$NON-NLS-1$ //$NON-NLS-2$ diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java index 58beb54..863c050 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java @@ -189,6 +189,8 @@ private EntityModel vmBackupModel; private EntityModel templateBackupModel; private ListModel dcListModel; + private ListModel vmRegisterListModel; + private ListModel templateRegisterListModel; private ListModel vmListModel; private ListModel templateListModel; private ListModel isoListModel; @@ -225,6 +227,12 @@ templateBackupModel = new TemplateBackupModel(); templateBackupModel.setIsAvailable(false); + vmRegisterListModel = new StorageRegisterVmListModel(); + vmRegisterListModel.setIsAvailable(false); + + templateRegisterListModel = new StorageRegisterTemplateListModel(); + templateRegisterListModel.setIsAvailable(false); + vmListModel = new StorageVmListModel(); vmListModel.setIsAvailable(false); @@ -245,6 +253,8 @@ list.add(dcListModel); list.add(vmBackupModel); list.add(templateBackupModel); + list.add(vmRegisterListModel); + list.add(templateRegisterListModel); list.add(vmListModel); list.add(templateListModel); list.add(isoListModel); @@ -1065,6 +1075,8 @@ vmListModel.setIsAvailable(isDataStorage); templateListModel.setIsAvailable(isDataStorage); + vmRegisterListModel.setIsAvailable(isDataStorage); + templateRegisterListModel.setIsAvailable(isDataStorage); diskListModel.setIsAvailable(isDataStorage); snapshotListModel.setIsAvailable(isDataStorage); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterEntityListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterEntityListModel.java new file mode 100644 index 0000000..362e2d7 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterEntityListModel.java @@ -0,0 +1,34 @@ +package org.ovirt.engine.ui.uicommonweb.models.storage; + +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; + +public abstract class StorageRegisterEntityListModel extends SearchableListModel { + + public StorageRegisterEntityListModel() { + setIsTimerDisabled(true); + } + + @Override + protected void onEntityChanged() { + super.onEntityChanged(); + getSearchCommand().execute(); + } + + @Override + public StorageDomain getEntity() { + return (StorageDomain) super.getEntity(); + } + + public void setEntity(StorageDomain value) + { + super.setEntity(value); + } + + @Override + public void search() { + if (getEntity() != null) { + super.search(); + } + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterTemplateListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterTemplateListModel.java new file mode 100644 index 0000000..54bda9a --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterTemplateListModel.java @@ -0,0 +1,45 @@ +package org.ovirt.engine.ui.uicommonweb.models.storage; + +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.queries.UnregisteredEntitiesQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.uicommonweb.help.HelpTag; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +import java.util.ArrayList; + +public class StorageRegisterTemplateListModel extends StorageRegisterEntityListModel { + + public StorageRegisterTemplateListModel() { + setTitle(ConstantsManager.getInstance().getConstants().templateImportTitle()); + setHelpTag(HelpTag.register_templates); + setHashName("register_templates"); //$NON-NLS-1$ + } + + @Override + protected void syncSearch() { + if (getEntity() == null) { + return; + } + + UnregisteredEntitiesQueryParameters parameters = new UnregisteredEntitiesQueryParameters((getEntity()).getId()); + parameters.setRefresh(getIsQueryFirstTime()); + + Frontend.getInstance().runQuery(VdcQueryType.GetUnregisteredVmTemplates, parameters, + new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object ReturnValue) { + setItems((ArrayList<VM>) ((VdcQueryReturnValue) ReturnValue).getReturnValue()); + } + })); + } + + @Override + protected String getListName() { + return "StorageRegisterTemplateListModel"; //$NON-NLS-1$ + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterVmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterVmListModel.java new file mode 100644 index 0000000..8172d0a --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterVmListModel.java @@ -0,0 +1,45 @@ +package org.ovirt.engine.ui.uicommonweb.models.storage; + +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.queries.UnregisteredEntitiesQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.uicommonweb.help.HelpTag; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +import java.util.ArrayList; + +public class StorageRegisterVmListModel extends StorageRegisterEntityListModel { + + public StorageRegisterVmListModel() { + setTitle(ConstantsManager.getInstance().getConstants().vmImportTitle()); + setHelpTag(HelpTag.register_vms); + setHashName("register_vms"); //$NON-NLS-1$ + } + + @Override + protected void syncSearch() { + if (getEntity() == null) { + return; + } + + UnregisteredEntitiesQueryParameters parameters = new UnregisteredEntitiesQueryParameters((getEntity()).getId()); + parameters.setRefresh(getIsQueryFirstTime()); + + Frontend.getInstance().runQuery(VdcQueryType.GetUnregisteredVms, parameters, + new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object ReturnValue) { + setItems((ArrayList<VM>) ((VdcQueryReturnValue) ReturnValue).getReturnValue()); + } + })); + } + + @Override + protected String getListName() { + return "StorageRegisterVmListModel"; //$NON-NLS-1$ + } +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java index 21a5151..f3885f0 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java @@ -109,6 +109,8 @@ import org.ovirt.engine.ui.uicommonweb.models.storage.StorageGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.storage.StorageIsoListModel; import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterTemplateListModel; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterVmListModel; import org.ovirt.engine.ui.uicommonweb.models.storage.StorageSnapshotListModel; import org.ovirt.engine.ui.uicommonweb.models.storage.StorageTemplateListModel; import org.ovirt.engine.ui.uicommonweb.models.storage.StorageVmListModel; @@ -143,7 +145,7 @@ import com.gwtplatform.mvp.client.annotations.DefaultGatekeeper; -/** H +/** * WebAdmin {@code Ginjector} extension interface. */ public interface ClientGinjectorExtension { @@ -221,6 +223,10 @@ SearchableDetailModelProvider<VmTemplate, StorageListModel, TemplateBackupModel> getSubTabStorageTemplateBackupModelProvider(); + SearchableDetailModelProvider<VM, StorageListModel, StorageRegisterVmListModel> getSubTabStorageRegisterVmModelProvider(); + + SearchableDetailModelProvider<VmTemplate, StorageListModel, StorageRegisterTemplateListModel> getSubTabStorageRegisterTemplateModelProvider(); + SearchableDetailModelProvider<VM, StorageListModel, StorageVmListModel> getSubTabStorageVmModelProvider(); SearchableDetailModelProvider<VmTemplate, StorageListModel, StorageTemplateListModel> getSubTabStorageTemplateModelProvider(); 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 09ead93..fbf27ee 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 @@ -199,6 +199,8 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageGeneralPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageIsoPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStoragePermissionPresenter; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageRegisterTemplatePresenter; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageRegisterVmPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageSnapshotPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageTemplateBackupPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageTemplatePresenter; @@ -425,6 +427,8 @@ import org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageGeneralView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageIsoView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStoragePermissionView; +import org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageRegisterTemplateView; +import org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageRegisterVmView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageSnapshotView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageTemplateBackupView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageTemplateView; @@ -643,6 +647,14 @@ SubTabStorageTemplateBackupPresenter.ViewDef.class, SubTabStorageTemplateBackupView.class, SubTabStorageTemplateBackupPresenter.ProxyDef.class); + bindPresenter(SubTabStorageRegisterVmPresenter.class, + SubTabStorageRegisterVmPresenter.ViewDef.class, + SubTabStorageRegisterVmView.class, + SubTabStorageRegisterVmPresenter.ProxyDef.class); + bindPresenter(SubTabStorageRegisterTemplatePresenter.class, + SubTabStorageRegisterTemplatePresenter.ViewDef.class, + SubTabStorageRegisterTemplateView.class, + SubTabStorageRegisterTemplatePresenter.ProxyDef.class); bindPresenter(SubTabStorageVmPresenter.class, SubTabStorageVmPresenter.ViewDef.class, SubTabStorageVmView.class, diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java index b4d09ff..2940762 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java @@ -30,6 +30,8 @@ import org.ovirt.engine.ui.uicommonweb.models.storage.StorageGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.storage.StorageIsoListModel; import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterTemplateListModel; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterVmListModel; import org.ovirt.engine.ui.uicommonweb.models.storage.StorageSnapshotListModel; import org.ovirt.engine.ui.uicommonweb.models.storage.StorageTemplateListModel; import org.ovirt.engine.ui.uicommonweb.models.storage.StorageVmListModel; @@ -313,6 +315,26 @@ @Provides @Singleton + public SearchableDetailModelProvider<VM, StorageListModel, StorageRegisterVmListModel> getStorageRegisterVmListProvider( + EventBus eventBus, Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider) { + return new SearchableDetailTabModelProvider<VM, StorageListModel, StorageRegisterVmListModel>( + eventBus, defaultConfirmPopupProvider, + StorageListModel.class, + StorageRegisterVmListModel.class); + } + + @Provides + @Singleton + public SearchableDetailModelProvider<VmTemplate, StorageListModel, StorageRegisterTemplateListModel> getStorageRegisterTemplateListProvider( + EventBus eventBus, Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider) { + return new SearchableDetailTabModelProvider<VmTemplate, StorageListModel, StorageRegisterTemplateListModel>( + eventBus, defaultConfirmPopupProvider, + StorageListModel.class, + StorageRegisterTemplateListModel.class); + } + + @Provides + @Singleton public SearchableDetailModelProvider<VM, StorageListModel, VmBackupModel> getVmBackupProvider(EventBus eventBus, Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider, final Provider<ImportVmPopupPresenterWidget> importVmPopupProvider, diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterTemplatePresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterTemplatePresenter.java new file mode 100644 index 0000000..428d90b --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterTemplatePresenter.java @@ -0,0 +1,60 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage; + +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.VmTemplate; +import org.ovirt.engine.ui.common.place.PlaceRequestFactory; +import org.ovirt.engine.ui.common.presenter.AbstractSubTabPresenter; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.widget.tab.ModelBoundTabData; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterTemplateListModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.StorageSelectionChangeEvent; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import com.gwtplatform.mvp.client.TabData; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit; +import com.gwtplatform.mvp.client.annotations.ProxyEvent; +import com.gwtplatform.mvp.client.annotations.TabInfo; +import com.gwtplatform.mvp.client.proxy.PlaceManager; +import com.gwtplatform.mvp.client.proxy.PlaceRequest; +import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace; + +public class SubTabStorageRegisterTemplatePresenter extends AbstractSubTabPresenter<StorageDomain, StorageListModel, StorageRegisterTemplateListModel, SubTabStorageRegisterTemplatePresenter.ViewDef, SubTabStorageRegisterTemplatePresenter.ProxyDef> { + + @ProxyCodeSplit + @NameToken(ApplicationPlaces.storageTemplateBackupSubTabPlace) + public interface ProxyDef extends TabContentProxyPlace<SubTabStorageRegisterTemplatePresenter> { + } + + public interface ViewDef extends AbstractSubTabPresenter.ViewDef<StorageDomain> { + } + + @TabInfo(container = StorageSubTabPanelPresenter.class) + static TabData getTabData(ApplicationConstants applicationConstants, + SearchableDetailModelProvider<VmTemplate, StorageListModel, StorageRegisterTemplateListModel> modelProvider) { + return new ModelBoundTabData(applicationConstants.storageTemplateBackupSubTabLabel(), 3, modelProvider); + } + + @Inject + public SubTabStorageRegisterTemplatePresenter(EventBus eventBus, ViewDef view, ProxyDef proxy, + PlaceManager placeManager, + SearchableDetailModelProvider<VmTemplate, StorageListModel, StorageRegisterTemplateListModel> modelProvider) { + super(eventBus, view, proxy, placeManager, modelProvider, + StorageSubTabPanelPresenter.TYPE_SetTabContent); + } + + @Override + protected PlaceRequest getMainTabRequest() { + return PlaceRequestFactory.get(ApplicationPlaces.storageMainTabPlace); + } + + @ProxyEvent + public void onStorageSelectionChange(StorageSelectionChangeEvent event) { + updateMainTabSelection(event.getSelectedItems()); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterVmPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterVmPresenter.java new file mode 100644 index 0000000..4b9b9b8 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterVmPresenter.java @@ -0,0 +1,60 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage; + +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.ui.common.place.PlaceRequestFactory; +import org.ovirt.engine.ui.common.presenter.AbstractSubTabPresenter; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.widget.tab.ModelBoundTabData; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterVmListModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.StorageSelectionChangeEvent; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import com.gwtplatform.mvp.client.TabData; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit; +import com.gwtplatform.mvp.client.annotations.ProxyEvent; +import com.gwtplatform.mvp.client.annotations.TabInfo; +import com.gwtplatform.mvp.client.proxy.PlaceManager; +import com.gwtplatform.mvp.client.proxy.PlaceRequest; +import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace; + +public class SubTabStorageRegisterVmPresenter extends AbstractSubTabPresenter<StorageDomain, StorageListModel, StorageRegisterVmListModel, SubTabStorageRegisterVmPresenter.ViewDef, SubTabStorageRegisterVmPresenter.ProxyDef> { + + @ProxyCodeSplit + @NameToken(ApplicationPlaces.storageVmBackupSubTabPlace) + public interface ProxyDef extends TabContentProxyPlace<SubTabStorageRegisterVmPresenter> { + } + + public interface ViewDef extends AbstractSubTabPresenter.ViewDef<StorageDomain> { + } + + @TabInfo(container = StorageSubTabPanelPresenter.class) + static TabData getTabData(ApplicationConstants applicationConstants, + SearchableDetailModelProvider<VM, StorageListModel, StorageRegisterVmListModel> modelProvider) { + return new ModelBoundTabData(applicationConstants.storageVmBackupSubTabLabel(), 2, modelProvider); + } + + @Inject + public SubTabStorageRegisterVmPresenter(EventBus eventBus, ViewDef view, ProxyDef proxy, + PlaceManager placeManager, + SearchableDetailModelProvider<VM, StorageListModel, StorageRegisterVmListModel> modelProvider) { + super(eventBus, view, proxy, placeManager, modelProvider, + StorageSubTabPanelPresenter.TYPE_SetTabContent); + } + + @Override + protected PlaceRequest getMainTabRequest() { + return PlaceRequestFactory.get(ApplicationPlaces.storageMainTabPlace); + } + + @ProxyEvent + public void onStorageSelectionChange(StorageSelectionChangeEvent event) { + updateMainTabSelection(event.getSelectedItems()); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterTemplateView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterTemplateView.java new file mode 100644 index 0000000..8ccbfea --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterTemplateView.java @@ -0,0 +1,101 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.tab.storage; + +import org.ovirt.engine.core.common.businessentities.OriginType; +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.VmTemplate; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.widget.table.column.EnumColumn; +import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterTemplateListModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationResources; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageRegisterTemplatePresenter; +import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView; + +import com.google.inject.Inject; +import org.ovirt.engine.ui.webadmin.widget.table.column.GeneralDateTimeColumn; + +import java.util.Date; + +public class SubTabStorageRegisterTemplateView extends AbstractSubTabTableView<StorageDomain, VmTemplate, StorageListModel, StorageRegisterTemplateListModel> + implements SubTabStorageRegisterTemplatePresenter.ViewDef { + + @Inject + public SubTabStorageRegisterTemplateView(SearchableDetailModelProvider<VmTemplate, StorageListModel, StorageRegisterTemplateListModel> modelProvider, + ApplicationResources resources, ApplicationConstants constants) { + super(modelProvider); + initTable(resources, constants); + initWidget(getTable()); + } + + void initTable(ApplicationResources resources, final ApplicationConstants constants) { + getTable().enableColumnResizing(); + + TextColumnWithTooltip<VmTemplate> nameColumn = new TextColumnWithTooltip<VmTemplate>() { + @Override + public String getValue(VmTemplate object) { + return object.getName(); + } + }; + getTable().addColumn(nameColumn, constants.nameVm(), "150px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VmTemplate> originColumn = new EnumColumn<VmTemplate, OriginType>() { + @Override + protected OriginType getRawValue(VmTemplate object) { + return object.getOrigin(); + } + }; + getTable().addColumn(originColumn, constants.originVm(), "100px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VmTemplate> memoryColumn = new TextColumnWithTooltip<VmTemplate>() { + @Override + public String getValue(VmTemplate object) { + return String.valueOf(object.getMemSizeMb()) + " MB"; //$NON-NLS-1$ + } + }; + getTable().addColumn(memoryColumn, constants.memoryVm(), "100px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VmTemplate> cpuColumn = new TextColumnWithTooltip<VmTemplate>() { + @Override + public String getValue(VmTemplate object) { + return String.valueOf(object.getNumOfCpus()); + } + }; + getTable().addColumn(cpuColumn, constants.cpusVm(), "100px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VmTemplate> archColumn = new TextColumnWithTooltip<VmTemplate>() { + @Override + public String getValue(VmTemplate object) { + return String.valueOf(object.getClusterArch()); + } + }; + getTable().addColumn(archColumn, constants.architectureVm(), "100px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VmTemplate> diskColumn = new TextColumnWithTooltip<VmTemplate>() { + @Override + public String getValue(VmTemplate object) { + return String.valueOf(object.getDiskList().size()); + } + }; + getTable().addColumn(diskColumn, constants.disksVm(), "100px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VmTemplate> creationDateColumn = new GeneralDateTimeColumn<VmTemplate>() { + @Override + protected Date getRawValue(VmTemplate object) { + return object.getCreationDate(); + } + }; + getTable().addColumn(creationDateColumn, constants.creationDateVm(), "200px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VmTemplate> exportDateColumn = new GeneralDateTimeColumn<VmTemplate>() { + @Override + protected Date getRawValue(VmTemplate object) { + return object.getExportDate(); + } + }; + getTable().addColumn(exportDateColumn, constants.exportDateVm(), "200px"); //$NON-NLS-1$ + + getTable().showRefreshButton(); + } +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterVmView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterVmView.java new file mode 100644 index 0000000..b0f1511 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterVmView.java @@ -0,0 +1,101 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.tab.storage; + +import org.ovirt.engine.core.common.businessentities.OriginType; +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.widget.table.column.EnumColumn; +import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel; +import org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterVmListModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationResources; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageRegisterVmPresenter; +import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView; + +import com.google.inject.Inject; +import org.ovirt.engine.ui.webadmin.widget.table.column.GeneralDateTimeColumn; + +import java.util.Date; + +public class SubTabStorageRegisterVmView extends AbstractSubTabTableView<StorageDomain, VM, StorageListModel, StorageRegisterVmListModel> + implements SubTabStorageRegisterVmPresenter.ViewDef { + + @Inject + public SubTabStorageRegisterVmView(SearchableDetailModelProvider<VM, StorageListModel, StorageRegisterVmListModel> modelProvider, + ApplicationResources resources, ApplicationConstants constants) { + super(modelProvider); + initTable(resources, constants); + initWidget(getTable()); + } + + void initTable(ApplicationResources resources, final ApplicationConstants constants) { + getTable().enableColumnResizing(); + + TextColumnWithTooltip<VM> nameColumn = new TextColumnWithTooltip<VM>() { + @Override + public String getValue(VM object) { + return object.getName(); + } + }; + getTable().addColumn(nameColumn, constants.nameVm(), "150px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VM> originColumn = new EnumColumn<VM, OriginType>() { + @Override + protected OriginType getRawValue(VM object) { + return object.getOrigin(); + } + }; + getTable().addColumn(originColumn, constants.originVm(), "100px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VM> memoryColumn = new TextColumnWithTooltip<VM>() { + @Override + public String getValue(VM object) { + return String.valueOf(object.getVmMemSizeMb()) + " MB"; //$NON-NLS-1$ + } + }; + getTable().addColumn(memoryColumn, constants.memoryVm(), "100px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VM> cpuColumn = new TextColumnWithTooltip<VM>() { + @Override + public String getValue(VM object) { + return String.valueOf(object.getNumOfCpus()); + } + }; + getTable().addColumn(cpuColumn, constants.cpusVm(), "100px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VM> archColumn = new TextColumnWithTooltip<VM>() { + @Override + public String getValue(VM object) { + return String.valueOf(object.getClusterArch()); + } + }; + getTable().addColumn(archColumn, constants.architectureVm(), "100px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VM> diskColumn = new TextColumnWithTooltip<VM>() { + @Override + public String getValue(VM object) { + return String.valueOf(object.getDiskMap().size()); + } + }; + getTable().addColumn(diskColumn, constants.disksVm(), "100px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VM> creationDateColumn = new GeneralDateTimeColumn<VM>() { + @Override + protected Date getRawValue(VM object) { + return object.getVmCreationDate(); + } + }; + getTable().addColumn(creationDateColumn, constants.creationDateVm(), "200px"); //$NON-NLS-1$ + + TextColumnWithTooltip<VM> exportDateColumn = new GeneralDateTimeColumn<VM>() { + @Override + protected Date getRawValue(VM object) { + return object.getExportDate(); + } + }; + getTable().addColumn(exportDateColumn, constants.exportDateVm(), "200px"); //$NON-NLS-1$ + + getTable().showRefreshButton(); + } +} -- To view, visit http://gerrit.ovirt.org/28604 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id4f0a6af44c4e066cf4e0b876331f7c8ce78b79c Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Daniel Erez <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
