Author: jfthomps
Date: Tue Oct 18 18:18:45 2011
New Revision: 1185779

URL: http://svn.apache.org/viewvc?rev=1185779&view=rev
Log:
no JIRA

added this widget as part of the major rewrite of viewRequests in requests.php 
(svn revision 1097842 - this should have been checked in at that point)

Added:
    incubator/vcl/trunk/web/js/vcldojo/HoverTooltip.js

Added: incubator/vcl/trunk/web/js/vcldojo/HoverTooltip.js
URL: 
http://svn.apache.org/viewvc/incubator/vcl/trunk/web/js/vcldojo/HoverTooltip.js?rev=1185779&view=auto
==============================================================================
--- incubator/vcl/trunk/web/js/vcldojo/HoverTooltip.js (added)
+++ incubator/vcl/trunk/web/js/vcldojo/HoverTooltip.js Tue Oct 18 18:18:45 2011
@@ -0,0 +1,143 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+if(! dojo._hasResource["vcldojo.HoverTooltip"]) {
+dojo._hasResource["vcldojo.HoverTooltip"] = true;
+dojo.provide("vcldojo.HoverTooltip");
+
+dojo.declare(
+       "vcldojo._MasterTooltip",
+       dijit._MasterTooltip,
+       {
+               tooltipobj: '',
+               _saveAroundNode: '',
+               templateString: dojo.cache("dijit", "templates/Tooltip.html", 
"<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\">\n\t<div 
class=\"dijitTooltipContainer dijitTooltipContents\" 
dojoAttachPoint=\"containerNode\" 
dojoAttachEvent=\"onmouseenter:_mouseIn,onmouseleave:_mouseOut\" 
waiRole='alert'></div>\n\t<div class=\"dijitTooltipConnector\" 
dojoAttachPoint=\"connectorNode\"></div>\n</div>\n"),
+               _mouseIn: function(e) {
+                       this.tooltipobj._hovering = true;
+               },
+               _mouseOut: function(e) {
+                       this.tooltipobj._hovering = false;
+                       this.hide(this._saveAroundNode);
+                       if(this.tooltipobj._showTimer) {
+                               clearTimeout(this.tooltipobj._showTimer);
+                               delete this.tooltip._showTimer;
+                       }
+               },
+
+               show: function(/*String*/ innerHTML, /*DomNode*/ aroundNode, 
/*String[]?*/ position, /*Boolean*/ rtl, tooltipobj){
+                       // summary:
+                       //              Display tooltip w/specified contents to 
right of specified node
+                       //              (To left if there's no space on the 
right, or if rtl == true)
+                       this.tooltipobj = tooltipobj;
+                       this.tooltipobj._hovering = false;
+
+                       this._saveAroundNode = aroundNode;
+
+                       if(this.aroundNode && this.aroundNode === aroundNode){
+                               return;
+                       }
+
+                       if(this.fadeOut.status() == "playing"){
+                               // previous tooltip is being hidden; wait until 
the hide completes then show new one
+                               this._onDeck=arguments;
+                               return;
+                       }
+                       this.containerNode.innerHTML=innerHTML;
+
+                       var pos = 
dijit.placeOnScreenAroundElement(this.domNode, aroundNode, 
dijit.getPopupAroundAlignment((position && position.length) ? position : 
dijit.Tooltip.defaultPosition, !rtl), dojo.hitch(this, "orient"));
+
+                       // show it
+                       dojo.style(this.domNode, "opacity", 0);
+                       this.fadeIn.play();
+                       this.isShowingNow = true;
+                       this.aroundNode = aroundNode;
+               }
+       }
+);
+
+dijit.showTooltip = function(/*String*/ innerHTML, /*DomNode*/ aroundNode, 
/*String[]?*/ position, /*Boolean*/ rtl, tooltipobj){
+       // summary:
+       //              Display tooltip w/specified contents in specified 
position.
+       //              See description of dijit.Tooltip.defaultPosition for 
details on position parameter.
+       //              If position is not specified then 
dijit.Tooltip.defaultPosition is used.
+       if(!dijit._masterTT){ dijit._masterTT = new vcldojo._MasterTooltip(); }
+       return dijit._masterTT.show(innerHTML, aroundNode, position, rtl, 
tooltipobj);
+};
+
+dijit.hideTooltip = function(aroundNode){
+       // summary:
+       //              Hide the tooltip
+       if(!dijit._masterTT){ dijit._masterTT = new vcldojo._MasterTooltip(); }
+       return dijit._masterTT.hide(aroundNode);
+};
+
+dojo.declare(
+       "vcldojo.HoverTooltip",
+       dijit.Tooltip,
+       {
+               _hovering: false,
+               _onUnHover: function(e) {
+                       if(this._focus){ return; }
+
+                       if(this._showTimer){
+                               clearTimeout(this._showTimer);
+                               delete this._showTimer;
+                       }
+                       if(! this._hideTimer) {
+                               this._hideTimer = setTimeout(dojo.hitch(this, 
function(){this.close()}), 500);
+                       }
+               },
+
+               open: function(/*DomNode*/ target){
+                       // summary:
+                       //              Display the tooltip; usually not called 
directly.
+                       // tags:
+                       //              private
+
+                       if(this._showTimer){
+                               clearTimeout(this._showTimer);
+                               delete this._showTimer;
+                       }
+                       dijit.showTooltip(this.label || this.domNode.innerHTML, 
target, this.position, !this.isLeftToRight(), this);
+
+                       this._connectNode = target;
+                       this.onShow(target, this.position);
+               },
+
+               close: function(){
+                       // summary:
+                       //              Hide the tooltip or cancel timer for 
show of tooltip
+                       // tags:
+                       //              private
+                       if(this._hovering == true) {
+                               return;
+                       }
+
+                       if(this._connectNode){
+                               // if tooltip is currently shown
+                               dijit.hideTooltip(this._connectNode);
+                               delete this._connectNode;
+                               this.onHide();
+                       }
+                       if(this._showTimer){
+                               // if tooltip is scheduled to be shown (after a 
brief delay)
+                               clearTimeout(this._showTimer);
+                               delete this._showTimer;
+                       }
+               }
+       }
+);
+}


Reply via email to