1 //----------------------------------------------------------------
2 // <copyright company="Microsoft Corporation">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
5 //----------------------------------------------------------------
7 namespace System.Activities.Presentation
9 using System.Activities.Presentation.Annotations;
10 using System.Activities.Presentation.Model;
11 using System.Activities.Presentation.View;
13 using System.Windows.Controls;
14 using System.Windows.Data;
15 using System.Windows.Input;
17 internal static class ContextMenuUtilities
19 public static void OnAddAnnotationCommandCanExecute(CanExecuteRoutedEventArgs e, EditingContext editingContext)
21 OnAddAnnotationCommandCanExecute(e, editingContext, EditingContextUtilities.GetSingleSelectedModelItem(editingContext));
24 public static void OnAddAnnotationCommandCanExecute(CanExecuteRoutedEventArgs e, EditingContext editingContext, DataGrid dataGrid)
26 OnAddAnnotationCommandCanExecute(e, editingContext, DataGridHelper.GetSingleSelectedObject(dataGrid));
29 public static void OnAddAnnotationCommandCanExecute(CanExecuteRoutedEventArgs e, EditingContext editingContext, ModelItem modelItem)
33 if (modelItem == null || !DesignerConfigurationServiceUtilities.IsAnnotationEnabled(editingContext) || EditingContextUtilities.IsReadOnly(editingContext))
39 e.CanExecute = !modelItem.HasAnnotation();
42 public static void OnDeleteAnnotationCommandCanExecute(CanExecuteRoutedEventArgs e, EditingContext editingContext)
44 OnDeleteAnnotationCommandCanExecute(e, editingContext, EditingContextUtilities.GetSingleSelectedModelItem(editingContext));
47 public static void OnDeleteAnnotationCommandCanExecute(CanExecuteRoutedEventArgs e, EditingContext editingContext, DataGrid dataGrid)
49 OnDeleteAnnotationCommandCanExecute(e, editingContext, DataGridHelper.GetSingleSelectedObject(dataGrid));
52 public static void OnDeleteAnnotationCommandCanExecute(CanExecuteRoutedEventArgs e, EditingContext editingContext, ModelItem modelItem)
56 if (modelItem == null || !DesignerConfigurationServiceUtilities.IsAnnotationEnabled(editingContext) || EditingContextUtilities.IsReadOnly(editingContext))
62 e.CanExecute = modelItem.HasAnnotation();
65 public static void OnDeleteAllAnnotationCommandCanExecute(CanExecuteRoutedEventArgs e, EditingContext editingContext)
69 if (!DesignerConfigurationServiceUtilities.IsAnnotationEnabled(editingContext) || EditingContextUtilities.IsReadOnly(editingContext))
80 public static void OnDeleteCommandCanExecute(CanExecuteRoutedEventArgs e, DataGrid dataGrid)
84 if (dataGrid == null || dataGrid.SelectedItems == null || dataGrid.SelectedItems.Count == 0)
89 if (dataGrid.SelectedItems.Count == 1 && dataGrid.SelectedItems[0] == CollectionView.NewItemPlaceholder)
97 public static void OnAddAnnotationCommandExecuted(ExecutedRoutedEventArgs e, ModelItem modelItem)
99 ModelProperty property = modelItem.Properties.Find(Annotation.AnnotationTextPropertyName);
100 if (property != null)
102 using (ModelEditingScope editingScope = modelItem.BeginEdit(SR.AddAnnotationDescription))
104 property.SetValue(string.Empty);
105 ViewStateService viewStateService = modelItem.GetEditingContext().Services.GetService<ViewStateService>();
106 viewStateService.StoreViewStateWithUndo(modelItem, Annotation.IsAnnotationDockedViewStateName, false);
107 editingScope.Complete();
110 if (modelItem.View != null)
112 WorkflowViewElement element = modelItem.View as WorkflowViewElement;
115 element.OnEditAnnotation();
123 public static void OnEditAnnotationCommandExecuted(ExecutedRoutedEventArgs e, ModelItem modelItem)
125 WorkflowViewElement element = modelItem.View as WorkflowViewElement;
128 element.OnEditAnnotation();
134 public static void OnDeleteAnnotationCommandExecuted(ExecutedRoutedEventArgs e, ModelItem modelItem)
136 using (ModelEditingScope editingScope = modelItem.BeginEdit(SR.DeleteAnnotationDescription))
138 modelItem.Properties[Annotation.AnnotationTextPropertyName].SetValue(null);
139 ViewStateService viewStateService = modelItem.GetEditingContext().Services.GetService<ViewStateService>();
140 viewStateService.StoreViewStateWithUndo(modelItem, Annotation.IsAnnotationDockedViewStateName, null);
141 editingScope.Complete();
147 public static void OnAnnotationMenuLoaded(EditingContext editingContext, Control control, RoutedEventArgs e)
149 if (DesignerConfigurationServiceUtilities.IsAnnotationEnabled(editingContext))
151 control.Visibility = Visibility.Visible;
155 control.Visibility = Visibility.Collapsed;