package org.ovirt.engine.ui.webadmin.section.main.view.tab; import java.util.Date; import org.ovirt.engine.core.common.businessentities.AuditLog; import org.ovirt.engine.core.common.mode.ApplicationMode; import org.ovirt.engine.core.searchbackend.AuditLogConditionFieldAutoCompleter; 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.AbstractFullDateTimeColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn; import org.ovirt.engine.ui.common.widget.table.column.AuditLogSeverityColumn; 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.gin.AssetProvider; 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; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.RadioButton; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; public class MainTabEventView extends AbstractMainTabTableView<AuditLog, EventListModel<Void>> implements MainTabEventPresenter.ViewDef { interface ViewUiBinder extends UiBinder<Widget, MainTabEventView> { ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); } @UiField RadioButton basicViewButton; @UiField RadioButton advancedViewButton; @UiField SimplePanel tablePanel; private static final ApplicationConstants constants = AssetProvider.getConstants(); private static final String BASIC_VIEW_MSG_COLUMN_WIDTH = "600px"; //$NON-NLS-1$ private static final String ADV_VIEW_MSG_COLUMN_WIDTH = "150px"; //$NON-NLS-1$ private AbstractTextColumn<AuditLog> messageColumn; @Inject public MainTabEventView(MainModelProvider<AuditLog, EventListModel<Void>> modelProvider) { super(modelProvider); initTable(); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); localize(); tablePanel.setWidget(getTable()); basicViewButton.setValue(true); } void localize() { basicViewButton.setText(constants.eventBasicViewLabel()); advancedViewButton.setText(constants.eventAdvancedViewLabel()); } @UiHandler({ "basicViewButton", "advancedViewButton" }) void handleViewButtonClick(ClickEvent event) { boolean advancedViewEnabled = advancedViewButton.getValue(); getTable().ensureColumnVisible(AdvancedViewColumns.logTypeColumn, constants.eventIdEvent(), advancedViewEnabled, "80px"); //$NON-NLS-1$ getTable().ensureColumnVisible(AdvancedViewColumns.userColumn, constants.userEvent(), advancedViewEnabled, "100px"); //$NON-NLS-1$ getTable().ensureColumnVisible(AdvancedViewColumns.hostColumn, constants.hostEvent(), advancedViewEnabled, "100px"); //$NON-NLS-1$ getTable().ensureColumnVisible(AdvancedViewColumns.virtualMachineColumn, constants.vmEvent(), advancedViewEnabled && ApplicationModeHelper.isModeSupported(ApplicationMode.VirtOnly), "100px"); //$NON-NLS-1$ getTable().ensureColumnVisible(AdvancedViewColumns.templateColumn, constants.templateEvent(), advancedViewEnabled && ApplicationModeHelper.isModeSupported(ApplicationMode.VirtOnly), "100px"); //$NON-NLS-1$ getTable().ensureColumnVisible(AdvancedViewColumns.dataCenterColumn, constants.dcEvent(), advancedViewEnabled && ApplicationModeHelper.isModeSupported(ApplicationMode.VirtOnly), "100px"); //$NON-NLS-1$ getTable().ensureColumnVisible(AdvancedViewColumns.storageColumn, constants.storageEvent(), advancedViewEnabled && ApplicationModeHelper.isModeSupported(ApplicationMode.VirtOnly), "100px"); //$NON-NLS-1$ getTable().ensureColumnVisible(AdvancedViewColumns.clusterColumn, constants.clusterEvent(), advancedViewEnabled, "100px"); //$NON-NLS-1$ getTable().ensureColumnVisible(AdvancedViewColumns.volumeColumn, constants.volumeEvent(), advancedViewEnabled && ApplicationModeHelper.isModeSupported(ApplicationMode.GlusterOnly), "120px"); //$NON-NLS-1$ getTable().ensureColumnVisible(AdvancedViewColumns.corrIdColumn, constants.eventCorrelationId(), advancedViewEnabled, "100px"); //$NON-NLS-1$ getTable().ensureColumnVisible(AdvancedViewColumns.originColumn, constants.eventOrigin(), advancedViewEnabled, "100px"); //$NON-NLS-1$ getTable().ensureColumnVisible(AdvancedViewColumns.customEventIdColumn, constants.eventCustomEventId(), advancedViewEnabled, "100px"); //$NON-NLS-1$ getTable().setColumnWidth(messageColumn, advancedViewEnabled ? ADV_VIEW_MSG_COLUMN_WIDTH : BASIC_VIEW_MSG_COLUMN_WIDTH); } void initTable() { getTable().enableColumnResizing(); AuditLogSeverityColumn severityColumn = new AuditLogSeverityColumn(); severityColumn.setContextMenuTitle(constants.severityEvent()); getTable().addColumn(severityColumn, constants.empty(), "30px"); //$NON-NLS-1$ AbstractTextColumn<AuditLog> logTimeColumn = new AbstractFullDateTimeColumn<AuditLog>() { @Override protected Date getRawValue(AuditLog object) { return object.getLogTime(); } }; logTimeColumn.makeSortable(AuditLogConditionFieldAutoCompleter.TIME); getTable().addColumn(logTimeColumn, constants.timeEvent(), "175px"); //$NON-NLS-1$ messageColumn = new AbstractTextColumn<AuditLog>() { @Override public String getValue(AuditLog object) { return object.getMessage(); } }; messageColumn.makeSortable(AuditLogConditionFieldAutoCompleter.MESSAGE); getTable().addColumn(messageColumn, constants.messageEvent(), BASIC_VIEW_MSG_COLUMN_WIDTH); getTable().addActionButton(new WebAdminButtonDefinition<AuditLog>(constants.details(), CommandLocation.OnlyFromContext) { @Override protected UICommand resolveCommand() { return getMainModel().getDetailsCommand(); } }); } } class AdvancedViewColumns { public static final AbstractTextColumn<AuditLog> logTypeColumn = new AbstractTextColumn<AuditLog>() { @Override public String getValue(AuditLog object) { return String.valueOf(object.getLogTypeValue()); } }; public static final AbstractTextColumn<AuditLog> userColumn = new AbstractTextColumn<AuditLog>() { { makeSortable(AuditLogConditionFieldAutoCompleter.USER_NAME); } @Override public String getValue(AuditLog object) { return object.getUserName(); } }; public static final AbstractTextColumn<AuditLog> hostColumn = new AbstractTextColumn<AuditLog>() { { makeSortable(AuditLogConditionFieldAutoCompleter.EVENT_HOST); } @Override public String getValue(AuditLog object) { return object.getVdsName(); } }; public static final AbstractTextColumn<AuditLog> virtualMachineColumn = new AbstractTextColumn<AuditLog>() { { makeSortable(AuditLogConditionFieldAutoCompleter.EVENT_VM); } @Override public String getValue(AuditLog object) { return object.getVmName(); } }; public static final AbstractTextColumn<AuditLog> templateColumn = new AbstractTextColumn<AuditLog>() { { makeSortable(AuditLogConditionFieldAutoCompleter.EVENT_TEMPLATE); } @Override public String getValue(AuditLog object) { return object.getVmTemplateName(); } }; public static final AbstractTextColumn<AuditLog> dataCenterColumn = new AbstractTextColumn<AuditLog>() { { makeSortable(AuditLogConditionFieldAutoCompleter.EVENT_DATACENTER); } @Override public String getValue(AuditLog object) { return object.getStoragePoolName(); } }; public static final AbstractTextColumn<AuditLog> storageColumn = new AbstractTextColumn<AuditLog>() { { makeSortable(AuditLogConditionFieldAutoCompleter.EVENT_STORAGE); } @Override public String getValue(AuditLog object) { return object.getStorageDomainName(); } }; public static final AbstractTextColumn<AuditLog> clusterColumn = new AbstractTextColumn<AuditLog>() { @Override public String getValue(AuditLog object) { return object.getClusterName(); } }; public static final AbstractTextColumn<AuditLog> volumeColumn = new AbstractTextColumn<AuditLog>() { { makeSortable(AuditLogConditionFieldAutoCompleter.EVENT_VOLUME); } @Override public String getValue(AuditLog object) { return object.getGlusterVolumeName(); } }; public static final AbstractTextColumn<AuditLog> corrIdColumn = new AbstractTextColumn<AuditLog>() { { makeSortable(AuditLogConditionFieldAutoCompleter.CORRELATION_ID); } @Override public String getValue(AuditLog object) { return object.getCorrelationId(); } }; public static final AbstractTextColumn<AuditLog> originColumn = new AbstractTextColumn<AuditLog>() { { makeSortable(AuditLogConditionFieldAutoCompleter.ORIGIN); } @Override public String getValue(AuditLog object) { return object.getOrigin(); } }; public static final AbstractTextColumn<AuditLog> customEventIdColumn = new AbstractTextColumn<AuditLog>() { { makeSortable(AuditLogConditionFieldAutoCompleter.CUSTOM_EVENT_ID); } @Override public String getValue(AuditLog object) { int id = object.getCustomEventId(); return id >= 0 ? String.valueOf(id) : ""; //$NON-NLS-1$ } }; }