summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SimpleTableModel.js
diff options
context:
space:
mode:
Diffstat (limited to 'webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SimpleTableModel.js')
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SimpleTableModel.js335
1 files changed, 0 insertions, 335 deletions
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SimpleTableModel.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SimpleTableModel.js
deleted file mode 100644
index ef6ef2fecc..0000000000
--- a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SimpleTableModel.js
+++ /dev/null
@@ -1,335 +0,0 @@
-/* ************************************************************************
-
- qooxdoo - the new era of web development
-
- http://qooxdoo.org
-
- Copyright:
- 2006 by STZ-IDA, Germany, http://www.stz-ida.de
-
- License:
- LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
-
- Authors:
- * Til Schneider (til132)
-
-************************************************************************ */
-
-/* ************************************************************************
-
-#module(ui_table)
-
-************************************************************************ */
-
-/**
- * A simple table model that provides an API for changing the model data.
- */
-qx.OO.defineClass("qx.ui.table.SimpleTableModel", qx.ui.table.AbstractTableModel,
-function() {
- qx.ui.table.AbstractTableModel.call(this);
-
- this._rowArr = [];
- this._sortColumnIndex = -1;
- this._sortAscending;
-
- this._editableColArr = null;
-});
-
-
-/**
- * <p>See overridden method for details.</p>
- *
- * @param rowIndex {int} the model index of the row.
- * @return {Array} Array containing a value for each column.
- */
-qx.Proto.getRowData = function(rowIndex) {
- return this._rowArr[rowIndex];
-};
-
-
-/**
- * Returns the data of one row as map containing the column IDs as key and the
- * cell values as value.
- *
- * @param rowIndex {int} the model index of the row.
- * @return {Map} a Map containing the column values.
- */
-qx.Proto.getRowDataAsMap = function(rowIndex) {
- var columnArr = this._rowArr[rowIndex];
- var map = {};
- for (var col = 0; col < this.getColumnCount(); col++) {
- map[this.getColumnId(col)] = columnArr[col];
- }
- return map;
-};
-
-
-/**
- * Sets all columns editable or not editable.
- *
- * @param editable {boolean} whether all columns are editable.
- */
-qx.Proto.setEditable = function(editable) {
- this._editableColArr = [];
- for (var col = 0; col < this.getColumnCount(); col++) {
- this._editableColArr[col] = editable;
- }
-
- this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
-}
-
-
-/**
- * Sets whether a column is editable.
- *
- * @param columnIndex {int} the column of which to set the editable state.
- * @param editable {boolean} whether the column should be editable.
- */
-qx.Proto.setColumnEditable = function(columnIndex, editable) {
- if (editable != this.isColumnEditable(columnIndex)) {
- if (this._editableColArr == null) {
- this._editableColArr = [];
- }
- this._editableColArr[columnIndex] = editable;
-
- this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
- }
-}
-
-
-// overridden
-qx.Proto.isColumnEditable = function(columnIndex) {
- return this._editableColArr ? (this._editableColArr[columnIndex] == true) : false;
-}
-
-
-// overridden
-qx.Proto.isColumnSortable = function(columnIndex) {
- return true;
-}
-
-
-// overridden
-qx.Proto.sortByColumn = function(columnIndex, ascending) {
- // NOTE: We use different comperators for ascending and descending,
- // because comperators should be really fast.
- var comperator;
- if (ascending) {
- comperator = function(row1, row2) {
- var obj1 = row1[columnIndex];
- var obj2 = row2[columnIndex];
- return (obj1 > obj2) ? 1 : ((obj1 == obj2) ? 0 : -1);
- }
- } else {
- comperator = function(row1, row2) {
- var obj1 = row1[columnIndex];
- var obj2 = row2[columnIndex];
- return (obj1 < obj2) ? 1 : ((obj1 == obj2) ? 0 : -1);
- }
- }
-
- this._rowArr.sort(comperator);
-
- this._sortColumnIndex = columnIndex;
- this._sortAscending = ascending;
-
- this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
-}
-
-
-/**
- * Clears the sorting.
- */
-qx.Proto._clearSorting = function() {
- if (this._sortColumnIndex != -1) {
- this._sortColumnIndex = -1;
- this._sortAscending = true;
-
- this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
- }
-}
-
-
-// overridden
-qx.Proto.getSortColumnIndex = function() {
- return this._sortColumnIndex;
-}
-
-
-// overridden
-qx.Proto.isSortAscending = function() {
- return this._sortAscending;
-}
-
-
-// overridden
-qx.Proto.getRowCount = function() {
- return this._rowArr.length;
-}
-
-
-// overridden
-qx.Proto.getValue = function(columnIndex, rowIndex) {
- if (rowIndex < 0 || rowIndex >= this._rowArr.length) {
- throw new Error("this._rowArr out of bounds: " + rowIndex + " (0.." + this._rowArr.length + ")");
- }
-
- return this._rowArr[rowIndex][columnIndex];
-}
-
-
-// overridden
-qx.Proto.setValue = function(columnIndex, rowIndex, value) {
- if (this._rowArr[rowIndex][columnIndex] != value) {
- this._rowArr[rowIndex][columnIndex] = value;
-
- // Inform the listeners
- if (this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
- var data = { firstRow:rowIndex, lastRow:rowIndex,
- firstColumn:columnIndex, lastColumn:columnIndex }
- this.dispatchEvent(new qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, data), true);
- }
-
- if (columnIndex == this._sortColumnIndex) {
- this._clearSorting();
- }
- }
-}
-
-
-/**
- * Sets the whole data in a bulk.
- *
- * @param rowArr {var[][]} An array containing an array for each row. Each
- * row-array contains the values in that row in the order of the columns
- * in this model.
- */
-qx.Proto.setData = function(rowArr) {
- this._rowArr = rowArr;
-
- // Inform the listeners
- if (this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
- this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED);
- }
-
- this._clearSorting();
-}
-
-
-/**
- * Returns the data of this model.
- * <p>
- * Warning: Do not alter this array! If you want to change the data use
- * {@link #setData}, {@link #setDataAsMapArray} or {@link #setValue} instead.
- *
- * @return {var[][]} An array containing an array for each row. Each
- * row-array contains the values in that row in the order of the columns
- * in this model.
- */
-qx.Proto.getData = function() {
- return this._rowArr;
-};
-
-
-/**
- * Sets the whole data in a bulk.
- *
- * @param mapArr {Map[]} An array containing a map for each row. Each
- * row-map contains the column IDs as key and the cell values as value.
- */
-qx.Proto.setDataAsMapArray = function(mapArr) {
- this.setData(this._mapArray2RowArr(mapArr));
-};
-
-
-/**
- * Adds some rows to the model.
- * <p>
- * Warning: The given array will be altered!
- *
- * @param rowArr {var[][]} An array containing an array for each row. Each
- * row-array contains the values in that row in the order of the columns
- * in this model.
- * @param startIndex {int ? null} The index where to insert the new rows. If null,
- * the rows are appended to the end.
- */
-qx.Proto.addRows = function(rowArr, startIndex) {
- if (startIndex == null) {
- startIndex = this._rowArr.length;
- }
-
- // Prepare the rowArr so it can be used for apply
- rowArr.splice(0, 0, startIndex, 0);
-
- // Insert the new rows
- Array.prototype.splice.apply(this._rowArr, rowArr);
-
- // Inform the listeners
- if (this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
- var data = { firstRow:startIndex, lastRow:this._rowArr.length - 1, firstColumn:0, lastColumn:this.getColumnCount() - 1 };
- this.dispatchEvent(new qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, data), true);
- }
-
- this._clearSorting();
-};
-
-
-/**
- * Adds some rows to the model.
- * <p>
- * Warning: The given array (mapArr) will be altered!
- *
- * @param mapArr {Map[]} An array containing a map for each row. Each
- * row-map contains the column IDs as key and the cell values as value.
- * @param startIndex {int ? null} The index where to insert the new rows. If null,
- * the rows are appended to the end.
- */
-qx.Proto.addRowsAsMapArray = function(mapArr, startIndex) {
- this.addRows(this._mapArray2RowArr(mapArr), startIndex);
-};
-
-
-/**
- * Removes some rows from the model.
- *
- * @param startIndex {int} the index of the first row to remove.
- * @param howMany {int} the number of rows to remove.
- */
-qx.Proto.removeRows = function(startIndex, howMany) {
- this._rowArr.splice(startIndex, howMany);
-
- // Inform the listeners
- if (this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
- var data = { firstRow:startIndex, lastRow:this._rowArr.length - 1, firstColumn:0, lastColumn:this.getColumnCount() - 1 };
- this.dispatchEvent(new qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, data), true);
- }
-
- this._clearSorting();
-};
-
-
-/**
- * Creates an array of maps to an array of arrays.
- *
- * @param mapArr {Map[]} An array containing a map for each row. Each
- * row-map contains the column IDs as key and the cell values as value.
- * @return {var[][]} An array containing an array for each row. Each
- * row-array contains the values in that row in the order of the columns
- * in this model.
- */
-qx.Proto._mapArray2RowArr = function(mapArr) {
- var rowCount = mapArr.length;
- var columnCount = this.getColumnCount();
- var dataArr = new Array(rowCount);
- var columnArr;
- var j;
- for (var i = 0; i < rowCount; ++i) {
- columnArr = new Array(columnCount);
- for (var j = 0; j < columnCount; ++j) {
- columnArr[j] = mapArr[i][this.getColumnId(j)];
- }
- dataArr[i] = columnArr;
- }
-
- return dataArr;
-};