@Override
  public void UpdateItemsAvailability() {
    super.UpdateItemsAvailability();

    storage_pool dataCenter = (storage_pool) getModel().getDataCenter().getSelectedItem();

    for (IStorageModel item : Linq.<IStorageModel>Cast(getModel().getItems())) {
      Model model = (Model) item;

      storage_domains isoStorage = DataProvider.GetIsoDomainByDataCenterId(dataCenter.getId());
      storage_domains exportStorage =
          DataProvider.GetExportDomainByDataCenterId(dataCenter.getId());

      // available type/function items are:
      // all in case of Unassigned DC.
      // ISO in case the specified DC doesn't have an attached ISO domain.
      // Export in case the specified DC doesn't have an attached export domain.
      model.setIsSelectable(
          (dataCenter.getId().equals(StorageModel.UnassignedDataCenterId)
              || (item.getRole() == StorageDomainType.ISO && isoStorage == null)
              || (item.getRole() == StorageDomainType.ImportExport && exportStorage == null)));
    }
  }