public override bool FindLink(string linkText, HyperlinkForm caller)
 {
     using (SelectPostLinkForm openPostForm = new SelectPostLinkForm())
     {
         if (openPostForm.ShowDialog(Win32WindowImpl.ForegroundWin32Window) == DialogResult.OK)
         {
             if (String.Empty == caller.LinkText.Trim())
                 caller.LinkText = openPostForm.PostTitle;
             caller.Hyperlink = openPostForm.PostLink;
             return true;
         }
     }
     return false;
 }
        void IHtmlEditorCommandSource.InsertLink()
        {
            // allow for inserting links even when there is no text selection (insert a
            // link w/ the user specified title at the current caret location). Wasn't exactly
            // sure how to do this....

            // show our "insert-link" dialog
            using (new WaitCursor())
            {
                //check out the selection to see if it is appropriate use of insert hyperlink
                bool _isImageOnly = false;
                if ((this as IHtmlEditorComponentContext).Selection.SelectedImage != null)
                {
                    _isImageOnly = true;

                }
                else if (!FullyEditableRegionActive || SelectedMarkupRange.GetElements(ElementFilters.VISIBLE_EMPTY_ELEMENTS, true).Length > 0)
                {
                    DisplayMessage.Show(MessageId.NotLinkable);
                    return;
                }
                else if (ContainsMultipleAnchors()) //contains multiple links
                {
                    DisplayMessage.Show(MessageId.MultipleLinks);
                    return;
                }

                //else is text only

                using (HyperlinkForm hyperlinkForm = new HyperlinkForm(this.CommandManager, ShowAllHyperlinkOptions))
                {

                    LinkInfo info = ((IHtmlEditorCommandSource)this).DiscoverCurrentLink();

                    hyperlinkForm.ContainsImage = _isImageOnly;

                    if (info.AnchorText != null && !_isImageOnly)
                    {
                        hyperlinkForm.LinkText = info.AnchorText;
                    }

                    //if not editing a current link, check glossary for auto-populate info
                    if (info.Url == null && !_isImageOnly)
                    {
                        if (info.AnchorText != null)
                        {
                            GlossaryLinkItem item = GlossaryManager.Instance.FindEntry(info.AnchorText.Trim());
                            if (item != null)
                            {
                                if (item.Url != String.Empty) hyperlinkForm.Hyperlink = item.Url;
                                if (item.Title != String.Empty) hyperlinkForm.LinkTitle = item.Title;
                                hyperlinkForm.IsInGlossary = true;
                            }
                        }
                    }
                    else if (info.Url != null)
                    {
                        // don't set the url if it is pointing to a local "backing file" for
                        // the current image thumbnail
                        if (!UrlIsTemporaryLocalFilePath(info.Url))
                            hyperlinkForm.Hyperlink = info.Url;
                        if (info.LinkTitle != null) hyperlinkForm.LinkTitle = info.LinkTitle;
                        if (info.Rel != null) hyperlinkForm.Rel = info.Rel;
                        hyperlinkForm.NewWindow = info.NewWindow;
                        if (!_isImageOnly)
                        {
                            hyperlinkForm.IsInGlossary =
                                GlossaryManager.Instance.FindExactEntry(hyperlinkForm.LinkText, hyperlinkForm.Hyperlink, hyperlinkForm.LinkTitle);
                        }
                    }

                    //tell whether this is edit style
                    hyperlinkForm.EditStyle = info.Url != null;

                    // show the dialog to edit the link
                    DialogResult linkDialogResult = hyperlinkForm.ShowDialog(EditorControl.FindForm());
                    if (linkDialogResult != DialogResult.Cancel)
                    {
                        IUndoUnit undoUnit = CreateUndoUnit();
                        using (undoUnit)
                        {
                            if (_isImageOnly)
                            {
                                if (linkDialogResult == DialogResult.OK)
                                {
                                    InsertImageLink(hyperlinkForm.Hyperlink, hyperlinkForm.LinkTitle, hyperlinkForm.NewWindow, hyperlinkForm.Rel);
                                }
                                else
                                {
                                    InsertImageLink(String.Empty, String.Empty, false, String.Empty);
                                }
                            }
                            else
                            {

                                ExpandAnchorSelection();
                                MarkupRange mRange = CleanUpRange();

                                //add the link if this is add/edit
                                if (linkDialogResult == DialogResult.OK)
                                {
                                    InsertLink(hyperlinkForm.Hyperlink, hyperlinkForm.LinkText, hyperlinkForm.LinkTitle, hyperlinkForm.Rel, hyperlinkForm.NewWindow, mRange);
                                }

                            }
                            // commit the change
                            undoUnit.Commit();
                        }
                    }
                }
            }
        }
        private DialogResult EditTargetOptions()
        {
            using (LinkToOptionsForm linkOptionsForm = new LinkToOptionsForm())
            {
                if (SelectedLinkTarget == LinkTargetType.IMAGE)
                {
                    using (ImageTargetEditorControl editor = new ImageTargetEditorControl())
                    {
                        editor.LoadImageSize(HtmlImageTargetSettings.ImageSize, EditorContext.SourceImageSize, EditorContext.ImageRotation);
                        editor.LinkOptions = HtmlImageTargetSettings.LinkOptions;
                        editor.EditorOptions = ImageEditingContext.EditorOptions;
                        linkOptionsForm.EditorControl = editor;

                        HtmlImageTargetSettings.DhtmlImageViewer = ImageEditingContext.EditorOptions.DhtmlImageViewer;

                        DialogResult result = linkOptionsForm.ShowDialog(this);
                        if (result == DialogResult.OK)
                        {
                            HtmlImageTargetSettings.ImageSize = editor.ImageSize;
                            HtmlImageTargetSettings.DhtmlImageViewer = ImageEditingContext.EditorOptions.DhtmlImageViewer;
                            HtmlImageTargetSettings.LinkOptions = editor.LinkOptions;
                            HtmlImageTargetSettings.ImageSizeName = editor.ImageBoundsSize;
                        }
                        return result;
                    }
                }
                else if (SelectedLinkTarget == LinkTargetType.URL)
                {
                    using (HyperlinkForm hyperlinkForm = new HyperlinkForm(EditorContext.CommandManager, GlobalEditorOptions.SupportsFeature(ContentEditorFeature.ShowAllLinkOptions)))
                    {
                        hyperlinkForm.ContainsImage = true;
                        hyperlinkForm.EditStyle = HtmlImageTargetSettings.LinkTargetUrl != null && HtmlImageTargetSettings.LinkTargetUrl != String.Empty;
                        hyperlinkForm.NewWindow = HtmlImageTargetSettings.LinkOptions.ShowInNewWindow;
                        if (HtmlImageTargetSettings.LinkTitle != String.Empty)
                            hyperlinkForm.LinkTitle = HtmlImageTargetSettings.LinkTitle;
                        if (HtmlImageTargetSettings.LinkRel != String.Empty)
                            hyperlinkForm.Rel = HtmlImageTargetSettings.LinkRel;
                        if (HtmlImageTargetSettings.LinkTargetUrl != null && HtmlImageTargetSettings.LinkTarget != LinkTargetType.IMAGE)
                        {
                            hyperlinkForm.Hyperlink = HtmlImageTargetSettings.LinkTargetUrl;
                        }

                        DialogResult result = hyperlinkForm.ShowDialog(FindForm());
                        if (result == DialogResult.OK)
                        {
                            HtmlImageTargetSettings.LinkTargetUrl = hyperlinkForm.Hyperlink;
                            HtmlImageTargetSettings.UpdateImageLinkOptions(hyperlinkForm.LinkTitle, hyperlinkForm.Rel, hyperlinkForm.NewWindow);
                            HtmlImageTargetSettings.LinkOptions = new LinkOptions(hyperlinkForm.NewWindow, false, null);
                        }
                        return result;
                    }
                }

                return DialogResult.Abort;
            }
        }
 void IHtmlEditorCommandSource.InsertLink()
 {
     using (new WaitCursor())
     {
         if (!_canInsertHyperlink)
         {
             DisplayMessage.Show(MessageId.TitleNotLinkable);
             return;
         }
         using (HyperlinkForm hyperlinkForm = new HyperlinkForm(CommandManager, ShowAllLinkOptions))
         {
             hyperlinkForm.LinkText = _textBox.SelectedText;
             hyperlinkForm.EditStyle = false;
             if (hyperlinkForm.ShowDialog(Owner) == DialogResult.OK)
             {
                 InsertLink(hyperlinkForm.Hyperlink, hyperlinkForm.LinkText, hyperlinkForm.LinkTitle, hyperlinkForm.Rel, hyperlinkForm.NewWindow);
             }
         }
     }
 }
        private DialogResult EditTargetOptions(LinkTargetType linkTargetType)
        {
            using (LinkToOptionsForm linkOptionsForm = new LinkToOptionsForm())
            {
                if (linkTargetType == LinkTargetType.IMAGE)
                {
                    using (ImageTargetEditorControl editor = new ImageTargetEditorControl())
                    {
                        editor.LoadImageSize(ImagePropertiesInfo.LinkTargetImageSize, ImagePropertiesInfo.ImageSourceSize, ImagePropertiesInfo.ImageRotation);
                        editor.LinkOptions = ImagePropertiesInfo.LinkOptions;
                        editor.EditorOptions = _imageEditingContext.EditorOptions;
                        linkOptionsForm.EditorControl = editor;

                        ImagePropertiesInfo.DhtmlImageViewer = _imageEditingContext.EditorOptions.DhtmlImageViewer;

                        DialogResult result = linkOptionsForm.ShowDialog(_editorContext.MainFrameWindow);
                        if (result == DialogResult.OK)
                        {
                            ImagePropertiesInfo.LinkTargetImageSize = editor.ImageSize;
                            ImagePropertiesInfo.DhtmlImageViewer = _imageEditingContext.EditorOptions.DhtmlImageViewer;
                            ImagePropertiesInfo.LinkOptions = editor.LinkOptions;
                            ImagePropertiesInfo.LinkTargetImageSizeName = editor.ImageBoundsSize;
                        }
                        return result;
                    }
                }
                else if (linkTargetType == LinkTargetType.URL)
                {
                    using (HyperlinkForm hyperlinkForm = new HyperlinkForm(_editorContext.CommandManager, GlobalEditorOptions.SupportsFeature(ContentEditorFeature.ShowAllLinkOptions)))
                    {
                        hyperlinkForm.ContainsImage = true;
                        hyperlinkForm.EditStyle = !String.IsNullOrEmpty(ImagePropertiesInfo.LinkTargetUrl);
                        hyperlinkForm.NewWindow = ImagePropertiesInfo.LinkOptions.ShowInNewWindow;
                        if (ImagePropertiesInfo.LinkTitle != String.Empty)
                            hyperlinkForm.LinkTitle = ImagePropertiesInfo.LinkTitle;
                        if (ImagePropertiesInfo.LinkRel != String.Empty)
                            hyperlinkForm.Rel = ImagePropertiesInfo.LinkRel;
                        if (ImagePropertiesInfo.LinkTargetUrl != null && ImagePropertiesInfo.LinkTarget != LinkTargetType.IMAGE)
                        {
                            hyperlinkForm.Hyperlink = ImagePropertiesInfo.LinkTargetUrl;
                        }

                        DialogResult result = hyperlinkForm.ShowDialog(_editorContext.MainFrameWindow);
                        if (result == DialogResult.OK)
                        {
                            ImagePropertiesInfo.LinkTargetUrl = hyperlinkForm.Hyperlink;
                            ImagePropertiesInfo.UpdateImageLinkOptions(hyperlinkForm.LinkTitle, hyperlinkForm.Rel, hyperlinkForm.NewWindow);
                            ImagePropertiesInfo.LinkOptions = new LinkOptions(hyperlinkForm.NewWindow, false, null);
                        }
                        return result;
                    }
                }

                return DialogResult.Abort;
            }
        }