ViewerContextMenu.cs
// 
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// Copyright (c) GrapeCity inc. All rights reserved.
// 
using System;
using System.IO;
using System.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Pdf.Annotations;

namespace GcPdfWeb.Samples
{
    // このサンプルでは、PDF ビューワの標準のコンテキストメニューをカスタムメニューに
    // 置き換える方法を示しています。
    // 
    // なお、カスタムコンテキストメニューを追加するためにSupportAPIを使用する必要はなく、
    // 純粋なクライアント側の機能であることに注意してください。
    // 
    // このサンプルでメニューをカスタマイズするために使用されているJavaScript関数は、
    // ビューワでのテキストの選択状態を確認するためのもので、選択されている場合は、
    // デフォルトのメニューを、GoogleやBingを使用して選択されたテキストを検索できるメニューに
    // 置き換えます。そのソースは、以下の[#ifVIEWER_CUSTOMIZATION]の下にあります。
    public class ViewerContextMenu
    {
        public void CreatePDF(Stream stream)
        {
            GcPdfDocument doc = new GcPdfDocument();
            using (var fs = new FileStream(Path.Combine("Resources", "PDFs", "StrongInTheRain.pdf"), FileMode.Open, FileAccess.Read))
            {
                doc.Load(fs);
                doc.Save(stream);
            }
        }

        // SupportApiDemoにてPDF ビューワの初期化に使用されます。
        public static GcPdfViewerSupportApiDemo.Models.PdfViewerOptions PdfViewerOptions
        {
            get => new GcPdfViewerSupportApiDemo.Models.PdfViewerOptions(GcPdfViewerSupportApiDemo.Models.PdfViewerOptions.Options.None);
        }

#if VIEWER_CUSTOMIZATION
    //VIEWER: GcPdfViewerWeb/SupportApiDemo/Pages/Index.cshtml#// Viewer opened.{{
    modifyContextMenuSample(viewer);
    function modifyContextMenuSample(viewer) {
        viewer.options.onBeforeOpenContextMenu = function (items, mousePosition, viewer) {
            var selectedText = viewer.getSelectedText();
            if (selectedText) {
                // 既存のアイテムを削除します:
                items.splice(0, items.length);
                // 独自のメニュー項目を追加します:
                items.push({
                    type: 'button',
                    text: 'Googleで検索',
                    onClick: function () {
                        window.open('http://www.google.com/search?q=' + encodeURI(selectedText), '_blank');
                    }
                });
                items.push({
                    type: 'button',
                    text: 'Bingで検索',
                    onClick: function () {
                        window.open('https://www.bing.com/search?q=' + encodeURI(selectedText), '_blank');
                    }
                });
            }
            return true;
        };
    }
    //}}

    //VIEWER: GcPdfViewerWeb/SupportApiDemo-WebForms/Default.aspx#// Viewer opened.{{
    modifyContextMenuSample(viewer);
    function modifyContextMenuSample(viewer) {
        viewer.options.onBeforeOpenContextMenu = function (items, mousePosition, viewer) {
            var selectedText = viewer.getSelectedText();
            if (selectedText) {
                // 既存のアイテムを削除します:
                items.splice(0, items.length);
                // 独自のメニュー項目を追加します:
                items.push({
                    type: 'button',
                    text: 'Googleで検索',
                    onClick: function () {
                        window.open('http://www.google.com/search?q=' + encodeURI(selectedText), '_blank');
                    }
                });
                items.push({
                    type: 'button',
                    text: 'Bingで検索',
                    onClick: function () {
                        window.open('https://www.bing.com/search?q=' + encodeURI(selectedText), '_blank');
                    }
                });
            }
            return true;
        };
    }
    //}}
#endif
    }
}