package org.ovirt.engine.ui.webadmin.section.main.view.tab; import java.util.List; import org.ovirt.engine.core.common.scheduling.AffinityGroup; import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; import org.ovirt.engine.ui.common.widget.table.column.AbstractBooleanColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel; import org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.affinity_groups.list.AffinityGroupListModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.gin.AssetProvider; import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView; import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition; public abstract class AbstractSubTabAffinityGroupsView<I, M extends ListWithDetailsModel, T extends AffinityGroupListModel<?>> extends AbstractSubTabTableView<I, AffinityGroup, M, T> { private static final ApplicationConstants constants = AssetProvider.getConstants(); public AbstractSubTabAffinityGroupsView(SearchableDetailModelProvider<AffinityGroup, M, T> modelProvider) { super(modelProvider); generateIds(); initTable(); initWidget(getTable()); } private void initTable() { getTable().enableColumnResizing(); AbstractTextColumn<AffinityGroup> nameColumn = new AbstractTextColumn<AffinityGroup>() { @Override public String getValue(AffinityGroup object) { return object.getName(); } }; nameColumn.makeSortable(); getTable().addColumn(nameColumn, constants.nameAffinityGroup(), "150px"); //$NON-NLS-1$ AbstractTextColumn<AffinityGroup> descColumn = new AbstractTextColumn<AffinityGroup>() { @Override public String getValue(AffinityGroup object) { return object.getDescription(); } }; descColumn.makeSortable(); getTable().addColumn(descColumn, constants.descriptionAffinityGroup(), "150px"); //$NON-NLS-1$ AbstractBooleanColumn<AffinityGroup> polarityColumn = new AbstractBooleanColumn<AffinityGroup>(constants.positiveAffinity(), constants.negativeAffinity()) { @Override protected Boolean getRawValue(AffinityGroup object) { return object.getVmPolarityBooleanObject(); } }; polarityColumn.makeSortable(); getTable().addColumn(polarityColumn, constants.polarityAffinityGroup(), "100px"); //$NON-NLS-1$ AbstractBooleanColumn<AffinityGroup> enforceColumn = new AbstractBooleanColumn<AffinityGroup>(constants.hardEnforcingAffinity(), constants.softEnforcingAffinity()) { @Override protected Boolean getRawValue(AffinityGroup object) { return object.isVmEnforcing(); } }; enforceColumn.makeSortable(); getTable().addColumn(enforceColumn, constants.enforceAffinityGroup(), "100px"); //$NON-NLS-1$ AbstractTextColumn<AffinityGroup> membersColumn = new AbstractTextColumn<AffinityGroup>() { @Override public String getValue(AffinityGroup object) { String join = join(getEntityNames(object), ", "); //$NON-NLS-1$ if (join.isEmpty()) { return constants.noMembersAffinityGroup(); } return join; } }; membersColumn.makeSortable(); getTable().addColumn(membersColumn, constants.membersAffinityGroup(), "500px"); //$NON-NLS-1$ getTable().addActionButton(new WebAdminButtonDefinition<AffinityGroup>(constants.newAffinityGroupLabel()) { @Override protected UICommand resolveCommand() { return getDetailModel().getNewCommand(); } }); getTable().addActionButton(new WebAdminButtonDefinition<AffinityGroup>(constants.editAffinityGroupLabel()) { @Override protected UICommand resolveCommand() { return getDetailModel().getEditCommand(); } }); getTable().addActionButton(new WebAdminButtonDefinition<AffinityGroup>(constants.removeAffinityGroupLabel()) { @Override protected UICommand resolveCommand() { return getDetailModel().getRemoveCommand(); } }); } protected List<String> getEntityNames(AffinityGroup object) { return object.getVmEntityNames(); } protected String join(List<String> strings, String separator) { StringBuilder result = new StringBuilder(); if (strings == null) { return result.toString(); } for (String s : strings) { if (result.length() != 0) { result.append(separator); } result.append(s); } return result.toString(); } protected abstract void generateIds(); }