/// <summary>
        /// Initialize the view model and all of the known feature page editors.
        /// </summary>
        /// <param name="description">The description of the program whose features are being edited.</param>
        /// <param name="inplaceEditor">The in-place editor hosting this editor. Used for lifetime control.</param>
        public void Initialize(ProgramDescription description, IInPlaceEditor inplaceEditor)
        {
            InPlaceEditor       = inplaceEditor;
            Description         = description;
            ShowRevertToDefault = false;
            switch (description.ProgramInformation.DataOrigin)
            {
            case ProgramInformationOrigin.UserDefined:
            case ProgramInformationOrigin.None:
                break;

            default:
                ShowRevertToDefault = true;
                break;
            }
            OriginalFeatures             = description.Features.Clone();
            EditFeatures                 = OriginalFeatures.Clone();
            EditsPriorToRevertToDatabase = null;
            InitializeToEditFeatures();
        }
 /// <summary>
 /// Reverts any changes made to the features, resetting to values originally supplied to the editor.
 /// </summary>
 public void RevertChanges()
 {
     EditFeatures = OriginalFeatures.Clone();
     EditsPriorToRevertToDatabase = null;
     InitializeToEditFeatures();
 }