1 //----------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3 //----------------------------------------------------------------
5 namespace System.ServiceModel.Activities.Presentation
7 using System.Activities.Core.Presentation.Themes;
8 using System.Activities.Presentation;
9 using System.Activities.Presentation.Converters;
10 using System.Activities.Presentation.Model;
11 using System.Activities.Presentation.PropertyEditing;
12 using System.Activities.Presentation.View;
16 sealed class CorrelationInitializerValueEditor : DialogPropertyValueEditor
18 public CorrelationInitializerValueEditor()
20 this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("CorrelationInitializer_InlineTemplate");
23 public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
25 ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = new ModelPropertyEntryToOwnerActivityConverter();
27 ModelItem modelItem = (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
28 EditingContext context = modelItem.GetEditingContext();
30 this.ShowDialog(modelItem, context);
33 public void ShowDialog(ModelItem modelItem, EditingContext context)
35 Fx.Assert(modelItem != null, "Activity model item shouldn't be null!");
36 Fx.Assert(context != null, "EditingContext shouldn't be null!");
39 string bookmarkTitle = (string)this.InlineEditorTemplate.Resources["bookmarkTitle"];
41 UndoEngine undoEngine = context.Services.GetService<UndoEngine>();
42 Fx.Assert(null != undoEngine, "UndoEngine should be available");
44 using (ModelEditingScope editingScope = modelItem.BeginEdit(bookmarkTitle, shouldApplyChangesImmediately: true))
46 if ((new EditorWindow(modelItem, context)).ShowOkCancel())
48 editingScope.Complete();
52 editingScope.Revert();
57 sealed class EditorWindow : WorkflowElementDialog
59 public EditorWindow(ModelItem activity, EditingContext context)
61 this.ModelItem = activity;
62 this.Context = context;
63 this.Owner = activity.View;
64 this.EnableMaximizeButton = false;
65 this.EnableMinimizeButton = false;
68 this.WindowResizeMode = ResizeMode.CanResize;
69 this.WindowSizeToContent = SizeToContent.Manual;
70 var content = new CorrelationInitializerDesigner() { Activity = activity };
71 this.Title = (string)content.Resources["controlTitle"];
72 this.Content = content;
73 this.HelpKeyword = HelpKeywords.AddCorrelationInitializersDialog;
76 protected override void OnWorkflowElementDialogClosed(bool? dialogResult)
78 if (dialogResult.HasValue && dialogResult.Value)
80 ((CorrelationInitializerDesigner)this.Content).CleanupObjectMap();