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

View File

@@ -0,0 +1,126 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Documents;
using System.Windows;
using System.Windows.Media;
using System.Windows.Input;
using System.Windows.Media.Effects;
using System.Windows.Controls;
using System.Windows.Shapes;
namespace Microsoft.Research.DynamicDataDisplay.Charts
{
public class LiveToolTipAdorner : Adorner
{
private Canvas canvas = new Canvas { IsHitTestVisible = false };
private readonly VisualCollection visualChildren;
public LiveToolTipAdorner(UIElement adornedElement, LiveToolTip tooltip)
: base(adornedElement)
{
visualChildren = new VisualCollection(this);
adornedElement.MouseLeave += adornedElement_MouseLeave;
adornedElement.MouseEnter += adornedElement_MouseEnter;
adornedElement.PreviewMouseMove += adornedElement_MouseMove;
//FrameworkElement frAdornedElement = (FrameworkElement)adornedElement;
//frAdornedElement.SizeChanged += frAdornedElement_SizeChanged;
this.liveTooltip = tooltip;
tooltip.Visibility = Visibility.Hidden;
canvas.Children.Add(liveTooltip);
AddLogicalChild(canvas);
visualChildren.Add(canvas);
Unloaded += LiveTooltipAdorner_Unloaded;
}
//void frAdornedElement_SizeChanged(object sender, SizeChangedEventArgs e)
//{
// grid.Width = e.NewSize.Width;
// grid.Height = e.NewSize.Height;
// InvalidateMeasure();
//}
void LiveTooltipAdorner_Unloaded(object sender, RoutedEventArgs e)
{
canvas.Children.Remove(liveTooltip);
}
void adornedElement_MouseLeave(object sender, MouseEventArgs e)
{
liveTooltip.Visibility = Visibility.Hidden;
}
void adornedElement_MouseEnter(object sender, MouseEventArgs e)
{
liveTooltip.Visibility = Visibility.Visible;
}
Point mousePosition;
private void adornedElement_MouseMove(object sender, MouseEventArgs e)
{
liveTooltip.Visibility = Visibility.Visible;
mousePosition = e.GetPosition(AdornedElement);
InvalidateMeasure();
}
private void ArrangeTooltip()
{
Size tooltipSize = liveTooltip.DesiredSize;
Point location = mousePosition;
location.Offset(-tooltipSize.Width / 2, -tooltipSize.Height - 1);
liveTooltip.Arrange(new Rect(location, tooltipSize));
}
LiveToolTip liveTooltip;
public LiveToolTip LiveTooltip
{
get { return liveTooltip; }
}
#region Overrides
protected override Visual GetVisualChild(int index)
{
return visualChildren[index];
}
protected override int VisualChildrenCount
{
get { return visualChildren.Count; }
}
protected override Size MeasureOverride(Size constraint)
{
foreach (UIElement item in visualChildren)
{
item.Measure(constraint);
}
liveTooltip.Measure(constraint);
return base.MeasureOverride(constraint);
}
protected override Size ArrangeOverride(Size finalSize)
{
foreach (UIElement item in visualChildren)
{
item.Arrange(new Rect(item.DesiredSize));
}
ArrangeTooltip();
return finalSize;
}
#endregion // end of overrides
}
}