diff options
Diffstat (limited to 'Software/Visual_Studio/SideChains/RealTimeGraphEx/Components/ComponentBase.cs')
| -rw-r--r-- | Software/Visual_Studio/SideChains/RealTimeGraphEx/Components/ComponentBase.cs | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphEx/Components/ComponentBase.cs b/Software/Visual_Studio/SideChains/RealTimeGraphEx/Components/ComponentBase.cs new file mode 100644 index 000000000..3e2294068 --- /dev/null +++ b/Software/Visual_Studio/SideChains/RealTimeGraphEx/Components/ComponentBase.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; + +namespace RealTimeGraphEx.Components +{ + public abstract class ComponentBase : UserControl + { + public ComponentLocationEnum Location + { + get { return (ComponentLocationEnum)GetValue(LocationProperty); } + set { SetValue(LocationProperty, value); } + } + public static readonly DependencyProperty LocationProperty = + DependencyProperty.Register("Location", typeof(ComponentLocationEnum), typeof(ComponentBase), new PropertyMetadata(ComponentLocationEnum.None)); + + public RealTimeGraphExBase Graph + { + get { return (RealTimeGraphExBase)GetValue(GraphProperty); } + set { SetValue(GraphProperty, value); } + } + public static readonly DependencyProperty GraphProperty = + DependencyProperty.Register("Graph", typeof(RealTimeGraphExBase), typeof(ComponentBase), new PropertyMetadata(null)); + + public ComponentBase() + { + this.Loaded += ComponentBase_Loaded; + } + + private void ComponentBase_Loaded(object sender, RoutedEventArgs e) + { + if (Graph != null) + { + Graph.ZoomComplete += OnGraphZoomComplete; + Graph.PanningComplete += OnGraphPanningComplete; + Render(Graph); + } + } + + public abstract void Render(RealTimeGraphExBase graph, bool animate = false); + + public void RemoveFromParent() + { + var parent = this.Parent; + var child = this; + + var panel = parent as Panel; + if (panel != null) + { + panel.Children.Remove(child); + return; + } + + var decorator = parent as Decorator; + if (decorator != null) + { + if (decorator.Child == child) + { + decorator.Child = null; + } + return; + } + + var contentPresenter = parent as ContentPresenter; + if (contentPresenter != null) + { + if (contentPresenter.Content == child) + { + contentPresenter.Content = null; + } + return; + } + + var contentControl = parent as ContentControl; + if (contentControl != null) + { + if (contentControl.Content == child) + { + contentControl.Content = null; + } + return; + } + + // maybe more + } + + protected virtual void OnGraphZoomComplete(Point transformOrigin, double scaleX, double scaleY) + { + + } + + protected virtual void OnGraphPanningComplete(Point translate) + { + + } + } +} |
