/**
  * {@inheritdoc}
  */
 public function buildRow(EntityInterface $entity)
 {
     /** @var FlagMapping $entity */
     $allLanguages = $this->languageManager->getAllDefinedLanguages();
     $id = $entity->getSource();
     $row['language'] = isset($allLanguages[$id]) ? $allLanguages[$id] : $id;
     $row['flag']['data'] = ['#theme' => 'flag', '#code' => strtolower($entity->getSource())];
     $row['info'] = $entity->getInfo();
     return $row + parent::buildRow($entity);
 }
 /**
  * Overrides Drupal\Core\Entity\EntityFormController::form().
  *
  * Builds the entity add/edit form.
  *
  * @param array $form
  *   An associative array containing the structure of the form.
  * @param FormStateInterface $form_state
  *   An instance of FormStateInterface containing the current state of the form.
  *
  * @return array
  *   An associative array containing the FlagMapping add/edit form.
  */
 public function buildForm(array $form, FormStateInterface $form_state)
 {
     // Get anything we need from the base class.
     $form = parent::buildForm($form, $form_state);
     // Drupal provides the entity to us as a class variable. If this is an
     // existing entity, it will be populated with existing values as class
     // variables. If this is a new entity, it will be a new object with the
     // class of our entity. Drupal knows which class to call from the
     // annotation on our FlagMapping class.
     /** @var FlagMapping $mapping */
     $mapping = $this->entity;
     // Build the form.
     $form['info'] = ['#type' => 'textfield', '#title' => $this->t('Info'), '#maxlength' => 255, '#default_value' => $mapping->getInfo(), '#required' => TRUE];
     $form['source'] = ['#type' => 'select', '#title' => $this->t('Language'), '#default_value' => $mapping->getSource(), '#description' => $this->t('Select a source language.'), '#options' => $this->languageManager->getAllDefinedLanguages(), '#required' => TRUE];
     $countries = \Drupal::service('country_manager')->getList();
     $form['flag'] = ['#type' => 'select', '#title' => $this->t('Flag'), '#options' => $countries, '#empty_value' => '', '#default_value' => strtoupper($mapping->getFlag()), '#description' => $this->t('Select a target territory flag.'), '#required' => TRUE];
     // Return the form.
     return $form;
 }