Now let’s see how the custom Property Editor class can be used in the component class. Depending on the component’s property type, different editor classes are either used by default, or specified in the component’s code by using the attribute [PropertyEditor(typeof(...))]. Both ways of implementing Property Editors can be seen in the example of a Heading component. When examining the code snippets, it is clear that we have control over heading text, size, graphic and all other properties.
... [Caption("Text")] [System.ComponentModel.Description("This is the text of the heading.")] 
[FrontEdit(Order = 1)] public string Text {...} [Caption("Size")]
[System.ComponentModel.Description("This is the size of the heading.")]
[PropertyEditor(typeof(Seeems.Framework.UI.Design.EnumPropertyEditor)]
public CmsHeadingType HeadingType {...}
[Caption("Graphic")] [System.ComponentModel.Description("This is a graphic,
icon, or image displayed together with or instead of the text.")]
[PropertyEditor(typeof(Seeems.Framework.UI.Design.ImagePropertyEditor))]
public string Icon { get; set; } ...