186fff261deb5e9119b4e6e532fd1f22aa8535cd
[mono.git] / mcs / class / referencesource / System.Activities.Presentation / System.Activities.Core.Presentation / System / ServiceModel / Activities / Presentation / CorrelationInitializerValueEditor.cs
1 //----------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation.  All rights reserved.
3 //----------------------------------------------------------------
4
5 namespace System.ServiceModel.Activities.Presentation
6 {
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;
13     using System.Runtime;
14     using System.Windows;
15
16     sealed class CorrelationInitializerValueEditor : DialogPropertyValueEditor
17     {
18         public CorrelationInitializerValueEditor()
19         {
20             this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("CorrelationInitializer_InlineTemplate");
21         }
22
23         public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
24         {
25             ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = new ModelPropertyEntryToOwnerActivityConverter();
26
27             ModelItem modelItem = (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
28             EditingContext context = modelItem.GetEditingContext();
29
30             this.ShowDialog(modelItem, context);
31         }
32
33         public void ShowDialog(ModelItem modelItem, EditingContext context)
34         {
35             Fx.Assert(modelItem != null, "Activity model item shouldn't be null!");
36             Fx.Assert(context != null, "EditingContext shouldn't be null!");
37
38
39             string bookmarkTitle = (string)this.InlineEditorTemplate.Resources["bookmarkTitle"];
40
41             UndoEngine undoEngine = context.Services.GetService<UndoEngine>();
42             Fx.Assert(null != undoEngine, "UndoEngine should be available");
43
44             using (ModelEditingScope editingScope = modelItem.BeginEdit(bookmarkTitle, shouldApplyChangesImmediately: true))
45             {
46                 if ((new EditorWindow(modelItem, context)).ShowOkCancel())
47                 {
48                     editingScope.Complete();
49                 }
50                 else
51                 {
52                     editingScope.Revert();
53                 }
54             }
55         }
56
57         sealed class EditorWindow : WorkflowElementDialog
58         {
59             public EditorWindow(ModelItem activity, EditingContext context)
60             {
61                 this.ModelItem = activity;
62                 this.Context = context;
63                 this.Owner = activity.View;
64                 this.EnableMaximizeButton = false;
65                 this.EnableMinimizeButton = false;
66                 this.MinWidth = 450;
67                 this.MinHeight = 250; 
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;
74             }
75
76             protected override void OnWorkflowElementDialogClosed(bool? dialogResult)
77             {
78                 if (dialogResult.HasValue && dialogResult.Value)
79                 {
80                     ((CorrelationInitializerDesigner)this.Content).CleanupObjectMap();
81                 }
82             }
83         }
84     }
85 }