/// <summary>
        /// Creates the control(s) necessary for prompting user for a new value
        /// </summary>
        /// <param name="configurationValues">The configuration values.</param>
        /// <param name="id"></param>
        /// <returns>
        /// The control
        /// </returns>
        public override System.Web.UI.Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id)
        {
            var mergeTemplatePicker = new MergeTemplatePicker {
                ID = id
            };

            return(mergeTemplatePicker);
        }
        /// <summary>
        /// Sets the value.
        /// Expects value as a MergeTemplate.Guid as string
        /// </summary>
        /// <param name="control">The control.</param>
        /// <param name="configurationValues">The configuration values.</param>
        /// <param name="value">The value.</param>
        public override void SetEditValue( System.Web.UI.Control control, Dictionary<string, ConfigurationValue> configurationValues, string value )
        {
            MergeTemplatePicker mergeTemplatePicker = control as MergeTemplatePicker;

            if ( mergeTemplatePicker != null )
            {
                Guid guid = value.AsGuid();

                // get the item (or null) and set it
                var mergeTemplate = new MergeTemplateService( new RockContext() ).Get( guid );
                mergeTemplatePicker.SetValue( mergeTemplate );
            }
        }
        /// <summary>
        /// Reads new values entered by the user for the field
        /// returns MergeTemplate.Guid as string
        /// </summary>
        /// <param name="control">Parent control that controls were added to in the CreateEditControl() method</param>
        /// <param name="configurationValues">The configuration values.</param>
        /// <returns></returns>
        public override string GetEditValue( System.Web.UI.Control control, Dictionary<string, ConfigurationValue> configurationValues )
        {
            MergeTemplatePicker mergeTemplatePicker = control as MergeTemplatePicker;

            if ( mergeTemplatePicker != null )
            {
                int? mergeTemplateId = mergeTemplatePicker.SelectedValue.AsIntegerOrNull();
                if ( mergeTemplateId.HasValue )
                {
                    var mergeTemplate = new MergeTemplateService( new RockContext() ).Get( mergeTemplateId.Value );
                    if ( mergeTemplate != null )
                    {
                        return mergeTemplate.Guid.ToString();
                    }
                }
            }

            return string.Empty;
        }