コード例 #1
0
        protected void CreateEditor(string language)
        {
            Control             docEditor      = null;
            IDockingFormService dockingService = ServiceManager.Get <IDockingFormService>();
            Control             d = FindDocument(dockingService, FlowSharpCodeServiceInterfaces.Constants.META_CSHARP_EDITOR);

            if (d == null)
            {
                d = FindDocument(dockingService, FlowSharpCodeServiceInterfaces.Constants.META_SCINTILLA_EDITOR);

                if (d == null)
                {
                    d = FindDocument(dockingService, FlowSharpServiceInterfaces.Constants.META_CANVAS);

                    if (d == null)
                    {
                        docEditor = dockingService.CreateDocument(DockState.Document, language + " Editor", FlowSharpCodeServiceInterfaces.Constants.META_SCINTILLA_EDITOR);
                    }
                    else
                    {
                        docEditor = dockingService.CreateDocument(d, DockAlignment.Bottom, language + " Editor", FlowSharpCodeServiceInterfaces.Constants.META_SCINTILLA_EDITOR, 0.50);
                    }
                }
                else
                {
                    docEditor = dockingService.CreateDocument(d, DockState.Document, language + " Editor", FlowSharpCodeServiceInterfaces.Constants.META_SCINTILLA_EDITOR);
                }
            }
            else
            {
                docEditor = dockingService.CreateDocument(d, DockState.Document, language + " Editor", FlowSharpCodeServiceInterfaces.Constants.META_SCINTILLA_EDITOR);
            }

            // Panel dock = dockingService.DockPanel;
            // Interestingly, this uses the current document page, which, I guess because the C# editor was created first, means its using that pane.
            //Control pyDocEditor = dockingService.CreateDocument(DockState.Document, "Python Editor", FlowSharpCodeServiceInterfaces.Constants.META_PYTHON_EDITOR);
            Control pnlCodeEditor = new Panel()
            {
                Dock = DockStyle.Fill, Tag = language
            };

            docEditor.Controls.Add(pnlCodeEditor);
            ((IDockDocument)docEditor).Metadata += "," + language;      // Add language to metadata so we know what editor to create.

            IFlowSharpScintillaEditorService scintillaEditorService = ServiceManager.Get <IFlowSharpScintillaEditorService>();

            scintillaEditorService.CreateEditor(pnlCodeEditor, language);
        }
コード例 #2
0
        protected void OnContentResolver(object sender, ContentLoadedEventArgs e)
        {
            switch (e.Metadata.LeftOf(","))
            {
            case FlowSharpCodeServiceInterfaces.Constants.META_CSHARP_EDITOR:
                Panel pnlEditor = new Panel()
                {
                    Dock = DockStyle.Fill, Tag = FlowSharpCodeServiceInterfaces.Constants.META_CSHARP_EDITOR
                };
                e.DockContent.Controls.Add(pnlEditor);
                e.DockContent.Text = "C# Editor";
                IFlowSharpCodeEditorService csCodeEditorService = ServiceManager.Get <IFlowSharpCodeEditorService>();
                csCodeEditorService.CreateEditor(pnlEditor);
                csCodeEditorService.AddAssembly("Clifton.Core.dll");
                break;

            case FlowSharpCodeServiceInterfaces.Constants.META_OUTPUT:
                Panel pnlOutputWindow = new Panel()
                {
                    Dock = DockStyle.Fill, Tag = FlowSharpCodeServiceInterfaces.Constants.META_OUTPUT
                };
                e.DockContent.Controls.Add(pnlOutputWindow);
                e.DockContent.Text = "Output";
                IFlowSharpCodeOutputWindowService outputWindowService = ServiceManager.Get <IFlowSharpCodeOutputWindowService>();
                outputWindowService.CreateOutputWindow(pnlOutputWindow);
                break;

            case FlowSharpCodeServiceInterfaces.Constants.META_SCINTILLA_EDITOR:
                string language      = e.Metadata.RightOf(",");
                Panel  pnlCodeEditor = new Panel()
                {
                    Dock = DockStyle.Fill, Tag = language
                };
                e.DockContent.Controls.Add(pnlCodeEditor);
                e.DockContent.Text = language.CamelCase() + " Editor";

                IFlowSharpScintillaEditorService scintillaEditorService = ServiceManager.Get <IFlowSharpScintillaEditorService>();
                scintillaEditorService.CreateEditor(pnlCodeEditor, language);
                break;
            }
        }