You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by jf...@apache.org on 2011/10/18 20:18:45 UTC

svn commit: r1185779 - /incubator/vcl/trunk/web/js/vcldojo/HoverTooltip.js

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;
+			}
+		}
+	}
+);
+}