PageRenderTime 39ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/Main/src/DynamicDataDisplay/Charts/Shapes/ViewportShape.cs

#
C# | 82 lines | 61 code | 15 blank | 6 comment | 2 complexity | be305d8ed1bc275935f820894b4f940a MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows;
  6. using System.Windows.Shapes;
  7. using System.Windows.Media;
  8. namespace Microsoft.Research.DynamicDataDisplay.Charts
  9. {
  10. /// <summary>
  11. /// Represents a base class for simple shapes with viewport-bound coordinates.
  12. /// </summary>
  13. public abstract class ViewportShape : Shape, IPlotterElement
  14. {
  15. static ViewportShape()
  16. {
  17. Type type = typeof(ViewportShape);
  18. Shape.StrokeProperty.AddOwner(type, new FrameworkPropertyMetadata(Brushes.Blue));
  19. Shape.StrokeThicknessProperty.AddOwner(type, new FrameworkPropertyMetadata(2.0));
  20. }
  21. /// <summary>
  22. /// Initializes a new instance of the <see cref="ViewportShape"/> class.
  23. /// </summary>
  24. protected ViewportShape() { }
  25. protected void UpdateUIRepresentation()
  26. {
  27. if (Plotter == null)
  28. return;
  29. UpdateUIRepresentationCore();
  30. }
  31. protected virtual void UpdateUIRepresentationCore() { }
  32. #region IPlotterElement Members
  33. private Plotter2D plotter;
  34. void IPlotterElement.OnPlotterAttached(Plotter plotter)
  35. {
  36. plotter.CentralGrid.Children.Add(this);
  37. Plotter2D plotter2d = (Plotter2D)plotter;
  38. this.plotter = plotter2d;
  39. plotter2d.Viewport.PropertyChanged += Viewport_PropertyChanged;
  40. UpdateUIRepresentation();
  41. }
  42. private void Viewport_PropertyChanged(object sender, ExtendedPropertyChangedEventArgs e)
  43. {
  44. OnViewportPropertyChanged(e);
  45. }
  46. protected virtual void OnViewportPropertyChanged(ExtendedPropertyChangedEventArgs e)
  47. {
  48. UpdateUIRepresentation();
  49. }
  50. void IPlotterElement.OnPlotterDetaching(Plotter plotter)
  51. {
  52. Plotter2D plotter2d = (Plotter2D)plotter;
  53. plotter2d.Viewport.PropertyChanged -= Viewport_PropertyChanged;
  54. plotter.CentralGrid.Children.Remove(this);
  55. this.plotter = null;
  56. }
  57. public Plotter2D Plotter
  58. {
  59. get { return plotter; }
  60. }
  61. Plotter IPlotterElement.Plotter
  62. {
  63. get { return plotter; }
  64. }
  65. #endregion
  66. }
  67. }