| dojo.provide("dojo.widget.InlineEditBox"); |
| dojo.require("dojo.widget.*"); |
| dojo.require("dojo.event.*"); |
| dojo.require("dojo.lfx.*"); |
| dojo.require("dojo.gfx.color"); |
| dojo.require("dojo.string"); |
| dojo.require("dojo.html.*"); |
| dojo.require("dojo.html.layout"); |
| dojo.widget.defineWidget("dojo.widget.InlineEditBox",dojo.widget.HtmlWidget,function(){ |
| this.history=[]; |
| },{templateString:"<form class=\"inlineEditBox\" style=\"display: none\" dojoAttachPoint=\"form\" dojoAttachEvent=\"onSubmit:saveEdit; onReset:cancelEdit; onKeyUp: checkForValueChange;\">\n\t<input type=\"text\" dojoAttachPoint=\"text\" style=\"display: none;\" />\n\t<textarea dojoAttachPoint=\"textarea\" style=\"display: none;\"></textarea>\n\t<input type=\"submit\" value=\"Save\" dojoAttachPoint=\"submitButton\" />\n\t<input type=\"reset\" value=\"Cancel\" dojoAttachPoint=\"cancelButton\" />\n</form>\n",templateCssString:".editLabel {\n\tfont-size : small;\n\tpadding : 0 5px;\n\tdisplay : none;\n}\n\n.editableRegionDisabled {\n\tcursor : pointer;\n\t_cursor : hand;\n}\n\n.editableRegion {\n\tbackground-color : #ffc !important;\n\tcursor : pointer;\n\t_cursor : hand;\n}\n\n.editableRegion .editLabel {\n\tdisplay : inline;\n}\n\n.editableTextareaRegion .editLabel {\n\tdisplay : block;\n}\n\n.inlineEditBox {\n\t/*background-color : #ffc;*/\n\tdisplay : inline;\n}\n",templateCssPath:dojo.uri.moduleUri("dojo.widget","templates/InlineEditBox.css"),mode:"text",name:"",minWidth:100,minHeight:200,editing:false,value:"",textValue:"",defaultText:"",postMixInProperties:function(){ |
| if(this.textValue){ |
| dojo.deprecated("InlineEditBox: Use value parameter instead of textValue; will be removed in 0.5"); |
| this.value=this.textValue; |
| } |
| if(this.defaultText){ |
| dojo.deprecated("InlineEditBox: Use value parameter instead of defaultText; will be removed in 0.5"); |
| this.value=this.defaultText; |
| } |
| },postCreate:function(_1,_2){ |
| this.editable=this.getFragNodeRef(_2); |
| dojo.html.insertAfter(this.editable,this.form); |
| dojo.event.connect(this.editable,"onmouseover",this,"onMouseOver"); |
| dojo.event.connect(this.editable,"onmouseout",this,"onMouseOut"); |
| dojo.event.connect(this.editable,"onclick",this,"_beginEdit"); |
| if(this.value){ |
| this.editable.innerHTML=this.value; |
| return; |
| }else{ |
| this.value=dojo.string.trim(this.editable.innerHTML); |
| this.editable.innerHTML=this.value; |
| } |
| },onMouseOver:function(){ |
| if(!this.editing){ |
| if(this.disabled){ |
| dojo.html.addClass(this.editable,"editableRegionDisabled"); |
| }else{ |
| dojo.html.addClass(this.editable,"editableRegion"); |
| if(this.mode=="textarea"){ |
| dojo.html.addClass(this.editable,"editableTextareaRegion"); |
| } |
| } |
| } |
| },onMouseOut:function(){ |
| if(!this.editing){ |
| dojo.html.removeClass(this.editable,"editableRegion"); |
| dojo.html.removeClass(this.editable,"editableTextareaRegion"); |
| dojo.html.removeClass(this.editable,"editableRegionDisabled"); |
| } |
| },_beginEdit:function(e){ |
| if(this.editing||this.disabled){ |
| return; |
| } |
| this.onMouseOut(); |
| this.editing=true; |
| var ee=this[this.mode.toLowerCase()]; |
| ee.value=dojo.string.trim(this.value); |
| ee.style.fontSize=dojo.html.getStyle(this.editable,"font-size"); |
| ee.style.fontWeight=dojo.html.getStyle(this.editable,"font-weight"); |
| ee.style.fontStyle=dojo.html.getStyle(this.editable,"font-style"); |
| var bb=dojo.html.getBorderBox(this.editable); |
| ee.style.width=Math.max(bb.width,this.minWidth)+"px"; |
| if(this.mode.toLowerCase()=="textarea"){ |
| ee.style.display="block"; |
| ee.style.height=Math.max(bb.height,this.minHeight)+"px"; |
| }else{ |
| ee.style.display=""; |
| } |
| this.form.style.display=""; |
| this.editable.style.display="none"; |
| ee.focus(); |
| ee.select(); |
| this.submitButton.disabled=true; |
| },saveEdit:function(e){ |
| e.preventDefault(); |
| e.stopPropagation(); |
| var ee=this[this.mode.toLowerCase()]; |
| if((this.value!=ee.value)&&(dojo.string.trim(ee.value)!="")){ |
| this.doFade=true; |
| this.history.push(this.value); |
| this.onSave(ee.value,this.value,this.name); |
| this.value=ee.value; |
| this.editable.innerHTML=""; |
| var _8=document.createTextNode(this.value); |
| this.editable.appendChild(_8); |
| }else{ |
| this.doFade=false; |
| } |
| this._finishEdit(e); |
| },_stopEditing:function(){ |
| this.editing=false; |
| this.form.style.display="none"; |
| this.editable.style.display=""; |
| return true; |
| },cancelEdit:function(e){ |
| this._stopEditing(); |
| this.onCancel(); |
| return true; |
| },_finishEdit:function(e){ |
| this._stopEditing(); |
| if(this.doFade){ |
| dojo.lfx.highlight(this.editable,dojo.gfx.color.hex2rgb("#ffc"),700).play(300); |
| } |
| this.doFade=false; |
| },setText:function(_b){ |
| dojo.deprecated("setText() is deprecated, call setValue() instead, will be removed in 0.5"); |
| this.setValue(_b); |
| },setValue:function(_c){ |
| _c=""+_c; |
| var tt=dojo.string.trim(_c); |
| this.value=tt; |
| this.editable.innerHTML=tt; |
| },undo:function(){ |
| if(this.history.length>0){ |
| var _e=this.value; |
| var _f=this.history.pop(); |
| this.editable.innerHTML=_f; |
| this.value=_f; |
| this.onUndo(_f); |
| this.onSave(_f,_e,this.name); |
| } |
| },onChange:function(_10,_11){ |
| },onSave:function(_12,_13,_14){ |
| },onCancel:function(){ |
| },checkForValueChange:function(){ |
| var ee=this[this.mode.toLowerCase()]; |
| if((this.value!=ee.value)&&(dojo.string.trim(ee.value)!="")){ |
| this.submitButton.disabled=false; |
| } |
| this.onChange(this.value,ee.value); |
| },disable:function(){ |
| this.submitButton.disabled=true; |
| this.cancelButton.disabled=true; |
| var ee=this[this.mode.toLowerCase()]; |
| ee.disabled=true; |
| dojo.widget.InlineEditBox.superclass.disable.apply(this,arguments); |
| },enable:function(){ |
| this.checkForValueChange(); |
| this.cancelButton.disabled=false; |
| var ee=this[this.mode.toLowerCase()]; |
| ee.disabled=false; |
| dojo.widget.InlineEditBox.superclass.enable.apply(this,arguments); |
| }}); |