/Main/src/DynamicDataDisplay/Charts/ViewportUIContainer.cs
C# | 101 lines | 79 code | 16 blank | 6 comment | 12 complexity | c568951710ebb95ed07fb5c2fba58eed MD5 | raw file
Possible License(s): CC-BY-SA-3.0
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Windows;
- using System.Windows.Markup;
- using Microsoft.Research.DynamicDataDisplay.Common;
- using System.Windows.Controls;
-
- namespace Microsoft.Research.DynamicDataDisplay.Charts
- {
- [ContentProperty("Content")]
- public class ViewportUIContainer : DependencyObject, IPlotterElement
- {
- public ViewportUIContainer() { }
-
- public ViewportUIContainer(FrameworkElement content)
- {
- this.Content = content;
- }
-
- private FrameworkElement content;
- [NotNull]
- public FrameworkElement Content
- {
- get { return content; }
- set { content = value; }
- }
-
- #region IPlotterElement Members
-
- void IPlotterElement.OnPlotterAttached(Plotter plotter)
- {
- this.plotter = plotter;
-
- if (Content == null) return;
-
- var plotterPanel = GetPlotterPanel(Content);
- //Plotter.SetPlotter(Content, plotter);
-
- if (plotterPanel == PlotterPanel.MainCanvas)
- {
- // if all four Canvas.{Left|Right|Top|Bottom} properties are not set,
- // and as we are adding by default content to MainCanvas,
- // and since I like more when buttons are by default in right down corner -
- // set bottom and right to 10.
- var left = Canvas.GetLeft(content);
- var top = Canvas.GetTop(content);
- var bottom = Canvas.GetBottom(content);
- var right = Canvas.GetRight(content);
-
- if (left.IsNaN() && right.IsNaN() && bottom.IsNaN() && top.IsNaN())
- {
- Canvas.SetBottom(content, 10.0);
- Canvas.SetRight(content, 10.0);
- }
- plotter.MainCanvas.Children.Add(Content);
- }
- }
-
- void IPlotterElement.OnPlotterDetaching(Plotter plotter)
- {
- if (Content != null)
- {
- var plotterPanel = GetPlotterPanel(Content);
- //Plotter.SetPlotter(Content, null);
- if (plotterPanel == PlotterPanel.MainCanvas)
- {
- plotter.MainCanvas.Children.Remove(Content);
- }
- }
-
- this.plotter = null;
- }
-
- private Plotter plotter;
- Plotter IPlotterElement.Plotter
- {
- get { return plotter; }
- }
-
- #endregion
-
- [AttachedPropertyBrowsableForChildren]
- public static PlotterPanel GetPlotterPanel(DependencyObject obj)
- {
- return (PlotterPanel)obj.GetValue(PlotterPanelProperty);
- }
-
- public static void SetPlotterPanel(DependencyObject obj, PlotterPanel value)
- {
- obj.SetValue(PlotterPanelProperty, value);
- }
-
- public static readonly DependencyProperty PlotterPanelProperty = DependencyProperty.RegisterAttached(
- "PlotterPanel",
- typeof(PlotterPanel),
- typeof(ViewportUIContainer),
- new FrameworkPropertyMetadata(PlotterPanel.MainCanvas));
- }
- }