package org.ovirt.engine.ui.webadmin.section.main.view.tab; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; import org.ovirt.engine.core.searchbackend.StoragePoolFieldAutoCompleter; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; 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.AbstractBooleanColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractEnumColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterListModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.ApplicationResources; import org.ovirt.engine.ui.webadmin.gin.AssetProvider; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabDataCenterPresenter; import org.ovirt.engine.ui.webadmin.section.main.view.AbstractMainTabWithDetailsTableView; import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition; import org.ovirt.engine.ui.webadmin.widget.action.WebAdminImageButtonDefinition; import org.ovirt.engine.ui.webadmin.widget.table.column.CommentColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.DcAdditionalStatusColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.DcStatusColumn; import com.google.gwt.core.client.GWT; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.inject.Inject; public class MainTabDataCenterView extends AbstractMainTabWithDetailsTableView<StoragePool, DataCenterListModel> implements MainTabDataCenterPresenter.ViewDef { interface ViewIdHandler extends ElementIdHandler<MainTabDataCenterView> { ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); } private static final ApplicationResources resources = AssetProvider.getResources(); private static final ApplicationConstants constants = AssetProvider.getConstants(); @Inject public MainTabDataCenterView(MainModelProvider<StoragePool, DataCenterListModel> modelProvider) { super(modelProvider); ViewIdHandler.idHandler.generateAndSetIds(this); initTable(); initWidget(getTable()); } void initTable() { getTable().enableColumnResizing(); DcStatusColumn statusIconColumn = new DcStatusColumn(); statusIconColumn.setContextMenuTitle(constants.statusIconDc()); getTable().addColumn(statusIconColumn, constants.empty(), "30px"); //$NON-NLS-1$ DcAdditionalStatusColumn additionalStatusColumn = new DcAdditionalStatusColumn(); additionalStatusColumn.setContextMenuTitle(constants.additionalStatusDataCenter()); getTable().addColumn(additionalStatusColumn, constants.empty(), "30px"); //$NON-NLS-1$ AbstractTextColumn<StoragePool> nameColumn = new AbstractTextColumn<StoragePool>() { @Override public String getValue(StoragePool object) { return object.getName(); } }; nameColumn.makeSortable(StoragePoolFieldAutoCompleter.NAME); getTable().addColumn(nameColumn, constants.nameDc(), "150px"); //$NON-NLS-1$ CommentColumn<StoragePool> commentColumn = new CommentColumn<>(); getTable().addColumnWithHtmlHeader(commentColumn, SafeHtmlUtils.fromSafeConstant(constants.commentLabel()), "75px"); //$NON-NLS-1$ AbstractTextColumn<StoragePool> storageTypeColumn = new AbstractBooleanColumn<StoragePool>( constants.storageTypeLocal(), constants.storageTypeShared()) { @Override protected Boolean getRawValue(StoragePool object) { return object.isLocal(); } }; storageTypeColumn.makeSortable(StoragePoolFieldAutoCompleter.LOCAL); getTable().addColumn(storageTypeColumn, constants.storgeTypeDc(), "150px"); //$NON-NLS-1$ AbstractTextColumn<StoragePool> statusColumn = new AbstractEnumColumn<StoragePool, StoragePoolStatus>() { @Override public StoragePoolStatus getRawValue(StoragePool object) { return object.getStatus(); } }; statusColumn.makeSortable(StoragePoolFieldAutoCompleter.STATUS); getTable().addColumn(statusColumn, constants.statusDc(), "150px"); //$NON-NLS-1$ AbstractTextColumn<StoragePool> versionColumn = new AbstractTextColumn<StoragePool>() { @Override public String getValue(StoragePool object) { return object.getCompatibilityVersion().getValue(); } }; versionColumn.makeSortable(StoragePoolFieldAutoCompleter.COMPATIBILITY_VERSION); getTable().addColumn(versionColumn, constants.comptVersDc(), "150px"); //$NON-NLS-1$ AbstractTextColumn<StoragePool> descColumn = new AbstractTextColumn<StoragePool>() { @Override public String getValue(StoragePool object) { return object.getdescription(); } }; descColumn.makeSortable(StoragePoolFieldAutoCompleter.DESCRIPTION); getTable().addColumn(descColumn, constants.descriptionDc(), "300px"); //$NON-NLS-1$ getTable().addActionButton(new WebAdminButtonDefinition<StoragePool>(constants.newDC()) { @Override protected UICommand resolveCommand() { return getMainModel().getNewCommand(); } }); getTable().addActionButton(new WebAdminButtonDefinition<StoragePool>(constants.editDC()) { @Override protected UICommand resolveCommand() { return getMainModel().getEditCommand(); } }); getTable().addActionButton(new WebAdminButtonDefinition<StoragePool>(constants.removeDC()) { @Override protected UICommand resolveCommand() { return getMainModel().getRemoveCommand(); } }); getTable().addActionButton(new WebAdminButtonDefinition<StoragePool>(constants.forceRemoveDC()) { @Override protected UICommand resolveCommand() { return getMainModel().getForceRemoveCommand(); } }); getTable().addActionButton(new WebAdminImageButtonDefinition<StoragePool>(constants.guideMeDc(), resources.guideSmallImage(), resources.guideSmallDisabledImage(), true) { @Override protected UICommand resolveCommand() { return getMainModel().getGuideCommand(); } }); getTable().addActionButton(new WebAdminButtonDefinition<StoragePool>(constants.reinitializeDC(), CommandLocation.OnlyFromContext) { @Override protected UICommand resolveCommand() { return getMainModel().getRecoveryStorageCommand(); } }); } }