Daniel Erez has uploaded a new change for review.

Change subject: webadmin: Events tab - Details dialog [wip]
......................................................................

webadmin: Events tab - Details dialog [wip]

Events tab:
* Created a new dialog for showing event's details (ID, Time, Message).
  Event message is displayed in a text-area for easy copy-paste.
* Added context menu 'Details' button (invoked on double-click)

Change-Id: If9bccd2e8a692dd7f9745ed240de3ebd1b7ff376
Signed-off-by: Daniel Erez <[email protected]>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/AbstractModelBoundTableWidget.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/EventListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/EventModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.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/EventModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractMainTabWithDetailsPresenter.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/event/EventPopupPresenterWidget.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabEventPresenter.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/event/EventPopupView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/event/EventPopupView.ui.xml
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabEventView.java
13 files changed, 276 insertions(+), 32 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/13/12913/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
index 1fc3d0f..047efa7 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
@@ -550,6 +550,9 @@
     @DefaultStringValue("Custom Event Id")
     String customEventIdEvent();
 
+    @DefaultStringValue("ID")
+    String idEvent();
+
     @DefaultStringValue("Until")
     String untilEndTime();
 
@@ -1144,4 +1147,7 @@
 
     @DefaultStringValue("Gluster")
     String gluster();
+
+    @DefaultStringValue("Details")
+    String details();
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/AbstractModelBoundTableWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/AbstractModelBoundTableWidget.java
index d1c65ac..f4a506d 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/AbstractModelBoundTableWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/AbstractModelBoundTableWidget.java
@@ -65,7 +65,7 @@
                 : GWT.<Resources> create(SubTableHeaderlessResources.class);
     }
 
-    protected M getModel() {
+    public M getModel() {
         return modelProvider.getModel();
     }
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/EventListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/EventListModel.java
index 56e4fd4..00badcb 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/EventListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/EventListModel.java
@@ -1,9 +1,5 @@
 package org.ovirt.engine.ui.uicommonweb.models.events;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
 import org.ovirt.engine.core.common.businessentities.AuditLog;
 import org.ovirt.engine.core.common.businessentities.IVdcQueryable;
 import org.ovirt.engine.core.common.interfaces.SearchType;
@@ -11,6 +7,7 @@
 import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.NotImplementedException;
+import org.ovirt.engine.core.compat.StringHelper;
 import org.ovirt.engine.core.searchbackend.SearchObjects;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.Frontend;
@@ -18,13 +15,17 @@
 import org.ovirt.engine.ui.uicommonweb.Linq;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.GridTimer;
-import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
+import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 import org.ovirt.engine.ui.uicompat.EventArgs;
 import org.ovirt.engine.ui.uicompat.ObservableCollection;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
 
-public class EventListModel extends SearchableListModel
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class EventListModel extends ListWithDetailsModel
 {
     private final GridTimer timer;
 
@@ -38,6 +39,16 @@
     private void setRefreshCommand(UICommand value)
     {
         privateRefreshCommand = value;
+    }
+
+    private UICommand detailsCommand;
+
+    public UICommand getDetailsCommand() {
+        return detailsCommand;
+    }
+
+    private void setDetailsCommand(UICommand value) {
+        detailsCommand = value;
     }
 
     private AuditLog lastEvent;
@@ -84,6 +95,7 @@
         setHashName("events"); //$NON-NLS-1$
 
         setRefreshCommand(new UICommand("Refresh", this)); //$NON-NLS-1$
+        setDetailsCommand(new UICommand("Details", this)); //$NON-NLS-1$
 
         setDefaultSearchString("Events:"); //$NON-NLS-1$
         setSearchString(getDefaultSearchString());
@@ -172,19 +184,50 @@
         Frontend.RunQuery(VdcQueryType.Search, params, query);
     }
 
+    private void details() {
+
+        AuditLog event = (AuditLog) getSelectedItem();
+
+        if (getWindow() != null || event == null) {
+            return;
+        }
+
+        EventModel model = new EventModel();
+        model.setEvent(event);
+        
model.setTitle(ConstantsManager.getInstance().getConstants().eventDetailsTitle());
+        model.setHashName("event_details"); //$NON-NLS-1$
+        setWindow(model);
+
+        UICommand command = new UICommand("Cancel", this); //$NON-NLS-1$
+        
command.setTitle(ConstantsManager.getInstance().getConstants().close());
+        command.setIsCancel(true);
+        model.getCommands().add(command);
+    }
+
+    private void cancel() {
+        setWindow(null);
+    }
+
     @Override
-    public void ExecuteCommand(UICommand command)
-    {
+    public void ExecuteCommand(UICommand command) {
         super.ExecuteCommand(command);
 
-        if (command == getRefreshCommand())
-        {
+        if (command == getRefreshCommand()) {
             refreshModel();
             UpdatePagingAvailability();
+        } else if (command == getDetailsCommand()) {
+            details();
+        } else if (StringHelper.stringsEqual(command.getName(), "Cancel")) { 
//$NON-NLS-1$
+            cancel();
         }
     }
 
     @Override
+    public UICommand getDefaultCommand() {
+        return getDetailsCommand();
+    }
+
+    @Override
     public void EnsureAsyncSearchStopped()
     {
         super.EnsureAsyncSearchStopped();
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/EventModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/EventModel.java
new file mode 100644
index 0000000..605b8b8
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/EventModel.java
@@ -0,0 +1,18 @@
+package org.ovirt.engine.ui.uicommonweb.models.events;
+
+import org.ovirt.engine.core.common.businessentities.AuditLog;
+import org.ovirt.engine.ui.uicommonweb.models.Model;
+
+public class EventModel extends Model {
+
+    private AuditLog event;
+
+    public AuditLog getEvent() {
+        return event;
+    }
+
+    public void setEvent(AuditLog event) {
+        this.event = event;
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
index 87f2045..791a27f 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
@@ -1769,4 +1769,7 @@
 
     @DefaultStringValue("There can be only one bootable disk defined")
     String onlyOneBootableDisk();
+
+    @DefaultStringValue("Event Details")
+    String eventDetailsTitle();
 }
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 3faf600..6b1ae00 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
@@ -30,6 +30,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.datacenter.NewDataCenterNetworkPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.datacenter.NewNetworkPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.datacenter.RecoveryStoragePopupPresenterWidget;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.event.EventPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.AddBrickPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.BrickAdvancedDetailsPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.DetachGlusterHostsPopupPresenterWidget;
@@ -210,6 +211,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter.FindSingleStoragePopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter.NewDataCenterNetworkPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter.RecoveryStorageConfirmationPopupView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.event.EventPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.AddBrickPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.BrickAdvancedDetailsPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.DetachGlusterHostsPopupView;
@@ -1141,5 +1143,10 @@
         bindPresenterWidget(EditNetworkPopupPresenterWidget.class,
                 EditNetworkPopupPresenterWidget.ViewDef.class,
                 EditNetworkPopupView.class);
+
+        // Event
+        bindPresenterWidget(EventPopupPresenterWidget.class,
+            EventPopupPresenterWidget.ViewDef.class,
+            EventPopupView.class);
     }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/EventModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/EventModule.java
index 3388a89..b45a013 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/EventModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/EventModule.java
@@ -1,14 +1,18 @@
 package org.ovirt.engine.ui.webadmin.gin.uicommon;
 
-import org.ovirt.engine.core.common.businessentities.AuditLog;
-import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
-import org.ovirt.engine.ui.common.uicommon.model.MainTabModelProvider;
-import org.ovirt.engine.ui.uicommonweb.models.events.EventListModel;
-import org.ovirt.engine.ui.webadmin.gin.ClientGinjector;
-
 import com.google.gwt.inject.client.AbstractGinModule;
+import com.google.inject.Provider;
 import com.google.inject.Provides;
 import com.google.inject.Singleton;
+import org.ovirt.engine.core.common.businessentities.AuditLog;
+import 
org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
+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.events.EventListModel;
+import org.ovirt.engine.ui.webadmin.gin.ClientGinjector;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.event.EventPopupPresenterWidget;
 
 public class EventModule extends AbstractGinModule {
 
@@ -16,8 +20,19 @@
 
     @Provides
     @Singleton
-    public MainModelProvider<AuditLog, EventListModel> 
getEventListProvider(ClientGinjector ginjector) {
-        return new MainTabModelProvider<AuditLog, EventListModel>(ginjector, 
EventListModel.class);
+    public MainModelProvider<AuditLog, EventListModel> 
getEventListProvider(ClientGinjector ginjector,
+            final Provider<EventPopupPresenterWidget> popupProvider) {
+        return new MainTabModelProvider<AuditLog, EventListModel>(ginjector, 
EventListModel.class) {
+            @Override
+            public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> 
getModelPopup(EventListModel source,
+                    UICommand lastExecutedCommand, Model windowModel) {
+                if (lastExecutedCommand == getModel().getDetailsCommand()) {
+                    return popupProvider.get();
+                } else {
+                    return super.getModelPopup(source, lastExecutedCommand, 
windowModel);
+                }
+            }
+        };
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractMainTabWithDetailsPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractMainTabWithDetailsPresenter.java
index 7636a88..d60a0f1 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractMainTabWithDetailsPresenter.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractMainTabWithDetailsPresenter.java
@@ -51,19 +51,23 @@
                         // Let others know that the table selection has changed
                         fireTableSelectionChangeEvent();
 
-                        // Update the layout
-                        updateLayout();
-
-                        // Reveal the appropriate place based on selection
-                        if (hasSelection()) {
-                            placeManager.revealPlace(getSubTabRequest());
-                        } else {
-                            placeManager.revealPlace(getMainTabRequest());
-                        }
+                        onSelection();
                     }
                 }));
     }
 
+    protected void onSelection() {
+        // Update the layout
+        updateLayout();
+
+        // Reveal the appropriate place based on selection
+        if (hasSelection()) {
+            placeManager.revealPlace(getSubTabRequest());
+        } else {
+            placeManager.revealPlace(getMainTabRequest());
+        }
+    }
+
     @Override
     protected void onReveal() {
         super.onReveal();
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/event/EventPopupPresenterWidget.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/event/EventPopupPresenterWidget.java
new file mode 100644
index 0000000..7e38574
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/event/EventPopupPresenterWidget.java
@@ -0,0 +1,18 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.event;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import 
org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
+import org.ovirt.engine.ui.uicommonweb.models.events.EventModel;
+
+public class EventPopupPresenterWidget extends 
AbstractModelBoundPopupPresenterWidget<EventModel, 
EventPopupPresenterWidget.ViewDef> {
+
+    public interface ViewDef extends 
AbstractModelBoundPopupPresenterWidget.ViewDef<EventModel> {
+    }
+
+    @Inject
+    public EventPopupPresenterWidget(EventBus eventBus, ViewDef view) {
+        super(eventBus, view);
+    }
+}
+
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabEventPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabEventPresenter.java
index a23603b..de1b000 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabEventPresenter.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabEventPresenter.java
@@ -1,5 +1,7 @@
 package org.ovirt.engine.ui.webadmin.section.main.presenter.tab;
 
+import java.util.List;
+
 import org.ovirt.engine.core.common.businessentities.AuditLog;
 import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
 import org.ovirt.engine.ui.common.widget.Align;
@@ -7,13 +9,13 @@
 import org.ovirt.engine.ui.uicommonweb.models.events.EventListModel;
 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.AbstractMainTabPresenter;
+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.View;
 import com.gwtplatform.mvp.client.annotations.NameToken;
 import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
 import com.gwtplatform.mvp.client.annotations.TabInfo;
@@ -21,14 +23,21 @@
 import com.gwtplatform.mvp.client.proxy.PlaceRequest;
 import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace;
 
-public class MainTabEventPresenter extends AbstractMainTabPresenter<AuditLog, 
EventListModel, MainTabEventPresenter.ViewDef, MainTabEventPresenter.ProxyDef> {
+public class MainTabEventPresenter extends 
AbstractMainTabWithDetailsPresenter<AuditLog, EventListModel, 
MainTabEventPresenter.ViewDef, MainTabEventPresenter.ProxyDef> {
+
+    @GenEvent
+    public static class EventSelectionChange {
+
+        List<AuditLog> selectedItems;
+
+    }
 
     @ProxyCodeSplit
     @NameToken(ApplicationPlaces.eventMainTabPlace)
     public interface ProxyDef extends 
TabContentProxyPlace<MainTabEventPresenter> {
     }
 
-    public interface ViewDef extends View {
+    public interface ViewDef extends 
AbstractMainTabWithDetailsPresenter.ViewDef<AuditLog> {
     }
 
     @TabInfo(container = MainTabPanelPresenter.class)
@@ -55,4 +64,12 @@
         return new PlaceRequest(ApplicationPlaces.eventMainTabPlace);
     }
 
+    @Override
+    protected void fireTableSelectionChangeEvent() {
+        EventSelectionChangeEvent.fire(this, getSelectedItems());
+    }
+
+    @Override
+    protected void onSelection() {
+    }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/event/EventPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/event/EventPopupView.java
new file mode 100644
index 0000000..cbf4350
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/event/EventPopupView.java
@@ -0,0 +1,79 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.popup.event;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.inject.Inject;
+
+import org.ovirt.engine.core.common.businessentities.AuditLog;
+import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView;
+import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
+import org.ovirt.engine.ui.common.widget.editor.EntityModelLabelEditor;
+import org.ovirt.engine.ui.common.widget.editor.EntityModelTextAreaLabelEditor;
+import org.ovirt.engine.ui.common.widget.renderer.FullDateTimeRenderer;
+import org.ovirt.engine.ui.uicommonweb.models.events.EventModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationResources;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.event.EventPopupPresenterWidget;
+
+public class EventPopupView extends AbstractModelBoundPopupView<EventModel> 
implements EventPopupPresenterWidget.ViewDef {
+
+    private final Driver driver;
+
+    interface Driver extends SimpleBeanEditorDriver<EventModel, 
EventPopupView> {
+    }
+
+    interface ViewUiBinder extends UiBinder<SimpleDialogPanel, EventPopupView> 
{
+        ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
+    }
+
+    @UiField
+    @Ignore
+    EntityModelLabelEditor eventIdLabel;
+
+    @UiField
+    @Ignore
+    EntityModelLabelEditor eventTimeLabel;
+
+    @UiField
+    @Ignore
+    EntityModelTextAreaLabelEditor eventMessageTextArea;
+
+    @Inject
+    public EventPopupView(EventBus eventBus, ApplicationResources resources, 
ApplicationConstants constants) {
+        super(eventBus, resources);
+        initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
+
+        localize(constants);
+        driver = GWT.create(Driver.class);
+        driver.initialize(this);
+    }
+
+    private void localize(ApplicationConstants constants) {
+        eventIdLabel.setLabel(constants.idEvent());
+        eventTimeLabel.setLabel(constants.timeEvent());
+        eventMessageTextArea.setLabel(constants.messageEvent());
+    }
+
+    @Override
+    public void focusInput() {
+        eventMessageTextArea.setFocus(true);
+    }
+
+    @Override
+    public void edit(final EventModel eventModel) {
+        driver.edit(eventModel);
+
+        AuditLog event = eventModel.getEvent();
+        eventIdLabel.asValueBox().setValue(event.getlog_typeValue());
+        eventTimeLabel.asValueBox().setValue(new 
FullDateTimeRenderer().render(event.getlog_time()));
+        eventMessageTextArea.asValueBox().setValue(event.getmessage());
+    }
+
+    @Override
+    public EventModel flush() {
+        return driver.flush();
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/event/EventPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/event/EventPopupView.ui.xml
new file mode 100644
index 0000000..3002a97
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/event/EventPopupView.ui.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
+    xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" 
xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor">
+
+    <ui:style>
+        .eventMessage textarea {
+                       resize: none;
+                       height: 100px;
+               }
+    </ui:style>
+
+    <d:SimpleDialogPanel width="350px" height="250px">
+        <d:content>
+            <g:FlowPanel>
+                   <e:EntityModelLabelEditor ui:field="eventIdLabel"/>
+                   <e:EntityModelLabelEditor ui:field="eventTimeLabel"/>
+                   <e:EntityModelTextAreaLabelEditor 
ui:field="eventMessageTextArea" addStyleNames="{style.eventMessage}"/>
+            </g:FlowPanel>
+        </d:content>
+    </d:SimpleDialogPanel>
+
+</ui:UiBinder>
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabEventView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabEventView.java
index b649c4c..48a1196 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabEventView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabEventView.java
@@ -5,14 +5,17 @@
 import org.ovirt.engine.core.common.businessentities.AuditLog;
 import org.ovirt.engine.core.common.mode.ApplicationMode;
 import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
+import org.ovirt.engine.ui.common.widget.action.CommandLocation;
 import org.ovirt.engine.ui.common.widget.table.column.AuditLogSeverityColumn;
 import org.ovirt.engine.ui.common.widget.table.column.FullDateTimeColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.ApplicationModeHelper;
 import org.ovirt.engine.ui.uicommonweb.models.events.EventListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabEventPresenter;
 import org.ovirt.engine.ui.webadmin.section.main.view.AbstractMainTabTableView;
+import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.dom.client.ClickEvent;
@@ -122,6 +125,14 @@
             }
         };
         getTable().addColumn(messageColumn, constants.messageEvent(), 
"150px"); //$NON-NLS-1$
+
+        getTable().addActionButton(new 
WebAdminButtonDefinition<AuditLog>(constants.details(),
+                CommandLocation.OnlyFromFromContext) {
+            @Override
+            protected UICommand resolveCommand() {
+                return getMainModel().getDetailsCommand();
+            }
+        });
     }
 
 }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: If9bccd2e8a692dd7f9745ed240de3ebd1b7ff376
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

Reply via email to