/// <summary>
        /// Creates the popup.
        /// </summary>
        /// <param name="span">The span.</param>
        /// <param name="text">The text.</param>
        /// <param name="viewportSize">Size of the viewport.</param>
        /// <returns></returns>
        private TranslatePopup CreatePopup(SnapshotSpan span, string text, Size viewportSize)
        {
            var popup = new TranslatePopup(span, text, viewportSize);

            AttachEventPopup(popup);
            return(popup);
        }
        /// <summary>
        /// Attaches the popup.
        /// </summary>
        /// <param name="popup">The popup.</param>
        private void AttachPopup(TranslatePopup popup)
        {
            var span = popup.Span.GetSpan(_view.TextSnapshot);
            var g    = _view.TextViewLines.GetMarkerGeometry(span);

            if (g != null)
            {
                Canvas.SetLeft(popup, g.Bounds.BottomLeft.X);
                Canvas.SetTop(popup, g.Bounds.BottomLeft.Y);
                _layer.AddAdornment(span, null, popup);
            }
        }
        /// <summary>
        /// Translates the specified text.
        /// </summary>
        /// <param name="span">The span.</param>
        /// <param name="text">The text.</param>
        public void Translate(SnapshotSpan span, string text)
        {
            //Get viewport size
            var viewportSize = new Size(_view.ViewportWidth, _view.ViewportHeight);

            //Close popup if exist
            if (_popup != null)
            {
                _popup.Close();
            }

            //Create new popup
            _popup = CreatePopup(span, text, viewportSize);

            //Attach popup
            AttachPopup(_popup);

            //Focus
            _popup.Focus();
        }
 /// <summary>
 /// Detaches the event popup.
 /// </summary>
 /// <param name="popup">The popup.</param>
 private void DetachEventPopup(TranslatePopup popup)
 {
     popup.OnClosed -= PopupClosed;
 }
 /// <summary>
 /// Attaches the event popup.
 /// </summary>
 /// <param name="popup">The popup.</param>
 private void AttachEventPopup(TranslatePopup popup)
 {
     popup.OnClosed += PopupClosed;
 }