Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.Netron/3.0.2672.12446/Netron.Diagramming.Core-3.0.2672.12446/PropertySystem/Providers/ShapeProvider.cs @ 2768

Last change on this file since 2768 was 2768, checked in by mkommend, 14 years ago

added solution folders and sources for the netron library (ticket #867)

File size: 2.5 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Text;
4using System.ComponentModel;
5namespace Netron.Diagramming.Core
6{
7    /// <summary>
8    /// Type descriptor provider for all descendants of the <see cref="ShapeBase"/> classes.
9    /// </summary>
10    class ShapeProvider : TypeDescriptionProvider
11    {
12        #region Fields
13       
14        /// <summary>
15        /// simple shape descriptor
16        /// </summary>
17        private static SimpleShapeBaseDescriptor simpleShapeBaseDescriptor;
18        /// <summary>
19        /// complex shape descriptor
20        /// </summary>
21        private static ComplexShapeBaseDescriptor complexShapeBaseDescriptor;
22
23
24        private static ClassShapeDescriptor classShapeDescriptor;
25
26        #endregion
27
28        #region Properties
29
30
31        #endregion
32
33        #region Constructor
34        public ShapeProvider()
35        {
36            simpleShapeBaseDescriptor = new SimpleShapeBaseDescriptor(this, typeof(SimpleShapeBase));
37            complexShapeBaseDescriptor = new ComplexShapeBaseDescriptor(this, typeof(ComplexShapeBase));
38            classShapeDescriptor = new ClassShapeDescriptor(this, typeof(ClassShape));
39        }
40        #endregion
41
42        #region Methods
43        /// <summary>
44        /// Gets a custom type descriptor for the given type and object.
45        /// </summary>
46        /// <param name="objectType">The type of object for which to retrieve the type descriptor.</param>
47        /// <param name="instance">An instance of the type. Can be null if no instance was passed to the <see cref="T:System.ComponentModel.TypeDescriptor"></see>.</param>
48        /// <returns>
49        /// An <see cref="T:System.ComponentModel.ICustomTypeDescriptor"></see> that can provide metadata for the type.
50        /// </returns>
51        public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
52        {
53            if (typeof(SimpleShapeBase).IsInstanceOfType(instance))
54            {
55                return simpleShapeBaseDescriptor;
56            }
57            else if (typeof(ClassShape).IsInstanceOfType(instance))
58            {
59                return classShapeDescriptor;
60            }
61            else if (typeof(ComplexShapeBase).IsInstanceOfType(instance))
62            {
63                return complexShapeBaseDescriptor;
64            }
65            else //if nothing found use the base descriptor
66                return base.GetTypeDescriptor(objectType, instance);
67
68        }
69        #endregion
70
71    }
72}
73
Note: See TracBrowser for help on using the repository browser.