/**
  *
  * @param array $entry
  * @param array $columns
  * @param tx_rnbase_util_FormTool $formTool
  * @param Tx_Rnbase_Domain_Model_DataInterface $options
  * @return array
  */
 protected static function prepareRow($entry, $columns, $formTool, $options)
 {
     $record = $entry;
     if ($entry instanceof Tx_Rnbase_Domain_Model_DataInterface) {
         $record = $entry->getProperty();
     }
     if ($entry instanceof Tx_Rnbase_Domain_Model_RecordInterface) {
         $record = $entry->getRecord();
     }
     $row = array();
     if ($options->getCheckbox() !== NULL) {
         $checkName = $options->getCheckboxname() ? $options->getCheckboxname() : 'checkEntry';
         $dontcheck = is_array($options->getDontcheck()) ? $options->getDontcheck() : array();
         // Check if entry is checkable
         if (!array_key_exists($record['uid'], $dontcheck)) {
             $row[] = $formTool->createCheckbox($checkName . '[]', $record['uid']);
         } else {
             $row[] = '<img' . Tx_Rnbase_Backend_Utility_Icons::skinImg($GLOBALS['BACK_PATH'], 'gfx/zoom2.gif', 'width="11" height="12"') . ' title="Info: ' . $dontcheck[$record['uid']] . '" border="0" alt="" />';
         }
     }
     if ($options->getAddRecordSprite()) {
         $spriteIconName = 'mimetypes-other-other';
         if ($entry instanceof Tx_Rnbase_Domain_Model_RecordInterface && $entry->getTableName()) {
             $spriteIconName = Tx_Rnbase_Backend_Utility_Icons::mapRecordTypeToSpriteIconName($entry->getTableName(), $record);
         }
         $row[] = tx_rnbase_mod_Util::getSpriteIcon($spriteIconName);
     }
     reset($columns);
     foreach ($columns as $column => $data) {
         // Hier erfolgt die Ausgabe der Daten für die Tabelle. Wenn eine method angegeben
         // wurde, dann muss das Entry als Objekt vorliegen. Es wird dann die entsprechende
         // Methode aufgerufen. Es kann auch ein Decorator-Objekt gesetzt werden. Dann wird
         // von diesem die Methode format aufgerufen und der Wert, sowie der Name der aktuellen
         // Spalte übergeben. Ist nichts gesetzt wird einfach der aktuelle Wert verwendet.
         if (isset($data['method'])) {
             $row[] = call_user_func(array($entry, $data['method']));
         } elseif (isset($data['decorator'])) {
             $decor = $data['decorator'];
             $row[] = $decor->format($record[$column], $column, $record, $entry);
         } else {
             $row[] = $record[$column];
         }
     }
     if ($options->getLinker()) {
         $row[] = self::addLinker($options, $entry, $formTool);
     }
     return $row;
 }