@qooxdoo/framework
Version:
The JS Framework for Coders
173 lines (150 loc) • 4.17 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2007-2008 Derrell Lipman
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Derrell Lipman (derrell)
************************************************************************ */
/**
* Column width array for a whole set of columns
*/
qx.Class.define("qx.ui.progressive.renderer.table.Widths",
{
extend : qx.core.Object,
/**
* @param numColumns {Integer}
* The number of columns being used.
*/
construct : function(numColumns)
{
this.base(arguments);
// Create an array of the specified number of columns, and use the default
// column data.
this.__columnData = [ ];
for (var i = 0; i < numColumns; i++)
{
this.__columnData[i] = new qx.ui.core.ColumnData();
}
},
members :
{
__columnData : null,
/**
* Get the array of column data.
*
* @return {Array}
* Array of column data
*
*/
getData : function()
{
return this.__columnData;
},
/**
* Set the width, minimum width and/or maximum width of a column at one
* time.
*
* @param column {Integer}
* The column number whose attributes are being set.
*
* @param map {Map}
* An object with any or all of the three members, "width", "minWidth",
* "maxWidth". The property values are as described for {@link
* #setWidth}, {@link #setMinWidth} and {@link #setMaxWidth}
* respectively.
*
*/
set : function(column, map)
{
for (var key in map)
{
switch(key)
{
case "width":
this.setWidth(column, map[key]);
break;
case "minWidth":
this.setMinWidth(column, map[key]);
break;
case "maxWidth":
this.setMaxWidth(column, map[key]);
break;
default:
throw new Error("Unrecognized key: " + key);
}
}
},
/**
* Set the width of a column.
*
*
* @param column {Integer} The column whose width is to be set
*
* @param width {Integer|String}
* The width of the specified column. The width may be specified as
* integer number of pixels (e.g. 100), a string representing percentage
* of the inner width of the Table (e.g. "25%"), or a string
* representing a flex width (e.g. "1*").
*
*
* @throws {Error}
* Error is thrown if the provided column number is out of the range.
*/
setWidth : function(column, width)
{
if (column > this.__columnData.length - 1 || column < 0)
{
throw new Error("Column number out of range");
}
this.__columnData[column].setColumnWidth(width);
},
/**
* Set the minimum width of a column.
*
*
* @param column {Integer}
* The column whose minimum width is to be set
*
* @param width {Integer}
* The minimum width of the specified column.
*
*
* @throws {Error}
* Error is thrown if the provided column number is out of the range.
*/
setMinWidth : function(column, width)
{
if (column > this.__columnData.length - 1 || column < 0)
{
throw new Error("Column number out of range");
}
this.__columnData[column].setMinWidth(width);
},
/**
* Set the maximum width of a column.
*
*
* @param column {Integer}
* The column whose maximum width is to be set
*
* @param width {Integer}
* The maximum width of the specified column.
*
*
* @throws {Error}
* Error is thrown if the provided column number is out of the range.
*/
setMaxWidth : function(column, width)
{
if (column > this.__columnData.length - 1 || column < 0)
{
throw new Error("Column number out of range");
}
this.__columnData[column].setMaxWidth(width);
}
}
});