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();
}
});
}
}