Merge branch 'alexischr/nursery-canaries-managed-alloc'
[mono.git] / mcs / class / referencesource / System.Activities.Presentation / System.Activities.Presentation / System / Activities / Presentation / Utility / IconHelper.cs
1 //----------------------------------------------------------------
2 // <copyright company="Microsoft Corporation">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //----------------------------------------------------------------
6
7 namespace System.Activities.Presentation.Utility
8 {
9     using System;
10     using System.Activities.Presentation.View;
11     using System.Collections.Generic;
12     using System.Windows.Media;
13
14     internal static class IconHelper
15     {
16         private static Dictionary<string, string> iconNameMapping;
17
18         internal static Dictionary<string, string> IconNameMapping
19         {
20             get
21             {
22                 if (iconNameMapping == null)
23                 {
24                     iconNameMapping = new Dictionary<string, string>()
25                     {
26                         { "System.Activities.Statements.AddToCollection`1", "AddToCollectionIcon" },
27                         { "System.Activities.Statements.Assign", "AssignIcon" },
28                         { "System.Activities.Statements.CancellationScope", "CancellationScopeIcon" },
29                         { "System.Activities.Statements.ClearCollection`1", "ClearCollectionIcon" },
30                         { "System.Activities.Statements.CompensableActivity", "CompensableActivityIcon" },
31                         { "System.Activities.Statements.Compensate", "CompensateIcon" },
32                         { "System.Activities.Statements.Confirm", "ConfirmIcon" },
33                         { "System.Activities.Statements.Delay", "DelayIcon" },
34                         { "System.Activities.Statements.DoWhile", "DoWhileIcon" },
35                         { "System.Activities.Statements.ExistsInCollection`1", "ExistsInCollectionIcon" },
36                         { "System.Activities.Statements.Flowchart", "FlowchartIcon" },
37                         { "System.Activities.Statements.FlowDecision", "FlowDecisionIcon" },
38                         { "System.Activities.Statements.FlowSwitch`1", "FlowSwitchIcon" },
39                         { "System.Activities.Statements.If", "IfIcon" },
40                         { "System.Activities.Statements.Interop", "InteropIcon" },
41                         { "System.Activities.Statements.InvokeDelegate", "InvokeDelegateIcon" },
42                         { "System.Activities.Statements.InvokeMethod", "InvokeMethodIcon" },
43                         { "System.Activities.Statements.NoPersistScope", "NoPersistScopeIcon" },
44                         { "System.Activities.Statements.Parallel", "ParallelIcon" },
45                         { "System.Activities.Statements.Persist", "PersistIcon" },
46                         { "System.Activities.Statements.Pick", "PickIcon" },
47                         { "System.Activities.Statements.PickBranch", "PickBranchIcon" },
48                         { "System.Activities.Statements.RemoveFromCollection`1", "RemoveFromCollectionIcon" },
49                         { "System.Activities.Statements.Rethrow", "RethrowIcon" },
50                         { "System.Activities.Statements.Sequence", "SequenceIcon" },
51                         { "System.Activities.Statements.State", "StateIcon" },
52                         { "System.Activities.Statements.StateMachine", "StateMachineIcon" },
53                         { "System.Activities.Statements.Switch`1", "SwitchIcon" },
54                         { "System.Activities.Statements.TerminateWorkflow", "TerminateWorkflowIcon" },
55                         { "System.Activities.Statements.Throw", "ThrowIcon" },
56                         { "System.Activities.Statements.TransactionScope", "TransactionScopeIcon" },
57                         { "System.Activities.Statements.TryCatch", "TryCatchIcon" },
58                         { "System.Activities.Statements.While", "WhileIcon" },
59                         { "System.Activities.Statements.WriteLine", "WriteLineIcon" },
60                         { "System.Activities.Core.Presentation.FinalState", "FinalStateIcon" },
61                         { "System.Activities.Core.Presentation.Factories.StateMachineWithInitialStateFactory", "StateMachineIcon" },
62                         { "System.Activities.Core.Presentation.Factories.ForEachWithBodyFactory`1", "ForEachIcon" },
63                         { "System.Activities.Core.Presentation.Factories.ParallelForEachWithBodyFactory`1", "ParallelForEachIcon" },
64                         { "System.Activities.Core.Presentation.Factories.PickWithTwoBranchesFactory", "PickIcon" },
65                         { "System.ServiceModel.Activities.CorrelationScope", "CorrelationScopeIcon" },
66                         { "System.ServiceModel.Activities.InitializeCorrelation", "InitializeCorrelationIcon" },
67                         { "System.ServiceModel.Activities.Receive", "ReceiveIcon" },
68                         { "System.ServiceModel.Activities.ReceiveReply", "ReceiveReplyIcon" },
69                         { "System.ServiceModel.Activities.Send", "SendIcon" },
70                         { "System.ServiceModel.Activities.SendReply", "SendReplyIcon" },
71                         { "System.ServiceModel.Activities.TransactedReceiveScope", "TransactedReceiveScopeIcon" },
72                         { "System.ServiceModel.Activities.Presentation.Factories.ReceiveAndSendReplyFactory", "ReceiveAndSendReplyIcon" },
73                         { "System.ServiceModel.Activities.Presentation.Factories.SendAndReceiveReplyFactory", "SendAndReceiveReplyIcon" },
74                     };
75                 }
76
77                 return iconNameMapping;
78             }
79         }
80
81         internal static string GetIconResourceKey(string activityFullName)
82         {
83             if (!string.IsNullOrWhiteSpace(activityFullName) && IconNameMapping.ContainsKey(activityFullName))
84             {
85                 return IconNameMapping[activityFullName];
86             }
87
88             return null;
89         }
90
91         internal static DrawingBrush GetBrushFromResource(string activityFullName)
92         {
93             string resourceKey = GetIconResourceKey(activityFullName);
94             if (resourceKey == null)
95             {
96                 return null;
97             }
98
99             var resourceDictionary = EditorResources.GetIcons();
100             if (resourceDictionary != null && resourceDictionary.Contains(resourceKey))
101             {
102                 DrawingBrush drawingBrush = resourceDictionary[resourceKey] as DrawingBrush;
103                 return drawingBrush;
104             }
105
106             return null;
107         }
108     }
109 }