blob: 8d46478fb340b230fb032af5693b21d4cbaac6f5 [file] [log] [blame]
/*
Copyright (c) 2004-2009, 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["dojox.editor.plugins._SmileyPalette"]){
dojo._hasResource["dojox.editor.plugins._SmileyPalette"]=true;
dojo.provide("dojox.editor.plugins._SmileyPalette");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.require("dojo.i18n");
dojo.requireLocalization("dojox.editor.plugins","Smiley",null,"ROOT,cs,de,es,fr,hu,it,ja,ko,pl,pt,ru,zh,zh-tw");
dojo.experimental("dojox.editor.plugins._SmileyPalette");
dojo.declare("dojox.editor.plugins._SmileyPalette",[dijit._Widget,dijit._Templated],{templateString:"<div class=\"dojoxEntityPalette\">\n"+"<table>\n"+"<tbody>\n"+"<tr>\n"+"<td>\n"+"<table class=\"dojoxEntityPaletteTable\" waiRole=\"grid\" tabIndex=\"${tabIndex}\">\n"+"<tbody dojoAttachPoint=\"tableNode\"></tbody>\n"+"</table>\n"+"</td>\n"+"</tr>\n"+"</tbody>\n"+"</table>\n"+"</div>",defaultTimeout:500,timeoutChangeRate:0.9,smileys:{emoticonSmile:":-)",emoticonLaughing:"lol",emoticonWink:";-)",emoticonGrin:":-D",emoticonCool:"8-)",emoticonAngry:":-@",emoticonHalf:":-/",emoticonEyebrow:"/:)",emoticonFrown:":-(",emoticonShy:":-$",emoticonGoofy:":-S",emoticonOops:":-O",emoticonTongue:":-P",emoticonIdea:"(i)",emoticonYes:"(y)",emoticonNo:"(n)",emoticonAngel:"0:-)",emoticonCrying:":'("},value:null,_currentFocus:0,_xDim:null,_yDim:null,tabIndex:"0",_created:false,postCreate:function(){
if(!this._created){
this._created=true;
this.domNode.style.position="relative";
this._cellNodes=[];
var _1=0;
var _2;
for(_2 in this.smileys){
_1++;
}
var _3=Math.floor(Math.sqrt(_1));
var _4=_3;
var _5=0;
var _6=null;
var _7;
for(_2 in this.smileys){
var _8=_5%_4===0;
if(_8){
_6=dojo.create("tr",{tabIndex:"-1"});
}
var _9=this.smileys[_2],_a=dojo.i18n.getLocalization("dojox.editor.plugins","Smiley")[_2];
_7=dojo.create("td",{tabIndex:"-1","class":"dojoxEntityPaletteCell"},_6);
var _b=dojo.create("img",{src:dojo.moduleUrl("dojox.editor.plugins","resources/emoticons/"+_2+".gif"),"class":"dojoxSmileyPaletteImg dojoxSmiley"+_2.charAt(0).toUpperCase()+_2.substring(1),title:_a,alt:_a},_7);
dojo.forEach(["Dijitclick","MouseEnter","Focus","Blur"],function(_c){
this.connect(_7,"on"+_c.toLowerCase(),"_onCell"+_c);
},this);
if(_8){
dojo.place(_6,this.tableNode);
}
dijit.setWaiRole(_7,"gridcell");
_7.index=this._cellNodes.length;
this._cellNodes.push({node:_7,html:"<span class='"+_2+"'>"+this.smileys[_2]+"</span>"});
_5++;
}
var _d=_3-(_1%_3);
while(_d>0){
_7=dojo.create("td",{innerHTML:"",tabIndex:"-1","class":"dojoxEntityPaletteNullCell"},_6);
_d--;
}
this._xDim=_3;
this._yDim=_4;
this.connect(this.tableNode,"onfocus","_onTableNodeFocus");
var _e={UP_ARROW:-this._xDim,DOWN_ARROW:this._xDim,RIGHT_ARROW:1,LEFT_ARROW:-1};
for(var _f in _e){
this._connects.push(dijit.typematic.addKeyListener(this.domNode,{charOrCode:dojo.keys[_f],ctrlKey:false,altKey:false,shiftKey:false},this,function(){
var _10=_e[_f];
return function(_11){
this._navigateByKey(_10,_11);
};
}(),this.timeoutChangeRate,this.defaultTimeout));
}
}
},focus:function(){
this._focusFirst();
},onChange:function(_12){
},_focusFirst:function(){
this._currentFocus=0;
var _13=this._cellNodes[this._currentFocus].node;
setTimeout(function(){
dijit.focus(_13);
},25);
},_onTableNodeFocus:function(evt){
if(evt.target===this.tableNode){
this._focusFirst();
}
},_onFocus:function(){
dojo.attr(this.tableNode,"tabIndex","-1");
},_onBlur:function(){
this._removeCellHighlight(this._currentFocus);
dojo.attr(this.tableNode,"tabIndex",this.tabIndex);
},_onCellDijitclick:function(evt){
var _14=evt.currentTarget;
if(this._currentFocus!=_14.index){
this._currentFocus=_14.index;
setTimeout(function(){
dijit.focus(_14);
},0);
}
this._selectEntity(_14);
dojo.stopEvent(evt);
},_onCellMouseEnter:function(evt){
var _15=evt.currentTarget;
this._setCurrent(_15);
setTimeout(function(){
dijit.focus(_15);
},0);
},_onCellFocus:function(evt){
this._setCurrent(evt.currentTarget);
},_setCurrent:function(_16){
this._removeCellHighlight(this._currentFocus);
this._currentFocus=_16.index;
dojo.addClass(_16,"dojoxEntityPaletteCellHighlight");
},_onCellBlur:function(evt){
this._removeCellHighlight(this._currentFocus);
},_removeCellHighlight:function(_17){
dojo.removeClass(this._cellNodes[_17].node,"dojoxEntityPaletteCellHighlight");
},_selectEntity:function(_18){
var _19=dojo.filter(this._cellNodes,function(_1a){
return _1a.node==_18;
});
if(_19.length>0){
this.onChange(this.value=_19[0].html);
}
},_navigateByKey:function(_1b,_1c){
if(_1c==-1){
return;
}
var _1d=this._currentFocus+_1b;
if(_1d<this._cellNodes.length&&_1d>-1){
var _1e=this._cellNodes[_1d].node;
_1e.focus();
}
}});
}