PageRenderTime 40ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/Main/src/DynamicDataDisplay/Charts/ContentGraph.cs

#
C# | 89 lines | 73 code | 16 blank | 0 comment | 8 complexity | 1f2b605f678179be1644bb7eb6b25ac6 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.Controls;
  6. using System.Windows;
  7. using Microsoft.Research.DynamicDataDisplay.Common;
  8. namespace Microsoft.Research.DynamicDataDisplay.Charts
  9. {
  10. public abstract class ContentGraph : ContentControl, IPlotterElement
  11. {
  12. static ContentGraph()
  13. {
  14. EventManager.RegisterClassHandler(typeof(ContentGraph), Plotter.PlotterChangedEvent, new PlotterChangedEventHandler(OnPlotterChanged));
  15. }
  16. private static void OnPlotterChanged(object sender, PlotterChangedEventArgs e)
  17. {
  18. ContentGraph owner = (ContentGraph)sender;
  19. owner.OnPlotterChanged(e);
  20. }
  21. private void OnPlotterChanged(PlotterChangedEventArgs e)
  22. {
  23. if (plotter == null && e.CurrentPlotter != null)
  24. {
  25. plotter = (Plotter2D)e.CurrentPlotter;
  26. plotter.Viewport.PropertyChanged += Viewport_PropertyChanged;
  27. OnPlotterAttached();
  28. }
  29. if (plotter != null && e.PreviousPlotter != null)
  30. {
  31. OnPlotterDetaching();
  32. plotter.Viewport.PropertyChanged -= Viewport_PropertyChanged;
  33. plotter = null;
  34. }
  35. }
  36. #region IPlotterElement Members
  37. private void Viewport_PropertyChanged(object sender, ExtendedPropertyChangedEventArgs e)
  38. {
  39. OnViewportPropertyChanged(e);
  40. }
  41. protected virtual void OnViewportPropertyChanged(ExtendedPropertyChangedEventArgs e) { }
  42. protected virtual Panel HostPanel
  43. {
  44. get { return plotter.CentralGrid; }
  45. }
  46. void IPlotterElement.OnPlotterAttached(Plotter plotter)
  47. {
  48. this.plotter = (Plotter2D)plotter;
  49. HostPanel.Children.Add(this);
  50. this.plotter.Viewport.PropertyChanged += Viewport_PropertyChanged;
  51. OnPlotterAttached();
  52. }
  53. protected virtual void OnPlotterAttached() { }
  54. void IPlotterElement.OnPlotterDetaching(Plotter plotter)
  55. {
  56. OnPlotterDetaching();
  57. this.plotter.Viewport.PropertyChanged -= Viewport_PropertyChanged;
  58. HostPanel.Children.Remove(this);
  59. this.plotter = null;
  60. }
  61. protected virtual void OnPlotterDetaching() { }
  62. private Plotter2D plotter;
  63. protected Plotter2D Plotter2D
  64. {
  65. get { return plotter; }
  66. }
  67. Plotter IPlotterElement.Plotter
  68. {
  69. get { return plotter; }
  70. }
  71. #endregion
  72. }
  73. }