Fix bugs in sizing TableLayoutPanel (Xamarin bug 18638)
[mono.git] / mcs / class / System.ComponentModel.Composition / src / ComponentModel / System / ComponentModel / Composition / Primitives / CompositionElementExtensions.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 using System;\r
5 using Microsoft.Internal;\r
6 \r
7 namespace System.ComponentModel.Composition.Primitives\r
8 {\r
9     internal static class CompositionElementExtensions\r
10     {\r
11 #if !SILVERLIGHT\r
12         public static ICompositionElement ToSerializableElement(this ICompositionElement element)\r
13         {\r
14             return SerializableCompositionElement.FromICompositionElement(element);\r
15         }\r
16 #endif\r
17         public static ICompositionElement ToElement(this Export export)\r
18         {\r
19             // First try the export\r
20             ICompositionElement element = export as ICompositionElement;\r
21             if (element != null)\r
22             {\r
23                 return element;\r
24             }\r
25 \r
26             // Otherwise, try the definition\r
27             return ToElement(export.Definition);\r
28         }\r
29 \r
30         public static ICompositionElement ToElement(this ExportDefinition definition)\r
31         {\r
32             return ToElementCore(definition);\r
33         }\r
34 \r
35         public static ICompositionElement ToElement(this ImportDefinition definition)\r
36         {\r
37             return ToElementCore(definition);\r
38         }\r
39 \r
40         public static ICompositionElement ToElement(this ComposablePart part)\r
41         {\r
42             return ToElementCore(part);\r
43         }\r
44 \r
45         public static ICompositionElement ToElement(this ComposablePartDefinition definition)\r
46         {\r
47             return ToElementCore(definition);\r
48         }\r
49 \r
50         public static string GetDisplayName(this ComposablePartDefinition definition)\r
51         {\r
52             return GetDisplayNameCore(definition);\r
53         }\r
54 \r
55         public static string GetDisplayName(this ComposablePartCatalog catalog)\r
56         {\r
57             return GetDisplayNameCore(catalog);\r
58         }\r
59 \r
60         private static string GetDisplayNameCore(object value)\r
61         {\r
62             ICompositionElement element = value as ICompositionElement;\r
63             if (element != null)\r
64             {\r
65                 return element.DisplayName;\r
66             }\r
67 \r
68             return value.ToString();\r
69         }\r
70 \r
71         private static ICompositionElement ToElementCore(object value)\r
72         {\r
73             ICompositionElement element = value as ICompositionElement;\r
74             if (element != null)\r
75             {\r
76                 return element;\r
77             }\r
78 \r
79             return new CompositionElement(value);\r
80         }\r
81     }\r
82 }