diff options
author | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
commit | 2f01fe57a8d37767827d6db42850aef86a767c53 (patch) | |
tree | 516a95ffce2fc2435aed8d9976e444dbcba7dce3 /lib/dijit/InlineEditBox.js | |
parent | 951906dcecb1d3c7bcf751976a03e0c196ca6db0 (diff) |
add dijit/dojo stuff; initial ui mockup
Diffstat (limited to 'lib/dijit/InlineEditBox.js')
-rw-r--r-- | lib/dijit/InlineEditBox.js | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/lib/dijit/InlineEditBox.js b/lib/dijit/InlineEditBox.js new file mode 100644 index 000000000..5d26498a4 --- /dev/null +++ b/lib/dijit/InlineEditBox.js @@ -0,0 +1,231 @@ +/* + Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + + +if(!dojo._hasResource["dijit.InlineEditBox"]){ +dojo._hasResource["dijit.InlineEditBox"]=true; +dojo.provide("dijit.InlineEditBox"); +dojo.require("dojo.i18n"); +dojo.require("dijit._Widget"); +dojo.require("dijit._Container"); +dojo.require("dijit.form.Button"); +dojo.require("dijit.form.TextBox"); +dojo.requireLocalization("dijit","common",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw"); +dojo.declare("dijit.InlineEditBox",dijit._Widget,{editing:false,autoSave:true,buttonSave:"",buttonCancel:"",renderAsHtml:false,editor:"dijit.form.TextBox",editorWrapper:"dijit._InlineEditor",editorParams:{},onChange:function(_1){ +},onCancel:function(){ +},width:"100%",value:"",noValueIndicator:dojo.isIE<=6?"<span style='font-family: wingdings; text-decoration: underline;'> ✍ </span>":"<span style='text-decoration: underline;'> ✍ </span>",constructor:function(){ +this.editorParams={}; +},postMixInProperties:function(){ +this.inherited(arguments); +this.displayNode=this.srcNodeRef; +var _2={ondijitclick:"_onClick",onmouseover:"_onMouseOver",onmouseout:"_onMouseOut",onfocus:"_onMouseOver",onblur:"_onMouseOut"}; +for(var _3 in _2){ +this.connect(this.displayNode,_3,_2[_3]); +} +dijit.setWaiRole(this.displayNode,"button"); +if(!this.displayNode.getAttribute("tabIndex")){ +this.displayNode.setAttribute("tabIndex",0); +} +if(!this.value&&!("value" in this.params)){ +this.value=dojo.trim(this.renderAsHtml?this.displayNode.innerHTML:(this.displayNode.innerText||this.displayNode.textContent||"")); +} +if(!this.value){ +this.displayNode.innerHTML=this.noValueIndicator; +} +dojo.addClass(this.displayNode,"dijitInlineEditBoxDisplayMode"); +},setDisabled:function(_4){ +dojo.deprecated("dijit.InlineEditBox.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0"); +this.set("disabled",_4); +},_setDisabledAttr:function(_5){ +this.disabled=_5; +dijit.setWaiState(this.domNode,"disabled",_5); +if(_5){ +this.displayNode.removeAttribute("tabIndex"); +}else{ +this.displayNode.setAttribute("tabIndex",0); +} +dojo.toggleClass(this.displayNode,"dijitInlineEditBoxDisplayModeDisabled",_5); +},_onMouseOver:function(){ +if(!this.disabled){ +dojo.addClass(this.displayNode,"dijitInlineEditBoxDisplayModeHover"); +} +},_onMouseOut:function(){ +dojo.removeClass(this.displayNode,"dijitInlineEditBoxDisplayModeHover"); +},_onClick:function(e){ +if(this.disabled){ +return; +} +if(e){ +dojo.stopEvent(e); +} +this._onMouseOut(); +setTimeout(dojo.hitch(this,"edit"),0); +},edit:function(){ +if(this.disabled||this.editing){ +return; +} +this.editing=true; +this._savedPosition=dojo.style(this.displayNode,"position")||"static"; +this._savedOpacity=dojo.style(this.displayNode,"opacity")||"1"; +this._savedTabIndex=dojo.attr(this.displayNode,"tabIndex")||"0"; +if(this.wrapperWidget){ +var ew=this.wrapperWidget.editWidget; +ew.set("displayedValue" in ew?"displayedValue":"value",this.value); +}else{ +var _6=dojo.create("span",null,this.domNode,"before"); +var _7=dojo.getObject(this.editorWrapper); +this.wrapperWidget=new _7({value:this.value,buttonSave:this.buttonSave,buttonCancel:this.buttonCancel,dir:this.dir,lang:this.lang,tabIndex:this._savedTabIndex,editor:this.editor,inlineEditBox:this,sourceStyle:dojo.getComputedStyle(this.displayNode),save:dojo.hitch(this,"save"),cancel:dojo.hitch(this,"cancel")},_6); +} +var ww=this.wrapperWidget; +if(dojo.isIE){ +dijit.focus(dijit.getFocus()); +} +dojo.style(this.displayNode,{position:"absolute",opacity:"0",display:"none"}); +dojo.style(ww.domNode,{position:this._savedPosition,visibility:"visible",opacity:"1"}); +dojo.attr(this.displayNode,"tabIndex","-1"); +setTimeout(dojo.hitch(this,function(){ +ww.focus(); +ww._resetValue=ww.getValue(); +}),0); +},_onBlur:function(){ +this.inherited(arguments); +if(!this.editing){ +} +},destroy:function(){ +if(this.wrapperWidget){ +this.wrapperWidget.destroy(); +delete this.wrapperWidget; +} +this.inherited(arguments); +},_showText:function(_8){ +var ww=this.wrapperWidget; +dojo.style(ww.domNode,{position:"absolute",visibility:"hidden",opacity:"0"}); +dojo.style(this.displayNode,{position:this._savedPosition,opacity:this._savedOpacity,display:""}); +dojo.attr(this.displayNode,"tabIndex",this._savedTabIndex); +if(_8){ +dijit.focus(this.displayNode); +} +},save:function(_9){ +if(this.disabled||!this.editing){ +return; +} +this.editing=false; +var ww=this.wrapperWidget; +var _a=ww.getValue(); +this.set("value",_a); +setTimeout(dojo.hitch(this,"onChange",_a),0); +this._showText(_9); +},setValue:function(_b){ +dojo.deprecated("dijit.InlineEditBox.setValue() is deprecated. Use set('value', ...) instead.","","2.0"); +return this.set("value",_b); +},_setValueAttr:function(_c){ +this.value=_c=dojo.trim(_c); +if(!this.renderAsHtml){ +_c=_c.replace(/&/gm,"&").replace(/</gm,"<").replace(/>/gm,">").replace(/"/gm,""").replace(/\n/g,"<br>"); +} +this.displayNode.innerHTML=_c||this.noValueIndicator; +},getValue:function(){ +dojo.deprecated("dijit.InlineEditBox.getValue() is deprecated. Use get('value') instead.","","2.0"); +return this.get("value"); +},cancel:function(_d){ +if(this.disabled||!this.editing){ +return; +} +this.editing=false; +setTimeout(dojo.hitch(this,"onCancel"),0); +this._showText(_d); +}}); +dojo.declare("dijit._InlineEditor",[dijit._Widget,dijit._Templated],{templateString:dojo.cache("dijit","templates/InlineEditBox.html","<span dojoAttachPoint=\"editNode\" waiRole=\"presentation\" style=\"position: absolute; visibility:hidden\" class=\"dijitReset dijitInline\"\n\tdojoAttachEvent=\"onkeypress: _onKeyPress\"\n\t><span dojoAttachPoint=\"editorPlaceholder\"></span\n\t><span dojoAttachPoint=\"buttonContainer\"\n\t\t><button class='saveButton' dojoAttachPoint=\"saveButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:save\" label=\"${buttonSave}\"></button\n\t\t><button class='cancelButton' dojoAttachPoint=\"cancelButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:cancel\" label=\"${buttonCancel}\"></button\n\t></span\n></span>\n"),widgetsInTemplate:true,postMixInProperties:function(){ +this.inherited(arguments); +this.messages=dojo.i18n.getLocalization("dijit","common",this.lang); +dojo.forEach(["buttonSave","buttonCancel"],function(_e){ +if(!this[_e]){ +this[_e]=this.messages[_e]; +} +},this); +},postCreate:function(){ +var _f=dojo.getObject(this.editor); +var _10=this.sourceStyle,_11="line-height:"+_10.lineHeight+";",_12=dojo.getComputedStyle(this.domNode); +dojo.forEach(["Weight","Family","Size","Style"],function(_13){ +var _14=_10["font"+_13],_15=_12["font"+_13]; +if(_15!=_14){ +_11+="font-"+_13+":"+_10["font"+_13]+";"; +} +},this); +dojo.forEach(["marginTop","marginBottom","marginLeft","marginRight"],function(_16){ +this.domNode.style[_16]=_10[_16]; +},this); +var _17=this.inlineEditBox.width; +if(_17=="100%"){ +_11+="width:100%;"; +this.domNode.style.display="block"; +}else{ +_11+="width:"+(_17+(Number(_17)==_17?"px":""))+";"; +} +var _18=dojo.delegate(this.inlineEditBox.editorParams,{style:_11,dir:this.dir,lang:this.lang}); +_18["displayedValue" in _f.prototype?"displayedValue":"value"]=this.value; +var ew=(this.editWidget=new _f(_18,this.editorPlaceholder)); +if(this.inlineEditBox.autoSave){ +dojo.destroy(this.buttonContainer); +this.connect(ew,"onChange","_onChange"); +this.connect(ew,"onKeyPress","_onKeyPress"); +}else{ +if("intermediateChanges" in _f.prototype){ +ew.set("intermediateChanges",true); +this.connect(ew,"onChange","_onIntermediateChange"); +this.saveButton.set("disabled",true); +} +} +},_onIntermediateChange:function(val){ +this.saveButton.set("disabled",(this.getValue()==this._resetValue)||!this.enableSave()); +},destroy:function(){ +this.editWidget.destroy(true); +this.inherited(arguments); +},getValue:function(){ +var ew=this.editWidget; +return String(ew.get("displayedValue" in ew?"displayedValue":"value")); +},_onKeyPress:function(e){ +if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){ +if(e.altKey||e.ctrlKey){ +return; +} +if(e.charOrCode==dojo.keys.ESCAPE){ +dojo.stopEvent(e); +this.cancel(true); +}else{ +if(e.charOrCode==dojo.keys.ENTER&&e.target.tagName=="INPUT"){ +dojo.stopEvent(e); +this._onChange(); +} +} +} +},_onBlur:function(){ +this.inherited(arguments); +if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){ +if(this.getValue()==this._resetValue){ +this.cancel(false); +}else{ +if(this.enableSave()){ +this.save(false); +} +} +} +},_onChange:function(){ +if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing&&this.enableSave()){ +dojo.style(this.inlineEditBox.displayNode,{display:""}); +dijit.focus(this.inlineEditBox.displayNode); +} +},enableSave:function(){ +return (this.editWidget.isValid?this.editWidget.isValid():true); +},focus:function(){ +this.editWidget.focus(); +setTimeout(dojo.hitch(this,function(){ +if(this.editWidget.focusNode&&this.editWidget.focusNode.tagName=="INPUT"){ +dijit.selectInputText(this.editWidget.focusNode); +} +}),0); +}}); +} |