Using Tool Tips Property
I see there is a way to set a tooltip property, however, it is not clear how it works. What I have is a button for which I would like to have a tool tip. If I add it as an action to the Over state of the button the tip comes up but not the way I would expect and it disappears after a while.
So, what is the best way to set a tool tip for a button?
Setting the tool tip property on a component tells the component what the tool tip ought to be if the component decides it needs to show a tool tip, but the exact behavior of the tool tip, including when it is displayed, for how long, and what it looks like is up to the component itself. A standard Flex Button, for example, will display the tool tip only when the mouse pointer has been over it for a certain amount of time, and eventually it will go away.
This is generally the sort of behavior one expects from a tool tip. If you need to customize it though, you're best bet is to do something similar to what Daniel has done, using roll over states.
Similar Messages
-
I know the "tool tips" should be brief, but I got a long one, and a line break would make it more readable.
Is there a way to add a line break in NIB object's Help "Tool tip" property? Some sort of keystroke like Shift-Return?
Presently I edit the Tool Tip text in a word processor, add Returns where I want, and then copy and paste into the Tool Tip field. Works fine, but I wonder if there is an "inline" alternative?
JohnIs there a way to add a line break in NIB object's
Help "Tool tip" property? Some sort of keystroke like
Shift-Return?
Try Option + Return -
Hi,
In our project, we are using tool tip for all the buttons and on tool bars..
If I opened, 2 windows at the time and the focus is set on 2nd window. From there, if i move the mouse over the any button on the 1st window, the tool tip is shown, but the 2nd window(focussed window) is hidden. 2nd window still have the focus.
Could you please help me out..
Regards
Veera.The position of the tooltip is related to the cursor position rather than the position of the image, see here http://labs.adobe.com/technologies/spry/samples/tooltip/SpryTooltipSample.html
-
I seem to have a memory leak associated with tool tips. When ever I place the mouse over a panel using tool tips I cas see the dynamic memory usage continuously increasing. If I comment out the call to the tool tip functions (i.e. SetCtrlToolTipAttribute), the memory leak dissapears.
Solved!
Go to Solution.Hello Michael,
I just tried to recompile the toolbox, but here's what I get. Something must have changed between version 8 and version 2010...
$ cd /usr/local/natinst/cvi2010; sudo chown -R someuser .
$ gcc -fPIC -O2 -D_REENTRANT -D_BSD_SOURCE -D_SVID_SOURCE -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -I./include -I./toolslib/toolbox -I./toolslib/custctrl/custsupp toolslib/toolbox/toolbox.c -o toolslib/toolbox/toolbox.o
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
/tmp/ccULcfdP.o: In function `CVIAbsoluteTimeFromCNVTime':
toolbox.c:(.text+0x2154): undefined reference to `CVIAbsoluteTimeFromTimeUnit'
/tmp/ccULcfdP.o: In function `CVIAbsoluteTimeFromCVIANSITime':
toolbox.c:(.text+0x21c9): undefined reference to `CVIAbsoluteTimeFromTimeUnit'
/tmp/ccULcfdP.o: In function `CVIAbsoluteTimeToCNVTime':
toolbox.c:(.text+0x2257): undefined reference to `CVIAbsoluteTimeToTimeUnit'
/tmp/ccULcfdP.o: In function `CVIAbsoluteTimeToCVIANSITime':
toolbox.c:(.text+0x22f0): undefined reference to `CVIAbsoluteTimeToTimeUnit'
/tmp/ccULcfdP.o: In function `CVIAbsoluteTimeFromCVIUILTime':
toolbox.c:(.text+0x237b): undefined reference to `GetDateTimeElements'
toolbox.c:(.text+0x23e5): undefined reference to `CVIAbsoluteTimeFromLocalCalendar'
/tmp/ccULcfdP.o: In function `CVIAbsoluteTimeToCVIUILTime':
toolbox.c:(.text+0x2495): undefined reference to `CVIAbsoluteTimeToLocalCalendar'
toolbox.c:(.text+0x24e0): undefined reference to `MakeDateTime'
/tmp/ccULcfdP.o: In function `PostDeferredCallToThreadAndWait':
toolbox.c:(.text+0x25a8): undefined reference to `CmtGetCurrentThreadID'
toolbox.c:(.text+0x25cc): undefined reference to `Timer'
toolbox.c:(.text+0x25e8): undefined reference to `PostDeferredCallToThread'
toolbox.c:(.text+0x2607): undefined reference to `Timer'
/tmp/ccULcfdP.o: In function `ToolBoxAtExitFunction':
toolbox.c:(.text+0x2bed): undefined reference to `CVIRTEHasBeenDetached'
/tmp/ccULcfdP.o: In function `DelayQueueDispose':
toolbox.c:(.text+0x2c73): undefined reference to `DiscardCtrl'
toolbox.c:(.text+0x2c88): undefined reference to `DiscardPanel'
/tmp/ccULcfdP.o: In function `FreeThreadLocalResourcesCallback':
toolbox.c:(.text+0x2ce4): undefined reference to `DiscardPanel'
/tmp/ccULcfdP.o: In function `ComparePanelZPlaneOrder':
toolbox.c:(.text+0x2daa): undefined reference to `GetPanelAttribute'
toolbox.c:(.text+0x2dc6): undefined reference to `GetPanelAttribute' -
How to use long texts in explanation tool tip?
Hi ,
Can anyone tell me how to add long text in Explanation tool tip?
I am able to use short OTR texts in explanation tool tip but not able to use long OTR texts.
Thanks and regards,
Vivek Shetty.For long text
method1
Create TEXT node- general attributes change text type to include text
then you can input text name/text object/text id/language
method2
create PROGRAM LINE node - use FM READ_TEXT to read it to a internal table
then use LOOP or TABLE node to display it
For TEXT module(For foreign language)
Tr-code:smartforms -- choose Text module(not choose form)--create a text module object
then enter smartform Create TEXT node- general attributes change text type to text module
input the text module name which created by above
btw SO10 is just for Scriptform, in smartforms we use text module to replace SO10 -
Tool Tip for VO attribute using Groovy
Hi All,
I was wondering how to use groovy for Tool Tip of a view object attribute.
What I am basically looking for is return the String from a RowImpl class method and set it as a Tool Tip text.
my method:
public String applyToolTip(){
return "This is my Tool Tip";
Groovy used for Tool Tip Attribute
adf.object.applyToolTip()
also tried with,
adf.object.viewObject.applyToolTip()
None of them work. Also I tried writing the same method in VOImpl class. No luck.. Please help with explanation.
Thanks.Hi,
Groovy is not used throughout ADF BC. It can be used in validation and to define default values to an attribute but not for UI hints. For tool tips you would use message bundles (assuming your question is towards internationalization). Tool tips are defined on the AttributeDef of a View Object attribute and thus not defined per VO instance.
Frank -
How to use the user Input in a tool tip
Lets say I have two text boxes (Tb1 and Tb2). I want the input the user types in Tb1 to be part of the Tool Tip of TB2. So if the user types "Party" in Tb1, when you hover over Tb2 it say "Number for Party". Does this make sense?
Thanks!Adobe includes the Acrobat JavaScript API Reference in their SDK and online at the Adobe Developers Network.
-
Hi I'm a big fan. long time lurker first time poster
Currently the position of the tool tip depends on where the cursor first hovers over the image. Is there a way for the tool tip to appear in the same place no mater where the image is hovered?
below is the js and css
thanks
// SpryTooltip.js - version 0.9 - Spry 1.6.1
(function() { // BeginSpryComponent
if (typeof Spry == "undefined") window.Spry = {}; if (!Spry.Widget) Spry.Widget = {};
Spry.Widget.BrowserSniff = function()
var b = navigator.appName.toString();
var up = navigator.platform.toString();
var ua = navigator.userAgent.toString();
this.mozilla = this.ie = this.opera = this.safari = false;
var re_opera = /Opera.([0-9\.]*)/i;
var re_msie = /MSIE.([0-9\.]*)/i;
var re_gecko = /gecko/i;
var re_safari = /(applewebkit|safari)\/([\d\.]*)/i;
var r = false;
if ( (r = ua.match(re_opera))) {
this.opera = true;
this.version = parseFloat(r[1]);
} else if ( (r = ua.match(re_msie))) {
this.ie = true;
this.version = parseFloat(r[1]);
} else if ( (r = ua.match(re_safari))) {
this.safari = true;
if(parseFloat(r[2]) < 420)
this.version = 2;
else
this.version = 3;
} else if (ua.match(re_gecko)) {
var re_gecko_version = /rv:\s*([0-9\.]+)/i;
r = ua.match(re_gecko_version);
this.mozilla = true;
this.version = parseFloat(r[1]);
this.windows = this.mac = this.linux = false;
this.Platform = ua.match(/windows/i) ? "windows" :
(ua.match(/linux/i) ? "linux" :
(ua.match(/mac/i) ? "mac" :
ua.match(/unix/i)? "unix" : "unknown"));
this[this.Platform] = true;
this.v = this.version;
if (this.safari && this.mac && this.mozilla) {
this.mozilla = false;
Spry.is = new Spry.Widget.BrowserSniff();
Spry.Widget.Tooltip = function(tooltip_element, trigger_selector, options)
options = Spry.Widget.Utils.firstValid(options, {});
this.init(trigger_selector, tooltip_element, options);
if (Spry.Widget.Tooltip.onloadDidFire)
this.attachBehaviors();
Spry.Widget.Tooltip.loadQueue.push(this);
Spry.Widget.Tooltip.prototype.init = function(trigger_element, tooltip_element, options)
var Utils = Spry.Widget.Utils;
this.triggerElements = Utils.getElementsByClassName(trigger_element);
this.tooltipElement = Utils.getElement(tooltip_element);
options.showDelay = parseInt(Utils.firstValid(options.showDelay, 0), 10);
options.hideDelay = parseInt(Utils.firstValid(options.hideDelay, 0), 10);
if (typeof this.triggerElements == 'undefined' || !(this.triggerElements.length > 0))
this.showError('The element(s) "' + trigger_element + '" do not exist in the page');
return false;
if (typeof this.tooltipElement == 'undefined' || !this.tooltipElement)
this.showError('The element "' + tooltip_element + '" do not exists in the page');
return false;
this.listenersAttached = false;
this.hoverClass = "";
this.followMouse = false;
this.offsetX = 15;
this.offsetY = 15;
this.closeOnTooltipLeave = false;
this.useEffect = false;
Utils.setOptions(this, options);
this.animator = null;
for (var i =0; i < this.triggerElements.length; i++)
if (!this.triggerElements[i].className)
this.triggerElements[i].className = '';
if (this.useEffect){
switch (this.useEffect.toString().toLowerCase()){
case 'blind': this.useEffect = 'Blind'; break;
case 'fade': this.useEffect = 'Fade'; break;
default:
this.useEffect = false;
this.visibleTooltip = false;
// Hack for FF 3 - Safari 3: force painting of the element, in order to have the correct display
this.tooltipElement.offsetHeight;
// Optimisation: save browser work if display is already 'none'
if (Spry.Widget.Utils.getStyleProperty(this.tooltipElement, 'display') != 'none')
this.tooltipElement.style.display = 'none';
if (typeof this.offsetX != 'numeric')
this.offsetX = parseInt(this.offsetX, 10);
if (isNaN(this.offsetX))
this.offsetX = 0;
if (typeof this.offsetY != 'numeric')
this.offsetY = parseInt(this.offsetY, 10);
if (isNaN(this.offsetY))
this.offsetY = 0;
this.tooltipElement.style.position = 'absolute';
this.tooltipElement.style.top = '0px';
this.tooltipElement.style.left = '0px';
Spry.Widget.Tooltip.onloadDidFire = false;
Spry.Widget.Tooltip.loadQueue = [];
Spry.Widget.Tooltip.addLoadListener = function(handler)
if (typeof window.addEventListener != 'undefined')
window.addEventListener('load', handler, false);
else if (typeof document.addEventListener != 'undefined')
document.addEventListener('load', handler, false);
else if (typeof window.attachEvent != 'undefined')
window.attachEvent('onload', handler);
Spry.Widget.Tooltip.processLoadQueue = function(handler)
Spry.Widget.Tooltip.onloadDidFire = true;
var q = Spry.Widget.Tooltip.loadQueue;
var qlen = q.length;
for (var i = 0; i < qlen; i++)
if (!q[i].listenersAttached)
q[i].attachBehaviors();
Spry.Widget.Tooltip.addLoadListener(Spry.Widget.Tooltip.processLoadQueue);
Spry.Widget.Tooltip.prototype.addClassName = function(ele, className)
if (!ele || !className)
return;
if (ele.className.indexOf(className) == -1)
ele.className += (ele.className ? " " : "") + className;
Spry.Widget.Tooltip.prototype.removeClassName = function(ele, className)
if (!ele || !className )
return;
ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
Spry.Widget.Tooltip.prototype.showTooltip = function()
if (!this.visibleTooltip)
this.tooltipElement.style.visibility = 'hidden';
this.tooltipElement.style.zIndex = '9999';
this.tooltipElement.style.display = 'block';
Spry.Widget.Utils.putElementAt(this.tooltipElement, this.pos, {x:this.offsetX, y:this.offsetY}, true);
if(Spry.is.ie && Spry.is.version == '6')
this.createIframeLayer(this.tooltipElement);
if (!this.visibleTooltip)
if (this.useEffect)
if (typeof this.showEffect == 'undefined')
this.showEffect = new Spry.Widget.Tooltip[this.useEffect](this.tooltipElement, {from: 0, to: 1});
this.showEffect.start();
else
this.tooltipElement.style.visibility = 'visible';
this.visibleTooltip = true;
Spry.Widget.Tooltip.prototype.hideTooltip = function(quick)
if (this.useEffect && !quick)
if (typeof this.hideEffect == 'undefined')
this.hideEffect = new Spry.Widget.Tooltip[this.useEffect](this.tooltipElement, {from: 1, to: 0});
this.hideEffect.start();
else
if (typeof this.showEffect != 'undefined')
this.showEffect.stop();
this.tooltipElement.style.display = 'none';
if(Spry.is.ie && Spry.is.version == '6')
this.removeIframeLayer(this.tooltipElement);
if (this.hoverClass && !this.hideTimer)
for (var i = 0; i < this.triggerElements.length; i++)
this.removeClassName(this.triggerElements[i], this.hoverClass);
this.visibleTooltip = false;
Spry.Widget.Tooltip.prototype.displayTooltip = function(show) {
if (this.tooltipElement)
if (this.hoverClass){
for (var i = 0; i < this.triggerElements.length; i++)
this.removeClassName(this.triggerElements[i], this.hoverClass);
if (show)
if (this.hideTimer)
clearInterval(this.hideTimer);
delete(this.hideTimer);
if (this.hoverClass)
if (typeof this.triggerHighlight != 'undefined')
this.addClassName(this.triggerHighlight, this.hoverClass);
var self = this;
this.showTimer = setTimeout(function(){self.showTooltip()}, this.showDelay);
else
if (this.showTimer)
clearInterval(this.showTimer);
delete(this.showTimer);
var self = this;
this.hideTimer = setTimeout(function(){self.hideTooltip();}, this.hideDelay);
this.refreshTimeout();
Spry.Widget.Tooltip.prototype.onMouseOverTrigger = function(e)
var target = '';
if (Spry.is.ie)
target = e.srcElement;
else
target = e.target;
var contains = Spry.Widget.Utils.contains;
for (var i = 0; i < this.triggerElements.length; i++)
if (contains(this.triggerElements[i], target))
target = this.triggerElements[i];
break;
if (i == this.triggerElements.length) return;
if (this.visibleTooltip && this.triggerHighlight && this.triggerHighlight == target)
if (this.hideTimer)
clearInterval(this.hideTimer);
delete(this.hideTimer);
if (this.hoverClass)
if (typeof this.triggerHighlight != 'undefined')
this.addClassName(this.triggerHighlight, this.hoverClass);
return;
var pos = Spry.Widget.Utils.getAbsoluteMousePosition(e);
this.pos = {x: pos.x + this.offsetX, y: pos.y + this.offsetY};
this.triggerHighlight = target;
Spry.Widget.Tooltip.closeAll();
this.displayTooltip(true);
Spry.Widget.Tooltip.prototype.onMouseMoveTrigger = function(e)
var pos = Spry.Widget.Utils.getAbsoluteMousePosition(e);
this.pos = {x: pos.x + this.offsetX, y: pos.y + this.offsetY};
if (this.visibleTooltip)
this.showTooltip();
Spry.Widget.Tooltip.prototype.onMouseOutTrigger = function(e)
var target = '';
if (Spry.is.ie)
target = e.toElement;
else
target = e.relatedTarget;
var contains = Spry.Widget.Utils.contains;
for (var i=0; i < this.triggerElements.length; i++)
if (contains(this.triggerElements[i], target))
return;
this.displayTooltip(false);
Spry.Widget.Tooltip.prototype.onMouseOutTooltip = function(e)
var target = '';
if (Spry.is.ie)
target = e.toElement;
else
target = e.relatedTarget;
var contains = Spry.Widget.Utils.contains;
if (contains(this.tooltipElement, target))
return;
this.displayTooltip(false);
Spry.Widget.Tooltip.prototype.onMouseOverTooltip = function(e)
if (this.hideTimer)
clearInterval(this.hideTimer);
delete(this.hideTimer);
if (this.hoverClass)
if (typeof this.triggerHighlight != 'undefined')
this.addClassName(this.triggerHighlight, this.hoverClass);
Spry.Widget.Tooltip.prototype.refreshTimeout = function()
if (Spry.Widget.Tooltip.refreshTimeout != null)
clearTimeout(Spry.Widget.Tooltip.refreshTimeout);
Spry.Widget.Tooltip.refreshTimeout = null;
Spry.Widget.Tooltip.refreshTimeout = setTimeout(Spry.Widget.Tooltip.refreshAll, 100);
Spry.Widget.Tooltip.prototype.destroy = function()
for (var k in this)
try{
if (typeof this.k == 'object' && typeof this.k.destroy == 'function') this.k.destroy();
delete this.k;
}catch(err){}
Spry.Widget.Tooltip.prototype.checkDestroyed = function()
// checks the parent node. If it exists, then the element is still in the DOM
if (!this.tooltipElement || this.tooltipElement.parentNode == null)
return true;
return false;
Spry.Widget.Tooltip.prototype.attachBehaviors = function()
var self = this;
var ev = Spry.Widget.Utils.addEventListener;
for (var i=0; i< this.triggerElements.length; i++)
ev(this.triggerElements[i], 'mouseover', function(e) {self.onMouseOverTrigger(e || event); return true;}, false);
ev(this.triggerElements[i], 'mouseout', function(e) {self.onMouseOutTrigger(e || event); return true;}, false);
if (this.followMouse)
ev(this.triggerElements[i], 'mousemove', function(e) {self.onMouseMoveTrigger(e || event); return true;}, false);
if (this.closeOnTooltipLeave)
ev(this.tooltipElement, 'mouseover', function(e){self.onMouseOverTooltip(e || event); return true;}, false);
ev(this.tooltipElement, 'mouseout', function(e){self.onMouseOutTooltip(e || event); return true;}, false);
this.listenersAttached = true;
// createIframeLayer for Tooltip
// creates an IFRAME underneath a tooltip element so that it will show above form controls and ActiveX
Spry.Widget.Tooltip.prototype.createIframeLayer = function(tooltip)
if (typeof this.iframeLayer == 'undefined')
var layer = document.createElement('iframe');
layer.tabIndex = '-1';
layer.src = 'javascript:"";';
layer.scrolling = 'no';
layer.frameBorder = '0';
layer.className = 'iframeTooltip';
tooltip.parentNode.appendChild(layer);
this.iframeLayer = layer;
this.iframeLayer.style.left = tooltip.offsetLeft + 'px';
this.iframeLayer.style.top = tooltip.offsetTop + 'px';
this.iframeLayer.style.width = tooltip.offsetWidth + 'px';
this.iframeLayer.style.height = tooltip.offsetHeight + 'px';
this.iframeLayer.style.display = 'block';
// removeIframeLayer for Tooltip Element
// removes an IFRAME underneath a tooltip to reveal any form controls and ActiveX
Spry.Widget.Tooltip.prototype.removeIframeLayer = function(tooltip)
if (this.iframeLayer)
this.iframeLayer.style.display = 'none';
Spry.Widget.Tooltip.prototype.showError = function(msg)
alert('Spry.Widget.Tooltip ERR: ' + msg);
Spry.Widget.Tooltip.refreshAll = function()
var q = Spry.Widget.Tooltip.loadQueue;
var qlen = q.length;
for (var i = 0; i < qlen ; i++)
if (q[i].checkDestroyed())
// the trigger element is no longer in the dom, we should remove the current widget.
q[i].destroy();
q.splice(i, 1);
i--;
qlen = q.length;
Spry.Widget.Tooltip.closeAll = function()
var q = Spry.Widget.Tooltip.loadQueue;
var qlen = q.length;
for (var i = 0; i < qlen ; i++)
if (q[i].visibleTooltip)
q[i].hideTooltip(true);
if (q[i].showTimer)
clearTimeout(q[i].showTimer);
if (q[i].hideTimer)
clearTimeout(q[i].hideTimer);
Spry.Widget.Tooltip.Animator = function(element, opts)
this.timer = null;
this.fps = 60;
this.duration = 500;
this.startTime = 0;
this.transition = Spry.Widget.Tooltip.Animator.defaultTransition;
this.onComplete = null;
if (typeof element == 'undefined') return;
this.element = Spry.Widget.Utils.getElement(element);
Spry.Widget.Utils.setOptions(this, opts, true);
this.interval = this.duration / this.fps;
Spry.Widget.Tooltip.Animator.defaultTransition = function(time, begin, finish, duration) { time /= duration; return begin + ((2 - time) * time * finish); };
Spry.Widget.Tooltip.Animator.prototype.start = function()
var self = this;
this.startTime = (new Date).getTime();
this.beforeStart();
this.timer = setInterval(function() { self.stepAnimation(); }, this.interval);
Spry.Widget.Tooltip.Animator.prototype.stop = function()
if (this.timer)
clearTimeout(this.timer);
this.timer = null;
Spry.Widget.Tooltip.Animator.prototype.stepAnimation = function(){};
Spry.Widget.Tooltip.Animator.prototype.beforeStart = function(){};
Spry.Widget.Tooltip.Animator.prototype.destroy = function()
for (var k in this)
try
delete this.k;
}catch(err){}
Spry.Widget.Tooltip.Fade = function(element, opts)
Spry.Widget.Tooltip.Animator.call(this, element, opts);
if (Spry.is.ie)
this.origOpacity = this.element.style.filter;
else
this.origOpacity = this.element.style.opacity;
Spry.Widget.Tooltip.Fade.prototype = new Spry.Widget.Tooltip.Animator();
Spry.Widget.Tooltip.Fade.prototype.constructor = Spry.Widget.Tooltip.Fade;
Spry.Widget.Tooltip.Fade.prototype.stepAnimation = function()
var curTime = (new Date).getTime();
var elapsedTime = curTime - this.startTime;
var i, obj;
if (elapsedTime >= this.duration)
this.beforeStop();
this.stop();
return;
var ht = this.transition(elapsedTime, this.from, this.to - this.from, this.duration);
if (Spry.is.ie)
var filter = this.element.style.filter.replace(/alpha\s*\(\s*opacity\s*=\s*[0-9\.]{1,3}\)/, '');
this.element.style.filter = filter + 'alpha(opacity=' + parseInt(ht * 100, 10) + ')';
else
this.element.style.opacity = ht;
this.element.style.visibility = 'visible';
this.element.style.display = 'block';
Spry.Widget.Tooltip.Fade.prototype.beforeStop = function()
if (this.from > this.to)
this.element.style.display = 'none';
if (Spry.is.mozilla)
this.element.style.filter = this.origOpacity;
else
this.element.style.opacity = this.origOpacity;
Spry.Widget.Tooltip.Blind = function(element, opts)
this.from = 0;
this.to = 100;
Spry.Widget.Tooltip.Animator.call(this, element, opts);
this.element.style.visibility = 'hidden';
this.element.style.display = 'block';
this.origHeight = parseInt(Spry.Widget.Utils.getStyleProperty(this.element, 'height'),10);
if (isNaN(this.origHeight))
this.origHeight = this.element.offsetHeight;
if (this.to == 0)
this.from = this.origHeight;
else
this.to = this.origHeight;
Spry.Widget.Tooltip.Blind.prototype = new Spry.Widget.Tooltip.Animator();
Spry.Widget.Tooltip.Blind.prototype.constructor = Spry.Widget.Tooltip.Blind;
Spry.Widget.Tooltip.Blind.prototype.beforeStart = function()
this.origOverflow = Spry.Widget.Utils.getStyleProperty(this.element, 'overflow');
this.element.style.overflow = 'hidden';
Spry.Widget.Tooltip.Blind.prototype.stepAnimation = function()
var curTime = (new Date).getTime();
var elapsedTime = curTime - this.startTime;
var i, obj;
if (elapsedTime >= this.duration)
this.beforeStop();
this.stop();
return;
var ht = this.transition(elapsedTime, this.from, this.to - this.from, this.duration);
this.element.style.height = Math.floor(ht) + 'px';
this.element.style.visibility = 'visible';
this.element.style.display = 'block';
Spry.Widget.Tooltip.Blind.prototype.beforeStop = function()
this.element.style.overflow = this.origOverflow;
if (this.from > this.to)
this.element.style.display = 'none';
this.element.style.height = this.origHeight + 'px';
// Spry.Widget.Utils
if (!Spry.Widget.Utils) Spry.Widget.Utils = {};
Spry.Widget.Utils.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
if (!optionsObj)
return;
for (var optionName in optionsObj)
if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
continue;
obj[optionName] = optionsObj[optionName];
Spry.Widget.Utils.getElement = function(ele)
if (ele && typeof ele == "string")
return document.getElementById(ele);
return ele;
Spry.Widget.Utils.getElementsByClassName = function(sel)
if (!sel.length > 0)
return null;
var selectors = sel.split(',');
var el = [];
for (var i =0; i < selectors.length; i++)
var cs = selectors[i];
var chunk = cs.split(' ');
var parents = [];
parents[0] = [];
parents[0][0] = document.body;
for (var j = 0; j < chunk.length; j++)
var tokens = Spry.Widget.Utils.getSelectorTokens(chunk[j]);
for (var k =0; k < parents[j].length; k++)
var childs = parents[j][k].getElementsByTagName('*');
parents[j+1] = [];
for (var l=0; l < childs.length; l++)
if (Spry.Widget.Utils.hasSelector(childs[l], tokens))
parents[j+1].push(childs[l]);
if (parents[j])
for (var k = 0; k < parents[j].length; k++)
el.push(parents[j][k]);
return el;
Spry.Widget.Utils.firstValid = function()
var ret = null;
var a = Spry.Widget.Utils.firstValid;
for(var i=0; i< a.arguments.length; i++)
if (typeof(a.arguments[i]) != 'undefined')
ret = a.arguments[i];
break;
return ret;
Spry.Widget.Utils.getSelectorTokens = function(str)
str = str.replace(/\./g, ' .');
str = str.replace(/\#/g, ' #');
str = str.replace(/^\s+|\s+$/g,"");
return str.split(' ');
Spry.Widget.Utils.hasSelector = function(el, tokens)
for (var i =0; i< tokens.length; i++)
switch (tokens[i].charAt(0))
case '.': if (!el.className || el.className.indexOf(tokens[i].substr(1)) == -1) return false; break;
case '#': if (!el.id || el.id != tokens[i].substr(1)) return false; break;
default: if (el.nodeName.toLowerCase != tokens[i]) return false; break;
return true;
Spry.Widget.Utils.addEventListener = function(element, eventType, handler, capture)
try
if (element.addEventListener)
element.addEventListener(eventType, handler, capture);
else if (element.attachEvent)
element.attachEvent("on" + eventType, handler);
catch (e) {}
Spry.Widget.Utils.getStyleProperty = function(element, prop)
var value;
var camelized = Spry.Widget.Utils.camelize(prop);
try
if (element.style)
value = element.style[camelized];
if (!value)
if (document.defaultView && document.defaultView.getComputedStyle)
var css = document.defaultView.getComputedStyle(element, null);
value = css ? css.getPropertyValue(prop) : null;
else if (element.currentStyle)
value = element.currentStyle[camelized];
catch (e) {}
return value == 'auto' ? null : value;
Spry.Widget.Utils.camelize = function(str)
if (str.indexOf('-') == -1)
return str;
var oStringList = str.split('-');
var isFirstEntry = true;
var camelizedString = '';
for(var i=0; i < oStringList.length; i++)
if(oStringList[i].length>0)
if(isFirstEntry)
camelizedString = oStringList[i];
isFirstEntry = false;
else
var s = oStringList[i];
camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
return camelizedString;
* Spry.Widget.Utils.getPixels
* returns the value of a CSS property as Int, converting medium to 2
* @param {DOMElement} m - elements
* @param {String} s -
Spry.Widget.Utils.getPixels = function (m, s)
var v = Spry.Widget.Utils.getStyleProperty(m, s);
if (v == "medium") {
v = 2;
} else {
v = parseInt(v, 10);
v = isNaN(v)?0:v;
return v;
Spry.Widget.Utils.getAbsoluteMousePosition = function(ev)
var pos = {x:0, y:0};
if (ev.pageX)
pos.x = ev.pageX;
else if (ev.clientX)
pos.x = ev.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
if (isNaN(pos.x)) pos.x = 0;
if (ev.pageY)
pos.y = ev.pageY;
else if (ev.clientY)
pos.y = ev.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
if (isNaN(pos.y)) pos.y = 0;
return pos;
* Spry.Widget.Utils.getBorderBox
* returns a border box object (x,y,width,height) which perfectly covers the el element and its borders
* the x, y are absolute coordinates measured from from the window viewport
* use the box as the second parameter in Spry.Widget.Utils.setBorderBox
* @param {DOMElement or String} el -
* @param {DOMDocument,optional} doc -
Spry.Widget.Utils.getBorderBox = function (el, doc)
doc = doc || document;
if (typeof el == 'string')
el = doc.getElementById(el);
if (!el)
return false;
if (el.parentNode === null || Spry.Widget.Utils.getStyleProperty(el, 'display') == 'none')
//element must be visible to have a box
return false;
var ret = {x:0, y:0, width:0, height:0};
var parent = null;
var box;
if (el.getBoundingClientRect) { // IE
box = el.getBoundingClientRect();
var scrollTop = doc.documentElement.scrollTop || doc.body.scrollTop;
var scrollLeft = doc.documentElement.scrollLeft || doc.body.scrollLeft;
ret.x = box.left + scrollLeft;
ret.y = box.top + scrollTop;
ret.width = box.right - box.left;
ret.height = box.bottom - box.top;
} else if (doc.getBoxObjectFor) { // gecko
box = doc.getBoxObjectFor(el);
ret.x = box.x;
ret.y = box.y;
ret.width = box.width;
ret.height = box.height;
var btw = Spry.Widget.Utils.getPixels(el, "border-top-width");
var blw = Spry.Widget.Utils.getPixels(el, "border-left-width");
ret.x -= blw;
ret.y -= btw;
} else { // safari/opera
ret.x = el.offsetLeft;
ret.y = el.offsetTop;
ret.width = el.offsetWidth;
ret.height = el.offsetHeight;
parent = el.offsetParent;
if (parent != el)
while (parent)
ret.x += parent.offsetLeft;
ret.y += parent.offsetTop;
parent = parent.offsetParent;
var blw = Spry.Widget.Utils.getPixels(el, "border-left-width");
var btw = Spry.Widget.Utils.getPixels(el, "border-top-width");
ret.x -= blw;
ret.y -= btw;
// opera & (safari absolute) incorrectly account for body offsetTop
var ua = navigator.userAgent.toLowerCase();
if (Spry.is.opera || Spry.is.safari && Spry.Widget.Utils.getStyleProperty(el, 'position') == 'absolute')
ret.y -= doc.body.offsetTop;
if (el.parentNode)
parent = el.parentNode;
else
parent = null;
while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML')
ret.x -= (isNaN(parent.scrollLeft) ? 0 : parent.scrollLeft);
ret.y -= (isNaN(parent.scrollTop) ? 0 : parent.scrollTop);
if (parent.parentNode)
parent = parent.parentNode;
else
parent = null;
return ret;
* Spry.Widget.Utils.setBorderBox
* puts the element el to the location specified by box
* @param {DOMElement} el - the element to be placed
* @param {Object} box - hash containing the x and y coordinates where to put el
Spry.Widget.Utils.setBorderBox = function (el, box) {
var pos = Spry.Widget.Utils.getBorderBox(el, el.ownerDocument);
if (pos === false)
return false;
var delta = {
x:Spry.Widget.Utils.getPixels(el, 'left'),
y:Spry.Widget.Utils.getPixels(el, 'top')
var new_pos = {x:0, y:0, w:0, h:0};
if (typeof box.x == 'number') {
new_pos.x = box.x - pos.x + delta.x;
if (typeof box.y == 'number') {
new_pos.y = box.y - pos.y + delta.y;
if (typeof box.x == 'number') {
el.style.left = new_pos.x + 'px';
if (typeof box.y == 'number') {
el.style.top = new_pos.y + 'px';
return true;
Spry.Widget.Utils.putElementAt = function (source, target, offset, biv)
biv = Spry.Widget.Utils.firstValid(biv, true);
var source_box = Spry.Widget.Utils.getBorderBox(source, source.ownerDocument);
Spry.Widget.Utils.setBorderBox(source, target);
if (biv)
Spry.Widget.Utils.bringIntoView(source);
return true;
* Spry.Widget.Utils.bringIntoView
* set the position of the source element so it is completely visible in the window
* @param {DOMElemenet} source - the element to be
Spry.Widget.Utils.bringIntoView = function (source) {
var box = Spry.Widget.Utils.getBorderBox(source, source.ownerDocument);
if (box === false) {
return false;
var current = {
x:Spry.Widget.Utils.getPixels(source, 'left'),
y:Spry.Widget.Utils.getPixels(source, 'top')
var delta = {x:0, y:0};
var offset_fix = {x:0, y:0};
var strictm = source.ownerDocument.compatMode == "CSS1Compat";
var doc = (Spry.is.ie && strictm || Spry.is.mozilla)?source.ownerDocument.documentElement:source.ownerDocument.body;
offset_fix.x = Spry.Widget.Utils.getPixels(doc, 'border-left-width');
offset_fix.y = Spry.Widget.Utils.getPixels(doc, 'border-top-width');
var st = doc.scrollTop;
var ch = self.innerHeight ? self.innerHeight : doc.clientHeight;
var t = box.y + (Spry.is.ie?-offset_fix.y:offset_fix.y);
var b = box.y + box.height + (Spry.is.ie?-offset_fix.y:offset_fix.y);
if ( b - st > ch) {
delta.y = ch - (b - st);
if (t + delta.y < st) {
delta.y = st-t;
} else if (t < st) {
delta.y = st - t;
if (delta.y != 0) {
source.style.top = (current.y + delta.y) + 'px';
var sl = doc.scrollLeft;
var cw = doc.clientWidth;
var l = box.x + (Spry.is.ie?-offset_fix.x:offset_fix.x);
var r = box.x + box.width + (Spry.is.ie?-offset_fix.x:offset_fix.x);
if ( r - sl > cw) {
delta.x = cw - (r - sl);
if (l + delta.x < sl) {
delta.x = sl-l;
} else if (l < sl) {
delta.x = sl - l;
if (delta.x != 0) {
source.style.left = (current.x + delta.x) + 'px';
Spry.Widget.Utils.contains = function (who, what) {
if (typeof who.contains == 'object') {
return what && who && (who == what || who.contains(what));
} else {
var el = what;
while(el) {
try{
if (el == who) {
return true;
el = el.parentNode;
}catch(a){return false;}
return false;
})(); // EndSpryComponent
@charset "UTF-8";
/* SpryTooltip.css - version 0.2 - Spry 1.6.1 */
/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
/* HACK FOR IE: to make sure the tooltips show above form controls, we underlay each tooltip with an iframe */
.iframeTooltip
position: absolute;
z-index: 1010;
filter:alpha(opacity:0.1);
.tooltipContent
font-size: 11px;
font-style: italic;
color: #332c40;
width: 96px;
height: 51px;
background: url(../_images/recipe/bubble2.png) no-repeat;
font-family: "Comic Sans MS", cursive;
margin: 0px;
left: -200px;
top: -200px;
padding-top: 5px;
vertical-align: middle;
position: fixed;I couldn't get this script to work with my code:
<a id="greensource" href="a"><img src="images/greensource.png" alt="Greensource Initiative" width="193" height="71" border="0" usemap="#Map7" id="sprytrigger6" title="Greensource Initiative" />
<map name="Map7" id="Map7">
<area shape="rect" coords="-22,-15,197,79" href="#" />
</map>
</a>
<div class="tooltipContent" id="green">
<div class="secondback">
<div style="padding: 15px;">
<h1>GREENSOURCE</h1>
<h2>INITIATIVE™</h2>
<p>Manufactred within Greensource Initiative™ guildelines for use of recycled materials, renewable energy and non-hazardous packaging materials. RoHS Compliant.</p>
<p class="morebutton"><a href="#">LEARN MORE</a></p>
</div>
</div>
</div>
<script type="text/javascript">
<!--
var sprytooltip7 = new Spry.Widget.Tooltip("green", "#greensource");
//-->
</script>
Maybe someone can point out my problem?
CSS:
.tooltipContent
margin: 0;
padding: 0;
background: #FFF url(../images/bottom-gradient.png) repeat-x bottom left;
font-family: "Myriad Pro", Tahoma, Geneva, sans-serif;
text-align: left;
box-shadow: 2px 2px 4px #b6b5b6;
-webkit-box-shadow: 2px 2px 4px #b6b5b6;
-moz-box-shadow: 2px 2px 4px #b6b5b6;
position: fixed;
#green {
position: absolute;
border: none;
top: 200px;
left: 200px; -
Hi,
Strange phenomenon just started happening.
I have many client flash sites, some of which have been
running for years.
Suddenly, if you let the mouse hover (just stay in one place
for a few seconds), a yellow "tool tip", you know those little
yellow rectangles with help in them, pops up. The text of the tool
tip is the Title parameter of the Object tag in the HTML file.
I have one site that has "banner" as the Title property in
the object tag. So, a little yellow box with the text "banner" pops
up erratically whenever you leave the mouse in one place for more
than a second or two. It also goes away randomly.
This has not happened before, until very recently, and it has
not happened on the PC - just on Safari on a Mac.
Flash Player update problem? I'm baffled. I've removed the
title property from the object tags for now, but I don't know if
that will fix the problem.
Anyone else seeing the same issue?
Thanks, AAK (Alan)No matter how I create form fields, they all have a tool tip, even if there is null character string for its value.
You can create a small JavaScript program that you can run through Acrobat's JavaScript console to place a null string in the 'userName' property of each form field in the PDF.
// get the number of fields in this PDF
var nNumFields = this.numFields;
// a variable for the field name being processed
var cFieldName;
// loop through all of the fields in the PDF
for(i = 0; i < nNumFields; i++) {
// get the field name for the ith field
cFieldName = this.getNthFieldName(i);
// set the userName to a null string
this.getField(cFieldName).userName = "";
} // end for loop
See The Acrobat JavaScript Console (Your best friend for developing Acrobat JavaScript) by Thom Parker for information about using the JavaScript console in Acrobat. -
hello again,
just one more question :) i was wondering if anyone knows how to implement tool tips with controls in JavaForte. i looked through the properties window, but didnt see any .ToolTipText property.... i know its possible, and probably just one line of code, anyone know it? thanks a lot in advance for any help! talk to ya later,
Steven M. Berardi
[email protected]
--------------------------------I'm not sure if you're refering to components you can place in containers, but if you are, there's a ToolTipText option in the component inspector for every component you can select. If you want to change the tooltips manually for specific components, you can use the method (Component).setToolTipText(String text). Hope that helps...
hello again,
just one more question :) i was wondering if anyone
knows how to implement tool tips with controls in
JavaForte. i looked through the properties window,
but didnt see any .ToolTipText property.... i know
its possible, and probably just one line of code,
anyone know it? thanks a lot in advance for any help!
talk to ya later,
Steven M. Berardi
[email protected] -
Hello,
Is it possible to have a tool tip for the selected text in a text frame.
Thanks.I'm not sure if you're refering to components you can place in containers, but if you are, there's a ToolTipText option in the component inspector for every component you can select. If you want to change the tooltips manually for specific components, you can use the method (Component).setToolTipText(String text). Hope that helps...
hello again,
just one more question :) i was wondering if anyone
knows how to implement tool tips with controls in
JavaForte. i looked through the properties window,
but didnt see any .ToolTipText property.... i know
its possible, and probably just one line of code,
anyone know it? thanks a lot in advance for any help!
talk to ya later,
Steven M. Berardi
[email protected] -
Is there a way to create a dynamic tool tip for the labels on
the chart axis. For example I have a bar chart that shows the
quantity ordered in 5 categories. I want to be able to add a tool
tip to the category label on the vertical axis to help explain what
the category is. I need this tool tip to change based on the
category that is rolled over. I'm assuming I should be able to do
something with the ToolTipCreate action on an axis renderer but I
can't figure out how to find out which label is being moused over.
Any help would be greatly appreciated. Thanks in advance.I'm not sure if you're refering to components you can place in containers, but if you are, there's a ToolTipText option in the component inspector for every component you can select. If you want to change the tooltips manually for specific components, you can use the method (Component).setToolTipText(String text). Hope that helps...
hello again,
just one more question :) i was wondering if anyone
knows how to implement tool tips with controls in
JavaForte. i looked through the properties window,
but didnt see any .ToolTipText property.... i know
its possible, and probably just one line of code,
anyone know it? thanks a lot in advance for any help!
talk to ya later,
Steven M. Berardi
[email protected] -
Enable tool tip in Exported PDF document from a CRE Report
Hi All,
We are on BObj 4.0 and using CRE for our reports. We have enabled Tool tip text on mouse over for certain labels which works great in browser. When we export to PDF, we dont see the Tool tip text. Is there a way we can configure this in CRE so that the exported PDF also shows the Tool tip text?
Regards,
SundarI checked online and found this Note - 1567798 - Crystal Reports does not export Tool Tips when exported to Pdf Format. Does this apply to CRE also or just CR 2008?
Regards,
Sundar -
How to implement tool-tip for the list items for the Choice column in SharePoint 2013
I had created a simple list with a "Choice" column, i have three entries in my drop-down,
First Entry
Second Entry
Third Entry.
If i select any entries in drop-down and hour-over (Second Entry), a
tool-tip need need to show.
Is it possible? If yes how to implement any help will be appreciated.Hi,
We can use JavaScript to achieve it.
The following code for your reference:
<script type="text/javascript" src="/sites/DennisSite/Shared%20Documents/js/wz_tooltip.js"></script>
<script type="text/javascript" src="/sites/DennisSite/Shared%20Documents/js/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
$(function () {
$("select[title='Choice']").change(function(){
Tip($(this).val());
$("select[title='Choice']").mouseout(function(){
UnTip();
</script>
Download wz_tooltip.js:
http://www.walterzorn.de/en/tooltip/tooltip_e.htm#download
Best Regards
Dennis Guo
TechNet Community Support -
I would like to see the actual email address in a Tool Tip when I mouse over the From address
I use Thunderbird to access my IMAP email account with a non-enormous ISP. Thunderbird is a great email client.
One thing I really miss when using Thunderbird vs. going to my email using a browser: in the browser, when I mouse over the From email address, a tool tip pops up showing me the actual email address, not the alias (or whatever it's called). Please see the attached image for an example of the mouse over tool tip. Is there a way to do this in Thunderbird?more misinformation and urban myths here than facts.
1. Thunderbird blocks remote images by default.
2. Thunderbird does not allow scripts in mail. If they are there they do not run.
3. The only link SPAMMERS or anybody in marketing gets to you is when you download their remote images, run scripts in the mail or click on links to go to their web sites.
4. When I or a spammer send a mail to say [email protected] Most mail servers will refuse delivery unless the address exists on their server.
5. True spammers do not care if a large percentage of the mail they send is to dead email addresses and they make little or no effort to validate active addresses. Corporations like Walmart, Woolworths here in Australia, Ebay and Paypal are very interested.
With that knowledge, you are now aware that opening the mail tells a spammer nothing even in the remote chance they are interested.
Oh and the source of the urban myth is Microsoft whose mail clients allow scripting, remote images and uses the file extension of the file not it's mime type to determine how to open it.
That is the difference between a mail client where the developers think security first and one where the developers give the user what they want and try to tack on security after the fact.
Maybe you are looking for
-
IF conditions stopped working in RTF Template
Hi, After applying Financials Family Pack G and Running 'XML Publisher Re-Generate template' program. If conditions with xdoxslt:get_variable on RTF template stopped working. Oracle Apps version: 11.5.10.2 XML Publisher version: 5.0.0 Any help or dir
-
How to downgrade from beta 8 to 1.1.4??
Hi! I have a paid iPhone Developer account with beta 8 of the firmware installed. Now that I'm selling my iPhone, I need to downgrade it to 1.1.4. The problem is that I'm unable to restore 1.1.4 through iTunes 7.7. I get a error code of 20?? I also t
-
What are the physical topology and logical topology in sharepoint
Hi what are the physical topology and logical topology in sharepoint how to define the physical topology and logical topology in sharepoint adil
-
I just tried updating to iTunes 10.7 and when I try to launch it I get this error message-The procedure entry point AVCFPlayerSetDirect3DDevice could not be located in the dynamic library AVFoundationCF.dll. Them it tells me to re-install iTunes and
-
I have been having major problems with iPhoto since upgrading to Mavericks. I can't upgrade to the latest iphoto as I keep being told my Apple ID is not recognised. Howvever, It has been OK for other upgrades I have made over the last 30 days. I was