/// <summary>
        /// Commits changes (if any) to the features of the ProgramDescription supplied to the editor.
        /// </summary>
        /// <returns><c>true</c> if any changes were made.</returns>
        public bool CommitChangesToProgramDescription()
        {
            var anyChanges = OriginalFeatures.CompareTo(EditFeatures) != 0;

            if (anyChanges)
            {
                var revertedToDatabase = false;
                if (EditsPriorToRevertToDatabase != null)
                {
                    revertedToDatabase = Description.ProgramInformation.Features.Clone().CompareTo(EditFeatures) == 0;
                }
                Description.Features = EditFeatures;
                INTV.Shared.Model.Program.ProgramCollection.Roms.ReportProgramFeaturesChanged(new[] { Description }, revertedToDatabase);
            }
            return(anyChanges);
        }
        /// <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();
 }