webui-aria2/js/libs/dijit/_editor/plugins/FontChoice.js
2012-05-01 19:52:07 +08:00

248 lines
7.0 KiB
JavaScript

//>>built
define("dijit/_editor/plugins/FontChoice",["dojo/_base/array","dojo/_base/declare","dojo/dom-construct","dojo/i18n","dojo/_base/lang","dojo/store/Memory","dojo/_base/window","../../registry","../../_Widget","../../_TemplatedMixin","../../_WidgetsInTemplateMixin","../../form/FilteringSelect","../_Plugin","../range","../selection","dojo/i18n!../nls/FontChoice"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d,_e,_f){
var _10=_2("dijit._editor.plugins._FontDropDown",[_9,_a,_b],{label:"",plainText:false,templateString:"<span style='white-space: nowrap' class='dijit dijitReset dijitInline'>"+"<label class='dijitLeft dijitInline' for='${selectId}'>${label}</label>"+"<input data-dojo-type='dijit.form.FilteringSelect' required='false' "+"data-dojo-props='labelType:\"html\", labelAttr:\"label\", searchAttr:\"name\"' "+"tabIndex='-1' id='${selectId}' data-dojo-attach-point='select' value=''/>"+"</span>",postMixInProperties:function(){
this.inherited(arguments);
this.strings=_4.getLocalization("dijit._editor","FontChoice");
this.label=this.strings[this.command];
this.id=_8.getUniqueId(this.declaredClass.replace(/\./g,"_"));
this.selectId=this.id+"_select";
this.inherited(arguments);
},postCreate:function(){
this.select.set("store",new _6({idProperty:"value",data:_1.map(this.values,function(_11){
var _12=this.strings[_11]||_11;
return {label:this.getLabel(_11,_12),name:_12,value:_11};
},this)}));
this.select.set("value","",false);
this.disabled=this.select.get("disabled");
},_setValueAttr:function(_13,_14){
_14=_14!==false;
this.select.set("value",_1.indexOf(this.values,_13)<0?"":_13,_14);
if(!_14){
this.select._lastValueReported=null;
}
},_getValueAttr:function(){
return this.select.get("value");
},focus:function(){
this.select.focus();
},_setDisabledAttr:function(_15){
this.disabled=_15;
this.select.set("disabled",_15);
}});
var _16=_2("dijit._editor.plugins._FontNameDropDown",_10,{generic:false,command:"fontName",postMixInProperties:function(){
if(!this.values){
this.values=this.generic?["serif","sans-serif","monospace","cursive","fantasy"]:["Arial","Times New Roman","Comic Sans MS","Courier New"];
}
this.inherited(arguments);
},getLabel:function(_17,_18){
if(this.plainText){
return _18;
}else{
return "<div style='font-family: "+_17+"'>"+_18+"</div>";
}
},_setValueAttr:function(_19,_1a){
_1a=_1a!==false;
if(this.generic){
var map={"Arial":"sans-serif","Helvetica":"sans-serif","Myriad":"sans-serif","Times":"serif","Times New Roman":"serif","Comic Sans MS":"cursive","Apple Chancery":"cursive","Courier":"monospace","Courier New":"monospace","Papyrus":"fantasy","Estrangelo Edessa":"cursive","Gabriola":"fantasy"};
_19=map[_19]||_19;
}
this.inherited(arguments,[_19,_1a]);
}});
var _1b=_2("dijit._editor.plugins._FontSizeDropDown",_10,{command:"fontSize",values:[1,2,3,4,5,6,7],getLabel:function(_1c,_1d){
if(this.plainText){
return _1d;
}else{
return "<font size="+_1c+"'>"+_1d+"</font>";
}
},_setValueAttr:function(_1e,_1f){
_1f=_1f!==false;
if(_1e.indexOf&&_1e.indexOf("px")!=-1){
var _20=parseInt(_1e,10);
_1e={10:1,13:2,16:3,18:4,24:5,32:6,48:7}[_20]||_1e;
}
this.inherited(arguments,[_1e,_1f]);
}});
var _21=_2("dijit._editor.plugins._FormatBlockDropDown",_10,{command:"formatBlock",values:["noFormat","p","h1","h2","h3","pre"],postCreate:function(){
this.inherited(arguments);
this.set("value","noFormat",false);
},getLabel:function(_22,_23){
if(this.plainText||_22=="noFormat"){
return _23;
}else{
return "<"+_22+">"+_23+"</"+_22+">";
}
},_execCommand:function(_24,_25,_26){
if(_26==="noFormat"){
var _27;
var end;
var sel=_e.getSelection(_24.window);
if(sel&&sel.rangeCount>0){
var _28=sel.getRangeAt(0);
var _29,tag;
if(_28){
_27=_28.startContainer;
end=_28.endContainer;
while(_27&&_27!==_24.editNode&&_27!==_24.document.body&&_27.nodeType!==1){
_27=_27.parentNode;
}
while(end&&end!==_24.editNode&&end!==_24.document.body&&end.nodeType!==1){
end=end.parentNode;
}
var _2a=_5.hitch(this,function(_2b,ary){
if(_2b.childNodes&&_2b.childNodes.length){
var i;
for(i=0;i<_2b.childNodes.length;i++){
var c=_2b.childNodes[i];
if(c.nodeType==1){
if(_7.withGlobal(_24.window,"inSelection",_f,[c])){
var tag=c.tagName?c.tagName.toLowerCase():"";
if(_1.indexOf(this.values,tag)!==-1){
ary.push(c);
}
_2a(c,ary);
}
}
}
}
});
var _2c=_5.hitch(this,function(_2d){
if(_2d&&_2d.length){
_24.beginEditing();
while(_2d.length){
this._removeFormat(_24,_2d.pop());
}
_24.endEditing();
}
});
var _2e=[];
if(_27==end){
var _2f;
_29=_27;
while(_29&&_29!==_24.editNode&&_29!==_24.document.body){
if(_29.nodeType==1){
tag=_29.tagName?_29.tagName.toLowerCase():"";
if(_1.indexOf(this.values,tag)!==-1){
_2f=_29;
break;
}
}
_29=_29.parentNode;
}
_2a(_27,_2e);
if(_2f){
_2e=[_2f].concat(_2e);
}
_2c(_2e);
}else{
_29=_27;
while(_7.withGlobal(_24.window,"inSelection",_f,[_29])){
if(_29.nodeType==1){
tag=_29.tagName?_29.tagName.toLowerCase():"";
if(_1.indexOf(this.values,tag)!==-1){
_2e.push(_29);
}
_2a(_29,_2e);
}
_29=_29.nextSibling;
}
_2c(_2e);
}
_24.onDisplayChanged();
}
}
}else{
_24.execCommand(_25,_26);
}
},_removeFormat:function(_30,_31){
if(_30.customUndo){
while(_31.firstChild){
_3.place(_31.firstChild,_31,"before");
}
_31.parentNode.removeChild(_31);
}else{
_7.withGlobal(_30.window,"selectElementChildren",_f,[_31]);
var _32=_7.withGlobal(_30.window,"getSelectedHtml",_f,[null]);
_7.withGlobal(_30.window,"selectElement",_f,[_31]);
_30.execCommand("inserthtml",_32||"");
}
}});
var _33=_2("dijit._editor.plugins.FontChoice",_d,{useDefaultCommand:false,_initButton:function(){
var _34={fontName:_16,fontSize:_1b,formatBlock:_21}[this.command],_35=this.params;
if(this.params.custom){
_35.values=this.params.custom;
}
var _36=this.editor;
this.button=new _34(_5.delegate({dir:_36.dir,lang:_36.lang},_35));
this.connect(this.button.select,"onChange",function(_37){
this.editor.focus();
if(this.command=="fontName"&&_37.indexOf(" ")!=-1){
_37="'"+_37+"'";
}
if(this.button._execCommand){
this.button._execCommand(this.editor,this.command,_37);
}else{
this.editor.execCommand(this.command,_37);
}
});
},updateState:function(){
var _38=this.editor;
var _39=this.command;
if(!_38||!_38.isLoaded||!_39.length){
return;
}
if(this.button){
var _3a=this.get("disabled");
this.button.set("disabled",_3a);
if(_3a){
return;
}
var _3b;
try{
_3b=_38.queryCommandValue(_39)||"";
}
catch(e){
_3b="";
}
var _3c=_5.isString(_3b)&&_3b.match(/'([^']*)'/);
if(_3c){
_3b=_3c[1];
}
if(_39==="formatBlock"){
if(!_3b||_3b=="p"){
_3b=null;
var _3d;
var sel=_e.getSelection(this.editor.window);
if(sel&&sel.rangeCount>0){
var _3e=sel.getRangeAt(0);
if(_3e){
_3d=_3e.endContainer;
}
}
while(_3d&&_3d!==_38.editNode&&_3d!==_38.document){
var tg=_3d.tagName?_3d.tagName.toLowerCase():"";
if(tg&&_1.indexOf(this.button.values,tg)>-1){
_3b=tg;
break;
}
_3d=_3d.parentNode;
}
if(!_3b){
_3b="noFormat";
}
}else{
if(_1.indexOf(this.button.values,_3b)<0){
_3b="noFormat";
}
}
}
if(_3b!==this.button.get("value")){
this.button.set("value",_3b,false);
}
}
}});
_1.forEach(["fontName","fontSize","formatBlock"],function(_3f){
_d.registry[_3f]=function(_40){
return new _33({command:_3f,plainText:_40.plainText});
};
});
});