summaryrefslogtreecommitdiff
path: root/includes/js/dojox/grid/_data/dijitEditors.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/grid/_data/dijitEditors.js')
-rw-r--r--includes/js/dojox/grid/_data/dijitEditors.js170
1 files changed, 170 insertions, 0 deletions
diff --git a/includes/js/dojox/grid/_data/dijitEditors.js b/includes/js/dojox/grid/_data/dijitEditors.js
new file mode 100644
index 0000000..695de44
--- /dev/null
+++ b/includes/js/dojox/grid/_data/dijitEditors.js
@@ -0,0 +1,170 @@
+if(!dojo._hasResource["dojox.grid._data.dijitEditors"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.grid._data.dijitEditors"] = true;
+dojo.provide("dojox.grid._data.dijitEditors");
+dojo.require("dojox.grid._data.editors");
+dojo.require("dijit.form.DateTextBox");
+dojo.require("dijit.form.TimeTextBox");
+dojo.require("dijit.form.ComboBox");
+dojo.require("dojo.data.ItemFileReadStore");
+dojo.require("dijit.form.CheckBox");
+dojo.require("dijit.form.TextBox");
+dojo.require("dijit.form.NumberSpinner");
+dojo.require("dijit.form.NumberTextBox");
+dojo.require("dijit.form.CurrencyTextBox");
+dojo.require("dijit.form.Slider");
+dojo.require("dijit.Editor");
+
+dojo.declare("dojox.grid.editors.Dijit", dojox.grid.editors.base, {
+ editorClass: "dijit.form.TextBox",
+ constructor: function(inCell){
+ this.editor = null;
+ this.editorClass = dojo.getObject(this.cell.editorClass || this.editorClass);
+ },
+ format: function(inDatum, inRowIndex){
+ this.needFormatNode(inDatum, inRowIndex);
+ return "<div></div>";
+ },
+ getValue: function(inRowIndex){
+ return this.editor.getValue();
+ },
+ setValue: function(inRowIndex, inValue){
+ if(this.editor&&this.editor.setValue){
+ this.editor.setValue(inValue);
+ }else{
+ this.inherited(arguments);
+ }
+ },
+ getEditorProps: function(inDatum){
+ return dojo.mixin({}, this.cell.editorProps||{}, {
+ constraints: dojo.mixin({}, this.cell.constraint) || {}, //TODO: really just for ValidationTextBoxes
+ value: inDatum
+ });
+ },
+ createEditor: function(inNode, inDatum, inRowIndex){
+ return new this.editorClass(this.getEditorProps(inDatum), inNode);
+
+ },
+ attachEditor: function(inNode, inDatum, inRowIndex){
+ inNode.appendChild(this.editor.domNode);
+ this.setValue(inRowIndex, inDatum);
+ },
+ formatNode: function(inNode, inDatum, inRowIndex){
+ if(!this.editorClass){
+ return inDatum;
+ }
+ if(!this.editor){
+ this.editor = this.createEditor.apply(this, arguments);
+ }else{
+ this.attachEditor.apply(this, arguments);
+ }
+ this.sizeEditor.apply(this, arguments);
+ this.cell.grid.rowHeightChanged(inRowIndex);
+ this.focus();
+ },
+ sizeEditor: function(inNode, inDatum, inRowIndex){
+ var
+ p = this.cell.getNode(inRowIndex),
+ box = dojo.contentBox(p);
+ dojo.marginBox(this.editor.domNode, {w: box.w});
+ },
+ focus: function(inRowIndex, inNode){
+ if(this.editor){
+ setTimeout(dojo.hitch(this.editor, function(){
+ dojox.grid.fire(this, "focus");
+ }), 0);
+ }
+ },
+ _finish: function(inRowIndex){
+ this.inherited(arguments);
+ dojox.grid.removeNode(this.editor.domNode);
+ }
+});
+
+dojo.declare("dojox.grid.editors.ComboBox", dojox.grid.editors.Dijit, {
+ editorClass: "dijit.form.ComboBox",
+ getEditorProps: function(inDatum){
+ var items=[];
+ dojo.forEach(this.cell.options, function(o){
+ items.push({name: o, value: o});
+ });
+ var store = new dojo.data.ItemFileReadStore({data: {identifier:"name", items: items}});
+ return dojo.mixin({}, this.cell.editorProps||{}, {
+ value: inDatum,
+ store: store
+ });
+ },
+ getValue: function(){
+ var e = this.editor;
+ // make sure to apply the displayed value
+ e.setDisplayedValue(e.getDisplayedValue());
+ return e.getValue();
+ }
+});
+
+dojo.declare("dojox.grid.editors.DateTextBox", dojox.grid.editors.Dijit, {
+ editorClass: "dijit.form.DateTextBox",
+ setValue: function(inRowIndex, inValue){
+ if(this.editor){
+ this.editor.setValue(new Date(inValue));
+ }else{
+ this.inherited(arguments);
+ }
+ },
+ getEditorProps: function(inDatum){
+ return dojo.mixin(this.inherited(arguments), {
+ value: new Date(inDatum)
+ });
+ }
+});
+
+
+dojo.declare("dojox.grid.editors.CheckBox", dojox.grid.editors.Dijit, {
+ editorClass: "dijit.form.CheckBox",
+ getValue: function(){
+ return this.editor.checked;
+ },
+ setValue: function(inRowIndex, inValue){
+ if(this.editor&&this.editor.setAttribute){
+ this.editor.setAttribute("checked", inValue);
+ }else{
+ this.inherited(arguments);
+ }
+ },
+ sizeEditor: function(inNode, inDatum, inRowIndex){
+ return;
+ }
+});
+
+
+dojo.declare("dojox.grid.editors.Editor", dojox.grid.editors.Dijit, {
+ editorClass: "dijit.Editor",
+ getEditorProps: function(inDatum){
+ return dojo.mixin({}, this.cell.editorProps||{}, {
+ height: this.cell.editorHeight || "100px"
+ });
+ },
+ createEditor: function(inNode, inDatum, inRowIndex){
+ // editor needs its value set after creation
+ var editor = new this.editorClass(this.getEditorProps(inDatum), inNode);
+ dojo.connect(editor, 'onLoad', dojo.hitch(this, 'populateEditor'));
+ return editor;
+ },
+ formatNode: function(inNode, inDatum, inRowIndex){
+ this.content = inDatum;
+ this.inherited(arguments);
+ if(dojo.isMoz){
+ // FIXME: seem to need to reopen the editor and display the toolbar
+ var e = this.editor;
+ e.open();
+ if(this.cell.editorToolbar){
+ dojo.place(e.toolbar.domNode, e.editingArea, "before");
+ }
+ }
+ },
+ populateEditor: function(){
+ this.editor.setValue(this.content);
+ this.editor.placeCursorAtEnd();
+ }
+});
+
+}