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); }
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; } }