For those of you diving into the Community Server 2007 SDK and learning about the inner workings of Chameleon to create custom controls, I thought it would be helpful to outline the base control classes available to Chameleon control developers.
The list below outlines the base controls existing within the CommunityServer.Controls.dll assembly. All of these controls are abstract (except WrappedRepeater). While there may be too many base classes to memorize
, hopefully this list will provide the starting point needed for Chameleon control developers.
- WrappedContentBase (Base Control for Single Value Controls)
WrappedContentBase is the base class for all Single Value Chameleon Controls and implements the base support for ContainerId, Tag, CssClass, LeaderTemplate, TrailerTemplate, and other single value control properties. The content of the control must be defined by the control.
- PreTemplatedWrappedContentBase
PreTemplatedWrappedContentBase extends WrappedContentBase to add support for the ContentTemplate template which overrides the control-defined default content.
- ObjectDataBase
ObjectDataBase extends PreTemplatedWrappedContentBase to add support for reporting and formatting property and extended attribute values of the DataSource as the control's default content.
Example: PostData
- DelayedContentBase
DelayedContentBase extends PreTemplatedWrappedContentBase to add support for delayed loading of content.
Example: DelayedContent
- PreTemplatedPagerBase
PreTemplatedPagerBase extends WrappedContentBase to implement the IPager interface and support the rendering of pager links as the content of the control.
Example: Pager
- PopupMenuBase
PopupMenuBase extends WrappedContentBase to add support for rendering and sharing pop-up menus.
- ClientPopulatedPopupMenuBase
ClientPopulatedPopupMenuBase extends PopupMenuBase to add support for client-side parameter-modified and shared pop-up menus.
Example: ContactPopupMenu
- ServerPopulatedPopupMenuBase
ServerPopulatedPopupMenuBase extends PopupMenuBase to add support for server-side AJAX-updated parameter-modified and shared pop-up menus.
Example: FavoritePopupMenu
- PostRatingBase
PostRatingBase extends WrappedContentBase to add support for rendering post ratings as the content of the control.
Example: WeblogPostRating
- ToggleButtonBase
ToggleButtonBase extends WrappedContentBase to add support for rendering AJAX-enabled toggle on/off links as the content of the control. The content of the on, off, and processing links must be defined by the control.
- PreTemplatedToggleButtonBase
PreTemplatedToggleButtonBase extends ToggleButtonBase to add support for OnTemplate, OffTemplate, and ProcessingTemplate templates to define the rendered toggle button content and override the default control-defined content.
Example: ThreadSubscriptionToggleButton
- CollapsableAreaBase
CollaspableAreaBase extends WrappedContentBase to add support for rendering collapsable content.
Example: ForumGroupCollasableArea
- PostTagEditableListBase
PostTagEditableListBase extends WrappedContentBase to add support for rendering client-side AJAX-updated editable tag lists as the content of the control.
Example: WeblogPostTagEditableList
- HoverPopupBase
HoverPopupBase extends WrappedContentBase to add support for showing a pop-up message when the user hovers over the code-defined content of the control.
- InlineEditableContentBase
InlineEditableContentBase extends WrappedContentBase to add support for client-side editing of the code-defined content of the control.
Example: ForumEditableData
- WrappedRepeater (Base Control for List Controls)
WrappedRepeater extends Repeater and adds support for ContainerId, Tag, CssClass, LeaderTemplate, FooterTemplate, AdTemplate, RowSeperatorTemplate, and other list control properties. WrappedRepeater is the base class for all Chameleon List Controls.
- WrappedFormBase (Base Control for Form Controls)
WrappedFormBase is the base class for all Chameleon Form Controls, implementing ContainerId, Tag, CssClass, LeaderTemplate, TrailerTemplate, FormTemplate, validation support, and other form control properties/methods.
Example: LoginForm
- PreTemplatedWrappedFormBase
PreTemplatedWrappedFormBase extends WrappedFormBase to support code-defined default implementations of FormTemplate.
Example: SearchForm
- UploadPostAttachmentFormBase
UploadPostAttachmentFormBase extends WrappedFormBase to implement the base form used to upload post attachments.
Example: UploadPostAttachmentForm (CommunityServer.Discussions)
- WrappedSubFormBase (Base Control for Sub-Form Controls)
WrappedSubFormBase extends WrappedFormBase to implement methods to support sub-forms. WrappedSubFormBase is the base class for all Chameleon Sub-Forms.
Example: PostTagsSubForm
- ConditionBase (Base Control for Condition Controls)
ConditionBase is the base class for all Chameleon Conditions Controls defining the interface used to interact with conditions.
Example: UserInRoleCondition
- ActionBase (Base Control for Action Controls)
ActionBase is the base class for all Chameleon Action Controls defining the interface used to interact with actions.
Example: GoToSiteUrlAction
- CSThemePageBase (Base Control for Page Controls)
CSThemePageBase is the base class for all Chameleon Page Controls and implements the basic properties and methods to support rendering Chameleon controls.
Example: CSThemePage
As you can see, there are quite a few base control classes. These classes, however, allow new Chameleon controls to be implemented very easily (many controls are only a dozen to few dozen lines of code).
For more specific information about these base classes, I suggest downloading the CS2007 Chameleon Control Documentation.