//...........................................................
public void ConstructViewers <EDITOR_T> ()
where EDITOR_T : avalon.TextEditor, new()
{
m_viewerL = new EDITOR_T(); PanelL.Children.Add(m_viewerL);
m_viewerR = new EDITOR_T(); PanelR.Children.Add(m_viewerR);
// disable folding:
// can't listen for folding events, can't sync foldings between viewers
// todo: more generic solution if add folding to types other than xml.
var viewerL = m_viewerL as XmlViewer;
var viewerR = m_viewerR as XmlViewer;
if (viewerL != null && viewerR != null)
{
avalon.Folding.FoldingManager.Uninstall(viewerL.FoldingManager);
avalon.Folding.FoldingManager.Uninstall(viewerR.FoldingManager);
}
m_viewerL.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
m_viewerL.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
m_viewerR.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
m_viewerR.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
foreach (var line in m_model.OldText.Lines)
{
var text = line?.Text + System.Environment.NewLine;
m_viewerL.AppendText(text);
}
foreach (var line in m_model.NewText.Lines)
{
var text = line?.Text + System.Environment.NewLine;
m_viewerR.AppendText(text);
}
m_renderL = new TextDifferBackgroundRenderer(m_viewerL);
m_renderR = new TextDifferBackgroundRenderer(m_viewerR);
m_renderL.Lines = m_model.OldText.Lines;
m_renderR.Lines = m_model.NewText.Lines;
m_viewerL.TextArea.TextView.BackgroundRenderers.Add(m_renderL);
m_viewerR.TextArea.TextView.BackgroundRenderers.Add(m_renderR);
m_viewerL.TextArea.TextView.VisualLinesChanged += ViewerL_VScrollChanged;
m_viewerL.TextArea.TextView.ScrollOffsetChanged += ViewerL_HScrollChanged;
m_viewerL.LayoutUpdated += ViewerL_LayoutUpdated;
m_viewerR.TextArea.TextView.VisualLinesChanged += ViewerR_VScrollChanged;
m_viewerR.TextArea.TextView.ScrollOffsetChanged += ViewerR_HScrollChanged;
Loaded += OnLoaded;
}