//---------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // //---------------------------------------------------------------- namespace System.Activities.Presentation.Annotations { using System.Activities.Presentation.Model; using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Input; internal sealed partial class FloatingAnnotationView : UserControl, IFloatingAnnotation { public static readonly DependencyProperty ModelItemProperty = DependencyProperty.Register("ModelItem", typeof(ModelItem), typeof(FloatingAnnotationView)); public static readonly DependencyProperty IsReadOnlyProperty = DependencyProperty.Register("IsReadOnly", typeof(bool), typeof(FloatingAnnotationView)); private bool focusOnLoad; public FloatingAnnotationView() { this.InitializeComponent(); this.Loaded += new RoutedEventHandler(this.OnFloatingAnnotationViewLoaded); } public event Action DockButtonClicked; public event EventHandler IsMouseOverChanged { add { DependencyPropertyDescriptor descriptor = DependencyPropertyDescriptor.FromProperty(UIElement.IsMouseOverProperty, typeof(UIElement)); descriptor.AddValueChanged(this, value); } remove { DependencyPropertyDescriptor descriptor = DependencyPropertyDescriptor.FromProperty(UIElement.IsMouseOverProperty, typeof(UIElement)); descriptor.RemoveValueChanged(this, value); } } public bool IsReadOnly { get { return (bool)GetValue(IsReadOnlyProperty); } set { SetValue(IsReadOnlyProperty, value); } } public ModelItem ModelItem { get { return (ModelItem)GetValue(ModelItemProperty); } set { SetValue(ModelItemProperty, value); } } public void FocusOnContent() { if (this.annotationTextBox.Focus() != true) { this.focusOnLoad = true; } } public void UpdateModelItem() { BindingExpression be = this.annotationTextBox.GetBindingExpression(TextBox.TextProperty); be.UpdateSource(); } protected override void OnContextMenuOpening(ContextMenuEventArgs e) { e.Handled = true; } private void OnFloatingAnnotationViewLoaded(object sender, RoutedEventArgs e) { if (this.focusOnLoad) { Keyboard.Focus(this.annotationTextBox); this.focusOnLoad = false; } } private void OnDockButtonClicked(object sender, RoutedEventArgs e) { if (this.DockButtonClicked != null) { this.DockButtonClicked(); } } } }