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