Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 26 → Rev 27

/trunk/www/org.tela_botanica.cel2/js/ext/source/widgets/tips/QuickTip.js
New file
0,0 → 1,180
/*
* Ext JS Library 2.0.2
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
 
/**
* @class Ext.QuickTip
* @extends Ext.ToolTip
* A specialized tooltip class for tooltips that can be specified in markup and automatically managed by the global
* {@link Ext.QuickTips} instance. See the QuickTips class header for additional usage details and examples.
* @constructor
* Create a new Tip
* @param {Object} config The configuration options
*/
Ext.QuickTip = Ext.extend(Ext.ToolTip, {
/**
* @cfg {Mixed} target The target HTMLElement, Ext.Element or id to associate with this quicktip (defaults to the document).
*/
/**
* @cfg {Boolean} interceptTitles True to automatically use the element's DOM title value if available (defaults to false).
*/
interceptTitles : false,
 
// private
tagConfig : {
namespace : "ext",
attribute : "qtip",
width : "qwidth",
target : "target",
title : "qtitle",
hide : "hide",
cls : "qclass",
align : "qalign"
},
 
// private
initComponent : function(){
this.target = this.target || Ext.getDoc();
this.targets = this.targets || {};
Ext.QuickTip.superclass.initComponent.call(this);
},
 
/**
* Configures a new quick tip instance and assigns it to a target element. The following config values are
* supported (for example usage, see the {@link Ext.QuickTips} class header):
* <div class="mdetail-params"><ul>
* <li>autoHide</li>
* <li>cls</li>
* <li>dismissDelay (overrides the singleton value)</li>
* <li>target (required)</li>
* <li>text (required)</li>
* <li>title</li>
* <li>width</li></ul></div>
* @param {Object} config The config object
*/
register : function(config){
var cs = Ext.isArray(config) ? config : arguments;
for(var i = 0, len = cs.length; i < len; i++){
var c = cs[i];
var target = c.target;
if(target){
if(Ext.isArray(target)){
for(var j = 0, jlen = target.length; j < jlen; j++){
this.targets[Ext.id(target[j])] = c;
}
} else{
this.targets[Ext.id(target)] = c;
}
}
}
},
 
/**
* Removes this quick tip from its element and destroys it.
* @param {String/HTMLElement/Element} el The element from which the quick tip is to be removed.
*/
unregister : function(el){
delete this.targets[Ext.id(el)];
},
 
// private
onTargetOver : function(e){
if(this.disabled){
return;
}
this.targetXY = e.getXY();
var t = e.getTarget();
if(!t || t.nodeType !== 1 || t == document || t == document.body){
return;
}
if(this.activeTarget && t == this.activeTarget.el){
this.clearTimer('hide');
this.show();
return;
}
if(t && this.targets[t.id]){
this.activeTarget = this.targets[t.id];
this.activeTarget.el = t;
this.delayShow();
return;
}
var ttp, et = Ext.fly(t), cfg = this.tagConfig;
var ns = cfg.namespace;
if(this.interceptTitles && t.title){
ttp = t.title;
t.qtip = ttp;
t.removeAttribute("title");
e.preventDefault();
} else{
ttp = t.qtip || et.getAttributeNS(ns, cfg.attribute);
}
if(ttp){
var autoHide = et.getAttributeNS(ns, cfg.hide);
this.activeTarget = {
el: t,
text: ttp,
width: et.getAttributeNS(ns, cfg.width),
autoHide: autoHide != "user" && autoHide !== 'false',
title: et.getAttributeNS(ns, cfg.title),
cls: et.getAttributeNS(ns, cfg.cls),
align: et.getAttributeNS(ns, cfg.align)
};
this.delayShow();
}
},
 
// private
onTargetOut : function(e){
this.clearTimer('show');
if(this.autoHide !== false){
this.delayHide();
}
},
 
// inherit docs
showAt : function(xy){
var t = this.activeTarget;
if(t){
if(!this.rendered){
this.render(Ext.getBody());
this.activeTarget = t;
}
if(t.width){
this.setWidth(t.width);
this.body.setWidth(this.adjustBodyWidth(t.width - this.getFrameWidth()));
this.measureWidth = false;
} else{
this.measureWidth = true;
}
this.setTitle(t.title || '');
this.body.update(t.text);
this.autoHide = t.autoHide;
this.dismissDelay = t.dismissDelay || this.dismissDelay;
if(this.lastCls){
this.el.removeClass(this.lastCls);
delete this.lastCls;
}
if(t.cls){
this.el.addClass(t.cls);
this.lastCls = t.cls;
}
if(t.align){ // TODO: this doesn't seem to work consistently
xy = this.el.getAlignToXY(t.el, t.align);
this.constrainPosition = false;
} else{
this.constrainPosition = true;
}
}
Ext.QuickTip.superclass.showAt.call(this, xy);
},
 
// inherit docs
hide: function(){
delete this.activeTarget;
Ext.QuickTip.superclass.hide.call(this);
}
});