Initial Commit

This commit is contained in:
2024-02-23 00:46:06 -05:00
commit 2bbedc0178
470 changed files with 46035 additions and 0 deletions

181
InjectedPlotter.cs Normal file
View File

@@ -0,0 +1,181 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using Microsoft.Research.DynamicDataDisplay.Common;
using System.Windows.Data;
using System.Windows;
using System.Windows.Threading;
namespace Microsoft.Research.DynamicDataDisplay
{
[SkipPropertyCheck]
public class InjectedPlotter : ChartPlotter, IPlotterElement
{
public InjectedPlotter()
: base(PlotterLoadMode.Empty)
{
ViewportPanel = new Canvas();
Grid.SetColumn(ViewportPanel, 1);
Grid.SetRow(ViewportPanel, 1);
Viewport = new Viewport2D(ViewportPanel, this);
}
protected override void OnChildAdded(IPlotterElement child)
{
base.OnChildAdded(child);
if (plotter != null)
{
plotter.PerformChildChecks = false;
try
{
plotter.Children.Add(child);
}
finally
{
plotter.PerformChildChecks = true;
}
}
}
protected override void OnChildRemoving(IPlotterElement child)
{
base.OnChildRemoving(child);
if (plotter != null)
{
plotter.PerformChildChecks = false;
try
{
plotter.Children.Remove(child);
}
finally
{
plotter.PerformChildChecks = true;
}
}
}
public void SetHorizontalTransform(double parentMin, double childMin, double parentMax, double childMax)
{
converter.SetHorizontalTransform(parentMin, childMin, parentMax, childMax);
}
public void SetVerticalTransform(double parentMin, double childMin, double parentMax, double childMax)
{
converter.SetVerticalTransform(parentMin, childMin, parentMax, childMax);
}
private IValueConverter viewportBindingConverter;
public IValueConverter ViewportBindingConverter
{
get { return viewportBindingConverter; }
set
{
viewportBindingConverter = value;
if (viewportBinding != null)
{
viewportBinding.Converter = value;
}
}
}
private bool setViewportBinding = true;
public bool SetViewportBinding
{
get { return setViewportBinding; }
set
{
if (setViewportBinding != value)
{
setViewportBinding = value;
UpdateViewportBinding();
}
}
}
private void UpdateViewportBinding()
{
if (plotter == null) return;
if (setViewportBinding)
{
var converter = viewportBindingConverter ?? this.converter;
viewportBinding = new Binding
{
Path = new PropertyPath("Visible"),
Source = this.plotter.Viewport,
Converter = converter,
Mode = BindingMode.TwoWay
};
this.Viewport.SetBinding(Viewport2D.VisibleProperty, viewportBinding);
}
else
{
BindingOperations.ClearBinding(Viewport, Viewport2D.VisibleProperty);
}
}
#region IPlotterElement Members
Binding viewportBinding;
ScaleConverter converter = new ScaleConverter();
void IPlotterElement.OnPlotterAttached(Plotter plotter)
{
this.plotter = (Plotter2D)plotter;
UpdateViewportBinding();
plotter.MainGrid.Children.Add(ViewportPanel);
HeaderPanel = plotter.HeaderPanel;
FooterPanel = plotter.FooterPanel;
LeftPanel = plotter.LeftPanel;
BottomPanel = plotter.BottomPanel;
RightPanel = plotter.RightPanel;
TopPanel = plotter.BottomPanel;
MainCanvas = plotter.MainCanvas;
CentralGrid = plotter.CentralGrid;
MainGrid = plotter.MainGrid;
ParallelCanvas = plotter.ParallelCanvas;
Dispatcher.BeginInvoke((Action)(() => ExecuteWaitingChildrenAdditions()), DispatcherPriority.Background);
OnLoaded();
}
protected override bool IsLoadedInternal
{
get
{
return plotter != null;
}
}
void IPlotterElement.OnPlotterDetaching(Plotter plotter)
{
plotter.MainGrid.Children.Remove(ViewportPanel);
BindingOperations.ClearBinding(this.Viewport, Viewport2D.VisibleProperty);
this.plotter = null;
}
private Plotter2D plotter;
public Plotter2D Plotter
{
get { return plotter; }
}
Plotter IPlotterElement.Plotter
{
get { return plotter; }
}
#endregion
}
}