/** * Initializes the header cell. * * This method attempts to use {@link getHeaderRenderer HeaderRenderer} to * instantiate the header cell. If that is not available, it will populate * the cell with an image or a text string, depending on {@link getHeaderImageUrl HeaderImageUrl} * and {@link getHeaderText HeaderText} property values. * * If the column allows sorting, image or text will be created as * a button which issues <b>Sort</b> command upon user click. * * @param TTableCell the cell to be initialized * @param integer the index to the Columns property that the cell resides in. */ protected function initializeHeaderCell($cell, $columnIndex) { $text = $this->getHeaderText(); if (($classPath = $this->getHeaderRenderer()) !== '') { $control = Prado::createComponent($classPath); $cell->getControls()->add($control); if ($control instanceof \Prado\IDataRenderer) { if ($control instanceof IItemDataRenderer) { $item = $cell->getParent(); $control->setItemIndex($item->getItemIndex()); $control->setItemType($item->getItemType()); } $control->setData($text); } } else { if ($this->getAllowSorting()) { $sortExpression = $this->getSortExpression(); if (($url = $this->getHeaderImageUrl()) !== '') { $button = new TImageButton(); $button->setImageUrl($url); $button->setCommandName(TDataGrid::CMD_SORT); $button->setCommandParameter($sortExpression); if ($text !== '') { $button->setAlternateText($text); } $button->setCausesValidation(false); $cell->getControls()->add($button); } else { if ($text !== '') { $button = new TLinkButton(); $button->setText($text); $button->setCommandName(TDataGrid::CMD_SORT); $button->setCommandParameter($sortExpression); $button->setCausesValidation(false); $cell->getControls()->add($button); } else { $cell->setText(' '); } } } else { if (($url = $this->getHeaderImageUrl()) !== '') { $image = new TImage(); $image->setImageUrl($url); if ($text !== '') { $image->setAlternateText($text); } $cell->getControls()->add($image); } else { if ($text !== '') { $cell->setText($text); } else { $cell->setText(' '); } } } } }