New file |
0,0 → 1,75 |
if(!dojo._hasResource["dojox.grid._grid.layout"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. |
dojo._hasResource["dojox.grid._grid.layout"] = true; |
dojo.provide("dojox.grid._grid.layout"); |
dojo.require("dojox.grid._grid.cell"); |
|
dojo.declare("dojox.grid.layout", null, { |
// summary: |
// Controls grid cell layout. Owned by grid and used internally. |
constructor: function(inGrid){ |
this.grid = inGrid; |
}, |
// flat array of grid cells |
cells: null, |
// structured array of grid cells |
structure: null, |
// default cell width |
defaultWidth: '6em', |
// methods |
setStructure: function(inStructure){ |
this.fieldIndex = 0; |
this.cells = []; |
var s = this.structure = []; |
for(var i=0, viewDef, rows; (viewDef=inStructure[i]); i++){ |
s.push(this.addViewDef(viewDef)); |
} |
this.cellCount = this.cells.length; |
}, |
addViewDef: function(inDef){ |
this._defaultCellProps = inDef.defaultCell || {}; |
return dojo.mixin({}, inDef, {rows: this.addRowsDef(inDef.rows || inDef.cells)}); |
}, |
addRowsDef: function(inDef){ |
var result = []; |
for(var i=0, row; inDef && (row=inDef[i]); i++){ |
result.push(this.addRowDef(i, row)); |
} |
return result; |
}, |
addRowDef: function(inRowIndex, inDef){ |
var result = []; |
for(var i=0, def, cell; (def=inDef[i]); i++){ |
cell = this.addCellDef(inRowIndex, i, def); |
result.push(cell); |
this.cells.push(cell); |
} |
return result; |
}, |
addCellDef: function(inRowIndex, inCellIndex, inDef){ |
var w = 0; |
if(inDef.colSpan > 1){ |
w = 0; |
}else if(!isNaN(inDef.width)){ |
w = inDef.width + "em"; |
}else{ |
w = inDef.width || this.defaultWidth; |
} |
// fieldIndex progresses linearly from the last indexed field |
// FIXME: support generating fieldIndex based a text field name (probably in Grid) |
var fieldIndex = inDef.field != undefined ? inDef.field : (inDef.get ? -1 : this.fieldIndex); |
if((inDef.field != undefined) || !inDef.get){ |
this.fieldIndex = (inDef.field > -1 ? inDef.field : this.fieldIndex) + 1; |
} |
return new dojox.grid.cell( |
dojo.mixin({}, this._defaultCellProps, inDef, { |
grid: this.grid, |
subrow: inRowIndex, |
layoutIndex: inCellIndex, |
index: this.cells.length, |
fieldIndex: fieldIndex, |
unitWidth: w |
})); |
} |
}); |
|
} |