Blame | Last modification | View Log | RSS feed
if(!dojo._hasResource["dojox.grid._data.editors"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.grid._data.editors"] = true;dojo.provide("dojox.grid._data.editors");dojo.provide("dojox.grid.editors");dojo.declare("dojox.grid.editors.Base", null, {// summary:// base grid editor class. Other grid editors should inherited from this class.constructor: function(inCell){this.cell = inCell;},//private_valueProp: "value",_formatPending: false,format: function(inDatum, inRowIndex){// summary:// formats the cell for editing// inDatum: anything// cell data to edit// inRowIndex: int// grid row index// returns: string of html to place in grid cell},//protectedneedFormatNode: function(inDatum, inRowIndex){this._formatPending = true;dojox.grid.whenIdle(this, "_formatNode", inDatum, inRowIndex);},cancelFormatNode: function(){this._formatPending = false;},//private_formatNode: function(inDatum, inRowIndex){if(this._formatPending){this._formatPending = false;// make cell selectabledojo.setSelectable(this.cell.grid.domNode, true);this.formatNode(this.getNode(inRowIndex), inDatum, inRowIndex);}},//protectedgetNode: function(inRowIndex){return (this.cell.getNode(inRowIndex) || 0).firstChild || 0;},formatNode: function(inNode, inDatum, inRowIndex){// summary:// format the editing dom node. Use when editor is a widget.// inNode: dom node// dom node for the editor// inDatum: anything// cell data to edit// inRowIndex: int// grid row indexif(dojo.isIE){// IE sux baddojox.grid.whenIdle(this, "focus", inRowIndex, inNode);}else{this.focus(inRowIndex, inNode);}},dispatchEvent: function(m, e){if(m in this){return this[m](e);}},//publicgetValue: function(inRowIndex){// summary:// returns value entered into editor// inRowIndex: int// grid row index// returns:// value of editorreturn this.getNode(inRowIndex)[this._valueProp];},setValue: function(inRowIndex, inValue){// summary:// set the value of the grid editor// inRowIndex: int// grid row index// inValue: anything// value of editorvar n = this.getNode(inRowIndex);if(n){n[this._valueProp] = inValue};},focus: function(inRowIndex, inNode){// summary:// focus the grid editor// inRowIndex: int// grid row index// inNode: dom node// editor nodedojox.grid.focusSelectNode(inNode || this.getNode(inRowIndex));},save: function(inRowIndex){// summary:// save editor state// inRowIndex: int// grid row indexthis.value = this.value || this.getValue(inRowIndex);//console.log("save", this.value, inCell.index, inRowIndex);},restore: function(inRowIndex){// summary:// restore editor state// inRowIndex: int// grid row indexthis.setValue(inRowIndex, this.value);//console.log("restore", this.value, inCell.index, inRowIndex);},//protected_finish: function(inRowIndex){// summary:// called when editing is completed to clean up editor// inRowIndex: int// grid row indexdojo.setSelectable(this.cell.grid.domNode, false);this.cancelFormatNode(this.cell);},//publicapply: function(inRowIndex){// summary:// apply edit from cell editor// inRowIndex: int// grid row indexthis.cell.applyEdit(this.getValue(inRowIndex), inRowIndex);this._finish(inRowIndex);},cancel: function(inRowIndex){// summary:// cancel cell edit// inRowIndex: int// grid row indexthis.cell.cancelEdit(inRowIndex);this._finish(inRowIndex);}});dojox.grid.editors.base = dojox.grid.editors.Base; // back-compatdojo.declare("dojox.grid.editors.Input", dojox.grid.editors.Base, {// summary// grid cell editor that provides a standard text input boxconstructor: function(inCell){this.keyFilter = this.keyFilter || this.cell.keyFilter;},// keyFilter: object// optional regex for disallowing keypresseskeyFilter: null,format: function(inDatum, inRowIndex){this.needFormatNode(inDatum, inRowIndex);return '<input class="dojoxGrid-input" type="text" value="' + inDatum + '">';},formatNode: function(inNode, inDatum, inRowIndex){this.inherited(arguments);// FIXME: feels too specific for this interfacethis.cell.registerOnBlur(inNode, inRowIndex);},doKey: function(e){if(this.keyFilter){var key = String.fromCharCode(e.charCode);if(key.search(this.keyFilter) == -1){dojo.stopEvent(e);}}},_finish: function(inRowIndex){this.inherited(arguments);var n = this.getNode(inRowIndex);try{dojox.grid.fire(n, "blur");}catch(e){}}});dojox.grid.editors.input = dojox.grid.editors.Input; // back compatdojo.declare("dojox.grid.editors.Select", dojox.grid.editors.Input, {// summary:// grid cell editor that provides a standard select// options: text of each item// values: value for each item// returnIndex: editor returns only the index of the selected option and not the valueconstructor: function(inCell){this.options = this.options || this.cell.options;this.values = this.values || this.cell.values || this.options;},format: function(inDatum, inRowIndex){this.needFormatNode(inDatum, inRowIndex);var h = [ '<select class="dojoxGrid-select">' ];for (var i=0, o, v; (o=this.options[i])&&(v=this.values[i]); i++){h.push("<option", (inDatum==o ? ' selected' : ''), /*' value="' + v + '"',*/ ">", o, "</option>");}h.push('</select>');return h.join('');},getValue: function(inRowIndex){var n = this.getNode(inRowIndex);if(n){var i = n.selectedIndex, o = n.options[i];return this.cell.returnIndex ? i : o.value || o.innerHTML;}}});dojox.grid.editors.select = dojox.grid.editors.Select; // back compatdojo.declare("dojox.grid.editors.AlwaysOn", dojox.grid.editors.Input, {// summary:// grid cell editor that is always on, regardless of grid editing state// alwaysOn: boolean// flag to use editor to format grid cell regardless of editing state.alwaysOn: true,_formatNode: function(inDatum, inRowIndex){this.formatNode(this.getNode(inRowIndex), inDatum, inRowIndex);},applyStaticValue: function(inRowIndex){var e = this.cell.grid.edit;e.applyCellEdit(this.getValue(inRowIndex), this.cell, inRowIndex);e.start(this.cell, inRowIndex, true);}});dojox.grid.editors.alwaysOn = dojox.grid.editors.AlwaysOn; // back-compatdojo.declare("dojox.grid.editors.Bool", dojox.grid.editors.AlwaysOn, {// summary:// grid cell editor that provides a standard checkbox that is always on_valueProp: "checked",format: function(inDatum, inRowIndex){return '<input class="dojoxGrid-input" type="checkbox"' + (inDatum ? ' checked="checked"' : '') + ' style="width: auto" />';},doclick: function(e){if(e.target.tagName == 'INPUT'){this.applyStaticValue(e.rowIndex);}}});dojox.grid.editors.bool = dojox.grid.editors.Bool; // back-compat}