package org.ovirt.engine.ui.webadmin.section.main.view.tab;
import org.ovirt.engine.core.common.businessentities.StorageDomainSharedStatus;
import org.ovirt.engine.core.common.businessentities.StorageDomainType;
import org.ovirt.engine.core.common.businessentities.StorageFormatType;
import org.ovirt.engine.core.common.businessentities.StorageType;
import org.ovirt.engine.core.common.businessentities.storage_domains;
import org.ovirt.engine.ui.uicommonweb.UICommand;
import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel;
import org.ovirt.engine.ui.webadmin.idhandler.ElementIdHandler;
import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabStoragePresenter;
import org.ovirt.engine.ui.webadmin.section.main.view.AbstractMainTabWithDetailsTableView;
import org.ovirt.engine.ui.webadmin.uicommon.model.MainModelProvider;
import org.ovirt.engine.ui.webadmin.widget.action.UiCommandButtonDefinition;
import org.ovirt.engine.ui.webadmin.widget.table.column.DiskSizeColumn;
import org.ovirt.engine.ui.webadmin.widget.table.column.EnumColumn;
import org.ovirt.engine.ui.webadmin.widget.table.column.StorageDomainSharedStatusColumn;
import org.ovirt.engine.ui.webadmin.widget.table.column.TextColumnWithTooltip;
import com.google.gwt.core.client.GWT;
import com.google.inject.Inject;
public class MainTabStorageView extends AbstractMainTabWithDetailsTableView<storage_domains, StorageListModel> implements MainTabStoragePresenter.ViewDef {
interface ViewIdHandler extends ElementIdHandler<MainTabStorageView> {
ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
}
@Inject
public MainTabStorageView(MainModelProvider<storage_domains, StorageListModel> modelProvider) {
super(modelProvider);
ViewIdHandler.idHandler.generateAndSetIds(this);
initTable();
initWidget(getTable());
}
void initTable() {
getTable().addColumn(new StorageDomainSharedStatusColumn(), "", "30px");
TextColumnWithTooltip<storage_domains> nameColumn = new TextColumnWithTooltip<storage_domains>() {
@Override
public String getValue(storage_domains object) {
return object.getstorage_name();
}
};
getTable().addColumn(nameColumn, "Domain Name");
TextColumnWithTooltip<storage_domains> domainTypeColumn = new EnumColumn<storage_domains, StorageDomainType>() {
@Override
protected StorageDomainType getRawValue(storage_domains object) {
return object.getstorage_domain_type();
}
};
getTable().addColumn(domainTypeColumn, "Domain Type");
TextColumnWithTooltip<storage_domains> storageTypeColumn = new EnumColumn<storage_domains, StorageType>() {
@Override
protected StorageType getRawValue(storage_domains object) {
return object.getstorage_type();
}
};
getTable().addColumn(storageTypeColumn, "Storage Type");
TextColumnWithTooltip<storage_domains> formatColumn = new EnumColumn<storage_domains, StorageFormatType>() {
@Override
protected StorageFormatType getRawValue(storage_domains object) {
return object.getStorageFormat();
}
};
getTable().addColumn(formatColumn, "Format");
TextColumnWithTooltip<storage_domains> crossDataCenterStatusColumn =
new EnumColumn<storage_domains, StorageDomainSharedStatus>() {
@Override
protected StorageDomainSharedStatus getRawValue(storage_domains object) {
return object.getstorage_domain_shared_status();
}
};
getTable().addColumn(crossDataCenterStatusColumn, "Cross Data-Center Status");
DiskSizeColumn<storage_domains> freeSpaceColumn = new DiskSizeColumn<storage_domains>() {
@Override
public Long getRawValue(storage_domains object) {
long availableDiskSize = object.getavailable_disk_size() != null ? object.getavailable_disk_size() : 0;
return (long) (availableDiskSize * Math.pow(1024, 3));
}
};
getTable().addColumn(freeSpaceColumn, "Free Space");
getTable().addActionButton(new UiCommandButtonDefinition<storage_domains>("New Domain") {
@Override
protected UICommand resolveCommand() {
return getMainModel().getNewDomainCommand();
}
});
getTable().addActionButton(new UiCommandButtonDefinition<storage_domains>("Import Domain") {
@Override
protected UICommand resolveCommand() {
return getMainModel().getImportDomainCommand();
}
});
getTable().addActionButton(new UiCommandButtonDefinition<storage_domains>("Edit") {
@Override
protected UICommand resolveCommand() {
return getMainModel().getEditCommand();
}
});
getTable().addActionButton(new UiCommandButtonDefinition<storage_domains>("Remove") {
@Override
protected UICommand resolveCommand() {
return getMainModel().getRemoveCommand();
}
});
getTable().addActionButton(new UiCommandButtonDefinition<storage_domains>("Destroy", true) {
@Override
protected UICommand resolveCommand() {
return getMainModel().getDestroyCommand();
}
});
}
}