Tomas Jelinek has uploaded a new change for review.

Change subject: webadmin: added images main tab
......................................................................

webadmin: added images main tab

Change-Id: I0e16d8f160964e51a8abf2c5888f6bd096cbd026
Signed-off-by: Tomas Jelinek <[email protected]>
---
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/template/ImageGeneralModelForm.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/image/ImageGeneralModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/ImageListModel.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/ManagedComponents.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
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ImageModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabImagePresenter.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/image/ImageSubTabPanelPresenter.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/image/SubTabImageGeneralPresenter.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabImageView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/image/ImageSubTabPanelView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/image/SubTabImageGeneralView.java
16 files changed, 458 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/42/12442/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/template/ImageGeneralModelForm.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/template/ImageGeneralModelForm.java
new file mode 100644
index 0000000..ad85190
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/template/ImageGeneralModelForm.java
@@ -0,0 +1,27 @@
+package org.ovirt.engine.ui.common.widget.uicommon.template;
+
+import org.ovirt.engine.ui.common.CommonApplicationConstants;
+import org.ovirt.engine.ui.common.uicommon.model.ModelProvider;
+import org.ovirt.engine.ui.uicommonweb.models.image.ImageGeneralModel;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+
+public class ImageGeneralModelForm extends 
TemplateBasedGeneralModelForm<ImageGeneralModel> {
+
+    interface Driver extends SimpleBeanEditorDriver<ImageGeneralModel, 
ImageGeneralModelForm> {
+        Driver driver = GWT.create(Driver.class);
+    }
+
+    public ImageGeneralModelForm(ModelProvider<ImageGeneralModel> 
modelProvider,
+            CommonApplicationConstants constants) {
+        super(modelProvider, constants);
+    }
+
+    @Override
+    protected SimpleBeanEditorDriver<ImageGeneralModel, ImageGeneralModelForm> 
getInitializedDriver() {
+        Driver.driver.initialize(this);
+        return Driver.driver;
+    }
+
+}
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 851028b..9da5c97 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
@@ -38,6 +38,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel;
 import org.ovirt.engine.ui.uicommonweb.models.tags.TagListModel;
 import org.ovirt.engine.ui.uicommonweb.models.tags.TagModel;
+import org.ovirt.engine.ui.uicommonweb.models.templates.ImageListModel;
 import org.ovirt.engine.ui.uicommonweb.models.templates.InstanceTypeListModel;
 import org.ovirt.engine.ui.uicommonweb.models.templates.TemplateListModel;
 import org.ovirt.engine.ui.uicommonweb.models.users.UserListModel;
@@ -792,6 +793,7 @@
     private SearchableListModel diskList;
     private SearchableListModel networkList;
     private SearchableListModel instanceTypeList;
+    private SearchableListModel imageList;
 
     private void InitItems()
     {
@@ -837,6 +839,9 @@
         instanceTypeList = new InstanceTypeListModel();
         list.add(instanceTypeList);
 
+        imageList = new ImageListModel();
+        list.add(imageList);
+
         setItems(list);
 
         roleListModel = new RoleListModel();
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/image/ImageGeneralModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/image/ImageGeneralModel.java
new file mode 100644
index 0000000..ff46a6e
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/image/ImageGeneralModel.java
@@ -0,0 +1,7 @@
+package org.ovirt.engine.ui.uicommonweb.models.image;
+
+import 
org.ovirt.engine.ui.uicommonweb.models.templates.TamplateBasedGeneralModel;
+
+public class ImageGeneralModel extends TamplateBasedGeneralModel {
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/ImageListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/ImageListModel.java
new file mode 100644
index 0000000..858226d
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/ImageListModel.java
@@ -0,0 +1,61 @@
+package org.ovirt.engine.ui.uicommonweb.models.templates;
+
+import org.ovirt.engine.core.common.businessentities.ImageType;
+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.ui.uicommonweb.models.EntityModel;
+import org.ovirt.engine.ui.uicommonweb.models.ISupportSystemTreeContext;
+import org.ovirt.engine.ui.uicommonweb.models.image.ImageGeneralModel;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+import org.ovirt.engine.ui.uicompat.ObservableCollection;
+
+public class ImageListModel extends BaseTemplateDerivedListModel<ImageType> 
implements ISupportSystemTreeContext {
+
+    public ImageListModel() {
+        super(ConstantsManager.getInstance().getConstants().imagesTitle());
+
+        setDefaultSearchString("Template:type = IMAGE"); //$NON-NLS-1$
+        setSearchString(getDefaultSearchString());
+    }
+
+    @Override
+    protected String extractNameFromEntity(ImageType entity) {
+        return entity.getName();
+    }
+
+    @Override
+    protected VdcQueryType getEntityExportDomain() {
+        // TODO get instance types from export domain
+        return VdcQueryType.GetVmsFromExportDomain;
+    }
+
+    @Override
+    protected void sendWarningForNonExportableDisks(ImageType entity) {
+        // no op
+    }
+
+    @Override
+    protected String getListName() {
+        return "ImageListModel"; //$NON-NLS-1$
+    }
+
+    @Override
+    protected void SyncSearch() {
+        // for now - just to get at least the blank template
+        SearchParameters tempVar = new SearchParameters("Template:", 
SearchType.VmTemplate); //$NON-NLS-1$
+        tempVar.setMaxCount(getSearchPageSize());
+        super.SyncSearch(VdcQueryType.Search, tempVar);
+    }
+
+    @Override
+    protected void InitDetailModels() {
+        super.InitDetailModels();
+
+        ObservableCollection<EntityModel> list = new 
ObservableCollection<EntityModel>();
+        list.add(new ImageGeneralModel());
+
+        setDetailModels(list);
+    }
+
+}
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 1dbafbd..628c265 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
@@ -76,6 +76,9 @@
     @DefaultStringValue("Instance Types")
     String instanceTypesMainTabLabel();
 
+    @DefaultStringValue("Images")
+    String imageMainTabLabel();
+
     @DefaultStringValue("Pools")
     String poolMainTabLabel();
 
@@ -520,6 +523,9 @@
     @DefaultStringValue("General")
     String instanceTypeGeneralSubTabLabel();
 
+    @DefaultStringValue("General")
+    String imageGeneralSubTabLabel();
+
     @DefaultStringValue("Virtual Machines")
     String templateVmSubTabLabel();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
index 45a9111..f94edc0 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
@@ -5,11 +5,13 @@
 import org.ovirt.engine.core.common.businessentities.AuditLog;
 import org.ovirt.engine.core.common.businessentities.DbUser;
 import org.ovirt.engine.core.common.businessentities.Disk;
+import org.ovirt.engine.core.common.businessentities.ImageType;
 import org.ovirt.engine.core.common.businessentities.InstanceType;
 import org.ovirt.engine.core.common.businessentities.Quota;
 import org.ovirt.engine.core.common.businessentities.QuotaStorage;
 import org.ovirt.engine.core.common.businessentities.QuotaVdsGroup;
 import org.ovirt.engine.core.common.businessentities.Snapshot;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VM;
@@ -17,7 +19,6 @@
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.event_subscriber;
 import org.ovirt.engine.core.common.businessentities.permissions;
-import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
@@ -64,6 +65,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterfaceListModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostListModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostVmListModel;
+import org.ovirt.engine.ui.uicommonweb.models.image.ImageGeneralModel;
 import 
org.ovirt.engine.ui.uicommonweb.models.instanceType.InstanceTypeGeneralModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkClusterListModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkGeneralModel;
@@ -93,6 +95,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageVmListModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.TemplateBackupModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.VmBackupModel;
+import org.ovirt.engine.ui.uicommonweb.models.templates.ImageListModel;
 import org.ovirt.engine.ui.uicommonweb.models.templates.InstanceTypeListModel;
 import org.ovirt.engine.ui.uicommonweb.models.templates.TemplateDiskListModel;
 import org.ovirt.engine.ui.uicommonweb.models.templates.TemplateEventListModel;
@@ -134,6 +137,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabDiskPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabEventPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabHostPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabImagePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabInstanceTypePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabNetworkPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabPoolPresenter;
@@ -178,6 +182,8 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostInterfacePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostPermissionPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostVmPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.image.ImageSubTabPanelPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.image.SubTabImageGeneralPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.instanceType.InstanceTypeSubTabPanelPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.instanceType.SubTabInstanceTypeGeneralPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.network.NetworkSubTabPanelPresenter;
@@ -303,6 +309,10 @@
     MainModelProvider<VM, VmListModel> getMainTabVirtualMachineModelProvider();
 
     MainModelProvider<InstanceType, InstanceTypeListModel> 
getMainTabInstanceTypeModelProvider();
+
+    MainModelProvider<ImageType, ImageListModel> 
getMainTabImageModelProvider();
+
+    AsyncProvider<MainTabImagePresenter> getMainTabImagePresenterProvider();
 
     AsyncProvider<MainTabInstanceTypePresenter> 
getMainTabInstanceTypePresenterProvider();
 
@@ -559,6 +569,13 @@
 
     DetailModelProvider<InstanceTypeListModel, InstanceTypeGeneralModel> 
getSubTabInstanceTypeGeneralModelProvider();
 
+    // Image Type
+    AsyncProvider<ImageSubTabPanelPresenter> getImageTabPanelPresenter();
+
+    AsyncProvider<SubTabImageGeneralPresenter> 
getSubTabImageGeneralPresenter();
+
+    DetailModelProvider<ImageListModel, ImageGeneralModel> 
getSubTabImageGeneralModelProvider();
+
     // User
 
     AsyncProvider<UserSubTabPanelPresenter> getUserSubTabPanelPresenter();
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 5a4fffd..1b5a86e 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
@@ -92,6 +92,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabDiskPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabEventPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabHostPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabImagePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabInstanceTypePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabNetworkPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabPoolPresenter;
@@ -136,6 +137,8 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostInterfacePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostPermissionPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostVmPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.image.ImageSubTabPanelPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.image.SubTabImageGeneralPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.instanceType.InstanceTypeSubTabPanelPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.instanceType.SubTabInstanceTypeGeneralPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.network.NetworkSubTabPanelPresenter;
@@ -281,6 +284,7 @@
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabDiskView;
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabEventView;
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabHostView;
+import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabImageView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabInstanceTypesView;
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabNetworkView;
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabPoolView;
@@ -325,6 +329,8 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostInterfaceView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostPermissionView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostVmView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.image.ImageSubTabPanelView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.image.SubTabImageGeneralView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.instanceType.InstanceTypeSubTabPanelView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.instanceType.SubTabInstanceTypeGeneralView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.network.NetworkSubTabPanelView;
@@ -467,6 +473,10 @@
                 MainTabInstanceTypePresenter.ViewDef.class,
                 MainTabInstanceTypesView.class,
                 MainTabInstanceTypePresenter.ProxyDef.class);
+        bindPresenter(MainTabImagePresenter.class,
+                MainTabImagePresenter.ViewDef.class,
+                MainTabImageView.class,
+                MainTabImagePresenter.ProxyDef.class);
         bindPresenter(MainTabUserPresenter.class,
                 MainTabUserPresenter.ViewDef.class,
                 MainTabUserView.class,
@@ -744,6 +754,17 @@
                 SubTabInstanceTypeGeneralView.class,
                 SubTabInstanceTypeGeneralPresenter.ProxyDef.class);
 
+        // Image
+        bindPresenter(ImageSubTabPanelPresenter.class,
+                ImageSubTabPanelPresenter.ViewDef.class,
+                ImageSubTabPanelView.class,
+                ImageSubTabPanelPresenter.ProxyDef.class);
+
+        bindPresenter(SubTabImageGeneralPresenter.class,
+                SubTabImageGeneralPresenter.ViewDef.class,
+                SubTabImageGeneralView.class,
+                SubTabImageGeneralPresenter.ProxyDef.class);
+
         // User
         bindPresenter(UserSubTabPanelPresenter.class,
                 UserSubTabPanelPresenter.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 699dcd9..80dede6 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
@@ -7,6 +7,7 @@
 import org.ovirt.engine.ui.webadmin.gin.uicommon.DiskModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.EventModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.HostModule;
+import org.ovirt.engine.ui.webadmin.gin.uicommon.ImageModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.InstanceTypeModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.NetworkModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.PoolModule;
@@ -62,6 +63,7 @@
         install(new DiskModule());
         install(new NetworkModule());
         install(new InstanceTypeModule());
+        install(new ImageModule());
 
         // SystemTreeModel
         bind(SystemTreeModelProvider.class).asEagerSingleton();
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ImageModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ImageModule.java
new file mode 100644
index 0000000..056c090
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ImageModule.java
@@ -0,0 +1,47 @@
+package org.ovirt.engine.ui.webadmin.gin.uicommon;
+
+import org.ovirt.engine.core.common.businessentities.ImageType;
+import 
org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
+import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider;
+import org.ovirt.engine.ui.common.uicommon.model.DetailTabModelProvider;
+import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
+import org.ovirt.engine.ui.common.uicommon.model.MainTabModelProvider;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.models.Model;
+import org.ovirt.engine.ui.uicommonweb.models.image.ImageGeneralModel;
+import org.ovirt.engine.ui.uicommonweb.models.templates.ImageListModel;
+import org.ovirt.engine.ui.webadmin.gin.ClientGinjector;
+
+import com.google.gwt.inject.client.AbstractGinModule;
+import com.google.inject.Provides;
+import com.google.inject.Singleton;
+
+public class ImageModule extends AbstractGinModule {
+
+    @Provides
+    @Singleton
+    public MainModelProvider<ImageType, ImageListModel> 
getImageListProvider(ClientGinjector ginjector) {
+        return new MainTabModelProvider<ImageType, ImageListModel>(ginjector, 
ImageListModel.class) {
+
+            @Override
+            public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> 
getModelPopup(ImageListModel source,
+                    UICommand lastExecutedCommand,
+                    Model windowModel) {
+                return super.getModelPopup(source, lastExecutedCommand, 
windowModel);
+            }
+        };
+    }
+
+    @Provides
+    @Singleton
+    public DetailModelProvider<ImageListModel, ImageGeneralModel> 
getInstanceTypeGeneralProvider(ClientGinjector ginjector) {
+        return new DetailTabModelProvider<ImageListModel, 
ImageGeneralModel>(ginjector,
+                ImageListModel.class,
+                ImageGeneralModel.class);
+    }
+
+    @Override
+    protected void configure() {
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
index 565b0da..4f820b3 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
@@ -23,6 +23,8 @@
 
     public static final String instanceTypesMainTabPlace = "instanceTypes"; 
//$NON-NLS-1$
 
+    public static final String imageMainTabPlace = "image"; //$NON-NLS-1$
+
     public static final String poolMainTabPlace = "pools"; //$NON-NLS-1$
 
     public static final String templateMainTabPlace = "templates"; 
//$NON-NLS-1$
@@ -205,6 +207,10 @@
     public static final String instanceTypeGeneralSubTabPlace = 
instanceTypesMainTabPlace + SUB_TAB_PREFIX
             + "general"; //$NON-NLS-1$
 
+    // Image
+    public static final String imageGeneralSubTabPlace = imageMainTabPlace + 
SUB_TAB_PREFIX
+            + "general"; //$NON-NLS-1$
+
     // User
 
     public static final String userGeneralSubTabPlace = userMainTabPlace + 
SUB_TAB_PREFIX
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabImagePresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabImagePresenter.java
new file mode 100644
index 0000000..a620c82
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabImagePresenter.java
@@ -0,0 +1,67 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.tab;
+
+import java.util.List;
+import org.ovirt.engine.core.common.businessentities.ImageType;
+
+import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
+import org.ovirt.engine.ui.common.widget.tab.ModelBoundTabData;
+import org.ovirt.engine.ui.uicommonweb.models.templates.ImageListModel;
+import org.ovirt.engine.ui.webadmin.gin.ClientGinjector;
+import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.AbstractMainTabWithDetailsPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.MainTabPanelPresenter;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.gwtplatform.dispatch.annotation.GenEvent;
+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.TabInfo;
+import com.gwtplatform.mvp.client.proxy.PlaceManager;
+import com.gwtplatform.mvp.client.proxy.PlaceRequest;
+import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace;
+
+public class MainTabImagePresenter extends 
AbstractMainTabWithDetailsPresenter<ImageType, ImageListModel, 
MainTabImagePresenter.ViewDef, MainTabImagePresenter.ProxyDef> {
+
+    @GenEvent
+    public static class ImageSelectionChange {
+
+        List<ImageType> selectedItems;
+
+    }
+
+    @Inject
+    public MainTabImagePresenter(EventBus eventBus,
+            ViewDef view,
+            ProxyDef proxy,
+            PlaceManager placeManager,
+            MainModelProvider<ImageType, ImageListModel> modelProvider) {
+        super(eventBus, view, proxy, placeManager, modelProvider);
+    }
+
+    @ProxyCodeSplit
+    @NameToken(ApplicationPlaces.imageMainTabPlace)
+    public interface ProxyDef extends 
TabContentProxyPlace<MainTabImagePresenter> {
+    }
+
+    public interface ViewDef extends 
AbstractMainTabWithDetailsPresenter.ViewDef<ImageType> {
+    }
+
+    @TabInfo(container = MainTabPanelPresenter.class)
+    static TabData getTabData(ClientGinjector ginjector) {
+        return new 
ModelBoundTabData(ginjector.getApplicationConstants().imageMainTabLabel(), 13,
+                ginjector.getMainTabImageModelProvider());
+    }
+
+    @Override
+    protected void fireTableSelectionChangeEvent() {
+        ImageSelectionChangeEvent.fire(this, getSelectedItems());
+    }
+
+    @Override
+    protected PlaceRequest getMainTabRequest() {
+        return new PlaceRequest(ApplicationPlaces.imageMainTabPlace);
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/image/ImageSubTabPanelPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/image/ImageSubTabPanelPresenter.java
new file mode 100644
index 0000000..ca1cfa3
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/image/ImageSubTabPanelPresenter.java
@@ -0,0 +1,37 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.image;
+
+import 
org.ovirt.engine.ui.common.presenter.DynamicTabContainerPresenter.DynamicTabPanel;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.AbstractSubTabPanelPresenter;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.event.shared.GwtEvent.Type;
+import com.google.inject.Inject;
+import com.gwtplatform.mvp.client.RequestTabsHandler;
+import com.gwtplatform.mvp.client.TabView;
+import com.gwtplatform.mvp.client.annotations.ContentSlot;
+import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
+import com.gwtplatform.mvp.client.annotations.RequestTabs;
+import com.gwtplatform.mvp.client.proxy.Proxy;
+import com.gwtplatform.mvp.client.proxy.RevealContentHandler;
+
+public class ImageSubTabPanelPresenter extends 
AbstractSubTabPanelPresenter<ImageSubTabPanelPresenter.ViewDef, 
ImageSubTabPanelPresenter.ProxyDef> {
+
+    @ProxyCodeSplit
+    public interface ProxyDef extends Proxy<ImageSubTabPanelPresenter> {
+    }
+
+    public interface ViewDef extends TabView, DynamicTabPanel {
+    }
+
+    @RequestTabs
+    public static final Type<RequestTabsHandler> TYPE_RequestTabs = new 
Type<RequestTabsHandler>();
+
+    @ContentSlot
+    public static final Type<RevealContentHandler<?>> TYPE_SetTabContent = new 
Type<RevealContentHandler<?>>();
+
+    @Inject
+    public ImageSubTabPanelPresenter(EventBus eventBus, ViewDef view, ProxyDef 
proxy) {
+        super(eventBus, view, proxy, TYPE_SetTabContent, TYPE_RequestTabs);
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/image/SubTabImageGeneralPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/image/SubTabImageGeneralPresenter.java
new file mode 100644
index 0000000..c3e5863
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/image/SubTabImageGeneralPresenter.java
@@ -0,0 +1,62 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.image;
+
+import org.ovirt.engine.core.common.businessentities.ImageType;
+import org.ovirt.engine.ui.common.presenter.AbstractSubTabPresenter;
+import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider;
+import org.ovirt.engine.ui.common.widget.tab.ModelBoundTabData;
+import org.ovirt.engine.ui.uicommonweb.models.image.ImageGeneralModel;
+import org.ovirt.engine.ui.uicommonweb.models.templates.ImageListModel;
+import org.ovirt.engine.ui.webadmin.gin.ClientGinjector;
+import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces;
+
+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.RevealContentEvent;
+import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.ImageSelectionChangeEvent;
+
+public class SubTabImageGeneralPresenter extends 
AbstractSubTabPresenter<ImageType, ImageListModel, ImageGeneralModel, 
SubTabImageGeneralPresenter.ViewDef, SubTabImageGeneralPresenter.ProxyDef> {
+
+    @ProxyCodeSplit
+    @NameToken(ApplicationPlaces.imageGeneralSubTabPlace)
+    public interface ProxyDef extends 
TabContentProxyPlace<SubTabImageGeneralPresenter> {
+    }
+
+    public interface ViewDef extends 
AbstractSubTabPresenter.ViewDef<ImageType> {
+    }
+
+    @TabInfo(container = ImageSubTabPanelPresenter.class)
+    static TabData getTabData(ClientGinjector ginjector) {
+        return new 
ModelBoundTabData(ginjector.getApplicationConstants().imageGeneralSubTabLabel(),
 0,
+                ginjector.getSubTabImageGeneralModelProvider());
+    }
+
+    @Inject
+    public SubTabImageGeneralPresenter(EventBus eventBus, ViewDef view, 
ProxyDef proxy,
+            PlaceManager placeManager, DetailModelProvider<ImageListModel, 
ImageGeneralModel> modelProvider) {
+        super(eventBus, view, proxy, placeManager, modelProvider);
+    }
+
+    @Override
+    protected void revealInParent() {
+        RevealContentEvent.fire(this, 
ImageSubTabPanelPresenter.TYPE_SetTabContent, this);
+    }
+
+    @Override
+    protected PlaceRequest getMainTabRequest() {
+        return new PlaceRequest(ApplicationPlaces.imageMainTabPlace);
+    }
+
+    @ProxyEvent
+    public void onTemplateSelectionChange(ImageSelectionChangeEvent event) {
+        updateMainTabSelection(event.getSelectedItems());
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabImageView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabImageView.java
new file mode 100644
index 0000000..cbc10e1
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabImageView.java
@@ -0,0 +1,43 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.tab;
+
+import org.ovirt.engine.core.common.businessentities.ImageType;
+import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
+import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
+import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.uicommonweb.models.templates.ImageListModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationResources;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabImagePresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.AbstractMainTabWithDetailsTableView;
+
+import com.google.gwt.core.client.GWT;
+import com.google.inject.Inject;
+
+public class MainTabImageView extends 
AbstractMainTabWithDetailsTableView<ImageType, ImageListModel> implements 
MainTabImagePresenter.ViewDef {
+
+    interface ViewIdHandler extends ElementIdHandler<MainTabImageView> {
+        ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
+    }
+
+    @Inject
+    public MainTabImageView(MainModelProvider<ImageType, ImageListModel> 
modelProvider,
+            ApplicationResources resources, ApplicationConstants constants) {
+        super(modelProvider);
+        ViewIdHandler.idHandler.generateAndSetIds(this);
+        initTable(resources, constants);
+        initWidget(getTable());
+    }
+
+    void initTable(ApplicationResources resources, ApplicationConstants 
constants) {
+        getTable().enableColumnResizing();
+
+        TextColumnWithTooltip<ImageType> nameColumn = new 
TextColumnWithTooltip<ImageType>() {
+            @Override
+            public String getValue(ImageType object) {
+                return object.getName();
+            }
+        };
+        getTable().addColumn(nameColumn, constants.namePool(), "150px"); 
//$NON-NLS-1$
+
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/image/ImageSubTabPanelView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/image/ImageSubTabPanelView.java
new file mode 100644
index 0000000..2020e49
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/image/ImageSubTabPanelView.java
@@ -0,0 +1,26 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.tab.image;
+
+import org.ovirt.engine.ui.common.view.AbstractTabPanelView;
+import org.ovirt.engine.ui.common.widget.tab.AbstractTabPanel;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.image.ImageSubTabPanelPresenter;
+import org.ovirt.engine.ui.webadmin.widget.tab.SimpleTabPanel;
+
+public class ImageSubTabPanelView extends AbstractTabPanelView implements 
ImageSubTabPanelPresenter.ViewDef {
+
+    private final SimpleTabPanel tabPanel = new SimpleTabPanel();
+
+    public ImageSubTabPanelView() {
+        initWidget(getTabPanel());
+    }
+
+    @Override
+    protected Object getContentSlot() {
+        return ImageSubTabPanelPresenter.TYPE_SetTabContent;
+    }
+
+    @Override
+    protected AbstractTabPanel getTabPanel() {
+        return tabPanel;
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/image/SubTabImageGeneralView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/image/SubTabImageGeneralView.java
new file mode 100644
index 0000000..a9f23b0
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/image/SubTabImageGeneralView.java
@@ -0,0 +1,23 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.tab.image;
+
+import org.ovirt.engine.core.common.businessentities.ImageType;
+import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider;
+import 
org.ovirt.engine.ui.common.widget.uicommon.template.ImageGeneralModelForm;
+import org.ovirt.engine.ui.uicommonweb.models.image.ImageGeneralModel;
+import org.ovirt.engine.ui.uicommonweb.models.templates.ImageListModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.image.SubTabImageGeneralPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.template.AbstractSubTabTemplateBasedGeneralView;
+
+import com.google.gwt.editor.client.Editor;
+import com.google.inject.Inject;
+
+public class SubTabImageGeneralView extends 
AbstractSubTabTemplateBasedGeneralView<ImageType, ImageListModel, 
ImageGeneralModel> implements SubTabImageGeneralPresenter.ViewDef, 
Editor<ImageGeneralModel> {
+
+    @Inject
+    public SubTabImageGeneralView(DetailModelProvider<ImageListModel, 
ImageGeneralModel> modelProvider,
+            ApplicationConstants constants) {
+        super(modelProvider, constants, new 
ImageGeneralModelForm(modelProvider, constants));
+    }
+
+}


--
To view, visit http://gerrit.ovirt.org/12442
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0e16d8f160964e51a8abf2c5888f6bd096cbd026
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Tomas Jelinek <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to