public AnnotationTag(AnnotatedEventVisualizationObjectView parent, Message <AnnotatedEvent> message, Rect rect) { this.parent = parent; this.vizObj = this.parent.AnnotatedEventVisualizationObject; this.message = message; this.transformGroup = new TransformGroup(); this.scaleTransform = parent.scaleTransform; this.transformGroup.Children.Add(parent.translateTransform); this.transformGroup.Children.Add(parent.scaleTransform); // Currently, only support one annotation var annotation = message.Data.Annotations[0]; var schemaValue = this.vizObj.Definition.Schemas[0].Values.FirstOrDefault(v => object.Equals(v.Value, annotation)); if (schemaValue == null) { schemaValue = this.vizObj.Definition.Schemas[0].Values.FirstOrDefault(v => object.Equals(v.Value, null)) ?? this.vizObj.Definition.Schemas[0].Values.FirstOrDefault(); } this.rectangleGeometry = new RectangleGeometry(rect) { Transform = this.transformGroup }; this.rectanglePath = new Path() { Data = this.rectangleGeometry, DataContext = this, ContextMenu = parent.Resources["AnnotationContextMenu"] as ContextMenu, Fill = (schemaValue != null) ? schemaValue.Color.ToMediaBrush() : System.Drawing.Color.Black.ToMediaBrush(), Stroke = Brushes.Black, StrokeThickness = 1, Tag = annotation }; this.textBlock = new TextBlock() { Background = null, IsHitTestVisible = false, Name = "Value", Padding = new Thickness(5), Text = annotation, TextAlignment = TextAlignment.Center, TextWrapping = TextWrapping.Wrap }; // create context menu items this.internalContextMenuItems = new ObservableCollection <object>(this.vizObj.Definition.Schemas); this.contextMenuItems = new ReadOnlyObservableCollection <object>(this.internalContextMenuItems); this.rectanglePath.ContextMenu.ItemsSource = this.contextMenuItems; // add in separators (nulls) and commands (tuple<string, ICommand, object>) this.internalContextMenuItems.Add(null); this.internalContextMenuItems.Add(Tuple.Create <string, ICommand, object>("Set value...", parent.AnnotatedEventVisualizationObject.SetValueCommand, this.Message.Data)); this.internalContextMenuItems.Add(null); this.internalContextMenuItems.Add(Tuple.Create <string, ICommand, object>("Delete", parent.AnnotatedEventVisualizationObject.DeleteEventCommand, this.Message)); this.internalContextMenuItems.Add(null); this.internalContextMenuItems.Add(Tuple.Create <string, ICommand, object>("Save Annotations", parent.AnnotatedEventVisualizationObject.SaveAnnotationsCommand, null)); }
private void AnnotatedEventVisualizationObjectView_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { this.AnnotatedEventVisualizationObject = this.DataContext as AnnotatedEventVisualizationObject; this.AnnotatedEventVisualizationObject.PropertyChanged += this.AnnotatedEventVisualizationObject_PropertyChanged; this.AnnotatedEventVisualizationObject.Configuration.PropertyChanged += this.Configuration_PropertyChanged; this.navigator = this.AnnotatedEventVisualizationObject.Navigator; this.navigator.ViewRange.RangeChanged += this.Navigator_ViewRangeChanged; this.Data_CollectionChanged(this.AnnotatedEventVisualizationObject.Data, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); if (this.AnnotatedEventVisualizationObject.Data != null) { this.AnnotatedEventVisualizationObject.Data.CollectionChanged += this.Data_CollectionChanged; } }