public TextEditorControl() { SetStyle(ControlStyles.ContainerControl, true); textAreaPanel.Dock = DockStyle.Fill; Document = (new DocumentFactory()).CreateDocument(); Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy(); primaryTextArea = new TextAreaControl(this); activeTextAreaControl = primaryTextArea; primaryTextArea.TextArea.GotFocus += delegate { SetActiveTextAreaControl(primaryTextArea); }; primaryTextArea.TextArea.Leave += delegate { textAreaLastLeave = TextAreaSide.Primary; }; primaryTextArea.Dock = DockStyle.Fill; textAreaPanel.Controls.Add(primaryTextArea); InitializeTextAreaControl(primaryTextArea); Controls.Add(textAreaPanel); ResizeRedraw = true; Document.UpdateCommited += new EventHandler(CommitUpdateRequested); OptionsChanged(); }
public void Split() { if (secondaryTextArea == null) { secondaryTextArea = new TextAreaControl(this); secondaryTextArea.Dock = DockStyle.Bottom; secondaryTextArea.Height = Height / 2; secondaryTextArea.TextArea.GotFocus += delegate { SetActiveTextAreaControl(secondaryTextArea); }; textAreaSplitter = new Splitter(); textAreaSplitter.BorderStyle = BorderStyle.FixedSingle; textAreaSplitter.BackColor = Color.Orange; textAreaSplitter.Height = 8; textAreaSplitter.Dock = DockStyle.Bottom; textAreaPanel.Controls.Add(textAreaSplitter); textAreaPanel.Controls.Add(secondaryTextArea); InitializeTextAreaControl(secondaryTextArea); secondaryTextArea.OptionsChanged(); secondaryTextArea.TextArea.Leave += delegate { textAreaLastLeave = TextAreaSide.Secondary; }; secondaryTextArea.Caret.Position = primaryTextArea.Caret.Position; secondaryTextArea.CenterViewOn(secondaryTextArea.Caret.Line, 0); secondaryTextArea.TextArea.Select(); } else { if (!primaryTextArea.TextArea.Focused && (secondaryTextArea.TextArea.Focused || textAreaLastLeave == TextAreaSide.Secondary)) { primaryTextArea.Caret.Position = secondaryTextArea.Caret.Position; } else { secondaryTextArea.Caret.Position = primaryTextArea.Caret.Position; secondaryTextArea.CenterViewOn(secondaryTextArea.Caret.Line, 0); } secondaryTextArea.Visible = !secondaryTextArea.Visible; textAreaSplitter.Visible = !textAreaSplitter.Visible; if (secondaryTextArea.Visible == false) { SetActiveTextAreaControl(primaryTextArea); } else { secondaryTextArea.TextArea.Select(); } //textAreaPanel.Controls.Remove(secondaryTextArea); //textAreaPanel.Controls.Remove(textAreaSplitter); //secondaryTextArea.Dispose(); //textAreaSplitter.Dispose(); //secondaryTextArea = null; //textAreaSplitter = null; } }