package org.ovirt.engine.ui.webadmin.section.main.view.tab; import org.ovirt.engine.core.common.businessentities.Cluster; import org.ovirt.engine.core.common.mode.ApplicationMode; import org.ovirt.engine.core.searchbackend.ClusterConditionFieldAutoCompleter; 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.AbstractTextColumn; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.ApplicationModeHelper; import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel; 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.MainTabClusterPresenter; 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.ClusterAdditionalStatusColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.CommentColumn; import com.google.gwt.core.client.GWT; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.inject.Inject; public class MainTabClusterView extends AbstractMainTabWithDetailsTableView<Cluster, ClusterListModel<Void>> implements MainTabClusterPresenter.ViewDef { interface ViewIdHandler extends ElementIdHandler<MainTabClusterView> { ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); } private static final ApplicationResources resources = AssetProvider.getResources(); private static final ApplicationConstants constants = AssetProvider.getConstants(); @Inject public MainTabClusterView(MainModelProvider<Cluster, ClusterListModel<Void>> modelProvider) { super(modelProvider); ViewIdHandler.idHandler.generateAndSetIds(this); initTable(); initWidget(getTable()); } void initTable() { getTable().enableColumnResizing(); AbstractTextColumn<Cluster> nameColumn = new AbstractTextColumn<Cluster>() { @Override public String getValue(Cluster object) { return object.getName(); } }; nameColumn.makeSortable(ClusterConditionFieldAutoCompleter.NAME); getTable().addColumn(nameColumn, constants.nameCluster(), "150px"); //$NON-NLS-1$ ClusterAdditionalStatusColumn additionalStatusColumn = new ClusterAdditionalStatusColumn(); additionalStatusColumn.setContextMenuTitle(constants.additionalStatusCluster()); getTable().addColumn(additionalStatusColumn, constants.empty(), "30px"); //$NON-NLS-1$ CommentColumn<Cluster> commentColumn = new CommentColumn<>(); getTable().addColumnWithHtmlHeader(commentColumn, SafeHtmlUtils.fromSafeConstant(constants.commentLabel()), "75px"); //$NON-NLS-1$ if (ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly) { AbstractTextColumn<Cluster> dataCenterColumn = new AbstractTextColumn<Cluster>() { @Override public String getValue(Cluster object) { return object.getStoragePoolName(); } }; getTable().addColumn(dataCenterColumn, constants.dcCluster(), "150px"); //$NON-NLS-1$ } AbstractTextColumn<Cluster> versionColumn = new AbstractTextColumn<Cluster>() { @Override public String getValue(Cluster object) { return object.getCompatibilityVersion().getValue(); } }; getTable().addColumn(versionColumn, constants.comptVersCluster(), "150px"); //$NON-NLS-1$ AbstractTextColumn<Cluster> descColumn = new AbstractTextColumn<Cluster>() { @Override public String getValue(Cluster object) { return object.getDescription(); } }; descColumn.makeSortable(ClusterConditionFieldAutoCompleter.DESCRIPTION); getTable().addColumn(descColumn, constants.descriptionCluster(), "300px"); //$NON-NLS-1$ if (ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly) { AbstractTextColumn<Cluster> cpuTypeColumn = new AbstractTextColumn<Cluster>() { @Override public String getValue(Cluster object) { return object.getCpuName(); } }; getTable().addColumn(cpuTypeColumn, constants.cpuTypeCluster(), "150px"); //$NON-NLS-1$ } AbstractTextColumn<Cluster> hostCountColumn = new AbstractTextColumn<Cluster>() { @Override public String getValue(Cluster object) { if (object.getClusterHostsAndVms() == null) { return ""; //$NON-NLS-1$ } return object.getClusterHostsAndVms().getHosts() + ""; //$NON-NLS-1$ } }; getTable().addColumn(hostCountColumn, constants.hostCount(), "150px"); //$NON-NLS-1$ AbstractTextColumn<Cluster> vmCountColumn = new AbstractTextColumn<Cluster>() { @Override public String getValue(Cluster object) { if (object.getClusterHostsAndVms() == null) { return ""; //$NON-NLS-1$ } return object.getClusterHostsAndVms().getVms() + ""; //$NON-NLS-1$ } }; getTable().addColumn(vmCountColumn, constants.vmCount(), "150px"); //$NON-NLS-1$ getTable().addActionButton(new WebAdminButtonDefinition<Cluster>(constants.newCluster()) { @Override protected UICommand resolveCommand() { return getMainModel().getNewCommand(); } }); getTable().addActionButton(new WebAdminButtonDefinition<Cluster>(constants.editCluster()) { @Override protected UICommand resolveCommand() { return getMainModel().getEditCommand(); } }); getTable().addActionButton(new WebAdminButtonDefinition<Cluster>(constants.removeCluster()) { @Override protected UICommand resolveCommand() { return getMainModel().getRemoveCommand(); } }); getTable().addActionButton(new WebAdminImageButtonDefinition<Cluster>(constants.guideMeCluster(), resources.guideSmallImage(), resources.guideSmallDisabledImage(), true) { @Override protected UICommand resolveCommand() { return getMainModel().getGuideCommand(); } }); getTable().addActionButton(new WebAdminButtonDefinition<Cluster>(constants.resetClusterEmulatedMachine(), CommandLocation.OnlyFromContext) { @Override protected UICommand resolveCommand() { return getMainModel().getResetEmulatedMachineCommand(); } }); } }