public function ColumnsList()
    {
        $list = new ArrayList();

        foreach ($this->columns as $key => $column) {
            $header     = $this->array_get($column, self::KEY_HEADER);
            $required   = $this->array_get($column, self::KEY_REQUIRED);
            $type       = $this->array_get($column, self::KEY_TYPE,
                self::TYPE_TEXT);
            $values     = $this->array_get($column, self::KEY_OPTIONS);
            $valuesList = null;

            $size = null;

            if ($type == self::TYPE_CURRENCY) {
                $type = 'text';
                $size = 7;
            }

            if ($values && is_array($values)) {
                $valuesList = new ArrayList();
                foreach ($values as $k => $v) {
                    $valuesList->push(new ArrayData(array('Name' => $k, 'Value' => $v)));
                }
            }

            $rowData = array(
                'Key' => $key,
                'Size' => $size,
                'Header' => $header,
                'Values' => $valuesList,
                'Type' => $type,
                'Required' => $required ? 'true' : 'false'
            );
            $list->push(new ArrayData($rowData));
        }
        return $list;
    }