diff --git a/apps/common/main/resources/less/tooltip.less b/apps/common/main/resources/less/tooltip.less index 73c0418ecd..ca97261f9d 100644 --- a/apps/common/main/resources/less/tooltip.less +++ b/apps/common/main/resources/less/tooltip.less @@ -66,4 +66,24 @@ .auto-tooltip .tooltip-inner { max-width: none; +} + +.eyedropper-color { + width: 30px; + height: 30px; + border: @scaled-one-px-value-ie solid @background-normal; + border: @scaled-one-px-value solid @background-normal; + outline: @scaled-one-px-value-ie solid @border-regular-control; + outline: @scaled-one-px-value solid @border-regular-control; + position: absolute; + top: -1000px; + left: -1000px; + z-index: 1001; +} + +.eyedropper-tooltip { + .tooltip-inner { + padding: 2px; + line-height: 16px; + } } \ No newline at end of file diff --git a/apps/documenteditor/main/app/controller/DocumentHolder.js b/apps/documenteditor/main/app/controller/DocumentHolder.js index 4244dd2b38..abcd1a81a6 100644 --- a/apps/documenteditor/main/app/controller/DocumentHolder.js +++ b/apps/documenteditor/main/app/controller/DocumentHolder.js @@ -139,6 +139,18 @@ define([ isHidden: true, isVisible: false }; + me.eyedropperTip = { + toolTip: new Common.UI.Tooltip({ + owner: this, + html: true, + cls: 'eyedropper-tooltip' + }), + isHidden: true, + isVisible: false, + eyedropperColor: null, + tipInterval: null, + isTipVisible: false + } me.userTooltip = true; me.wrapEvents = { userTipMousover: _.bind(me.userTipMousover, me), @@ -170,6 +182,7 @@ define([ /** coauthoring begin **/ me.userTipHide(); /** coauthoring end **/ + me.hideEyedropper(); me.mode && me.mode.isDesktopApp && me.api && me.api.asc_onShowPopupWindow(); }, @@ -183,6 +196,7 @@ define([ me.userTipHide(); /** coauthoring end **/ me.hideTips(); + me.hideEyedropper(); me.onDocumentHolderResize(); } }); @@ -946,6 +960,17 @@ define([ /** coauthoring end **/ }, + hideEyedropper: function () { + if (this.eyedropperTip.isVisible) { + this.eyedropperTip.isVisible = false; + this.eyedropperTip.eyedropperColor.css({left: '-1000px', top: '-1000px'}); + } + if (this.eyedropperTip.isTipVisible) { + this.eyedropperTip.isTipVisible = false; + this.eyedropperTip.toolTip.hide(); + } + }, + onMouseMoveStart: function() { var me = this; me.screenTip.isHidden = true; @@ -975,6 +1000,9 @@ define([ me.mouseMoveData = null; }); } + if (me.eyedropperTip.isHidden) { + me.hideEyedropper(); + } }, onMouseMove: function(moveData) { @@ -996,7 +1024,7 @@ define([ type = moveData.get_Type(); if (type==Asc.c_oAscMouseMoveDataTypes.Hyperlink || type==Asc.c_oAscMouseMoveDataTypes.Footnote || type==Asc.c_oAscMouseMoveDataTypes.Form || - type==Asc.c_oAscMouseMoveDataTypes.Review && me.mode.reviewHoverMode) { + type==Asc.c_oAscMouseMoveDataTypes.Review && me.mode.reviewHoverMode || type==Asc.c_oAscMouseMoveDataTypes.Eyedropper) { if (me.isTooltipHiding) { me.mouseMoveData = moveData; return; @@ -1027,6 +1055,57 @@ define([ if (ToolTip.length>1000) ToolTip = ToolTip.substr(0, 1000) + '...'; } + } else if (type==Asc.c_oAscMouseMoveDataTypes.Eyedropper) { + if (me.eyedropperTip.isTipVisible) { + me.eyedropperTip.isTipVisible = false; + me.eyedropperTip.toolTip.hide(); + } + + var color = moveData.get_EyedropperColor().asc_getColor(), + r = color.get_r(), + g = color.get_g(), + b = color.get_b(), + hex = Common.Utils.ThemeColor.getHexColor(r,g,b); + if (!me.eyedropperTip.eyedropperColor) { + var colorEl = $(document.createElement("div")); + colorEl.addClass('eyedropper-color'); + colorEl.appendTo(document.body); + me.eyedropperTip.eyedropperColor = colorEl; + $('#id_main_view').on('mouseleave', _.bind(me.hideEyedropper, me)); + } + me.eyedropperTip.eyedropperColor.css({ + backgroundColor: '#' + hex, + left: (moveData.get_X() + me._XY[0] + 23) + 'px', + top: (moveData.get_Y() + me._XY[1] - 53) + 'px' + }); + me.eyedropperTip.isVisible = true; + + if (me.eyedropperTip.tipInterval) { + clearInterval(me.eyedropperTip.tipInterval); + } + me.eyedropperTip.tipInterval = setInterval(function () { + clearInterval(me.eyedropperTip.tipInterval); + if (me.eyedropperTip.isVisible) { + ToolTip = '