44 private $columnWidths;
45 private $containedViews;
46 private $containerWrapperTag;
52 public function __construct($rows, $columns, $containerWrapperTag =
'div',
53 $makeDefaultClassesFromClassHeirarchy =
true)
55 assert(
'is_int($rows) && $rows > 0');
56 assert(
'is_int($columns) && $columns > 0');
57 assert(
'is_string($containerWrapperTag) || $containerWrapperTag == null');
58 assert(
'is_bool($makeDefaultClassesFromClassHeirarchy)');
60 $this->columns = $columns;
61 $this->columnWidths = array_pad(array(), $columns, 0);
63 for ($row = 0; $row < $rows; $row++)
65 $this->containedViews[] = array_pad(array(), $columns, null);
67 $this->containerWrapperTag = $containerWrapperTag;
68 $this->makeDefaultClassesFromClassHeirarchy = $makeDefaultClassesFromClassHeirarchy;
87 return $this->containerWrapperTag;
96 assert(
'is_int($row) && $row >= 0 && $row < $this->rows');
97 assert(
'is_int($column) && $column >= 0 && $column < $this->columns');
98 $this->containedViews[$row][$column] = $view;
106 assert(
'is_int($column) && $column >= 0 && $column < $this->columns');
107 assert(
'is_int($width) && $width > 0');
108 $this->columnWidths[$column] = $width;
111 protected function renderContent()
118 for ($row = 0; $row < $this->rows; $row++)
125 $totalColumnsWidth = null;
126 for ($column = 0; $column < $this->columns; $column++)
128 $columnContent = null;
129 if ($this->columns > 1)
132 if ($column < $this->columns - 1)
134 $styles[] =
'float: left;';
136 if (isset($totalColumnsWidth))
138 $styles[] =
"margin-left: {$totalColumnsWidth}px;";
140 if ($this->columnWidths[$column] > 0)
142 $styles[] =
'width: ' . $this->columnWidths[$column] .
'px;';
143 $totalColumnsWidth += $this->columnWidths[$column];
145 if (count($styles) > 0)
155 $columnContent .= $this->containedViews[$row][$column]->render();
156 if ($this->columns > 1)
160 $rowContent .= $columnContent;
166 $content .= $rowContent;
setView(View $view, $row, $column)
__construct($rows, $columns, $containerWrapperTag= 'div', $makeDefaultClassesFromClassHeirarchy=true)
setColumnWidth($column, $width)