/// <summary>
        /// Adds a new license to the collection and makes it the selected license.
        /// </summary>
        private void AddLicense()
        {
            LicenseViewModel newLicense = new LicenseViewModel(new CWBozarth.LicenseManager.License());

            this.Licenses.Add(newLicense);
            this.SelectedLicense = newLicense;
        }
        /// <summary>
        /// Restore the application settings.
        /// </summary>
        private void RestoreSettings()
        {
            if (!string.IsNullOrEmpty(Settings.Default.UtilityProgramExecutable))
            {
                CWBozarth.LicenseManager.UtilityProgram.Instance.Executable = new FileInfo(Settings.Default.UtilityProgramExecutable);
            }

            // This is both a hack and a solution. This is a hack in that if LicenseViewModel were serializable the
            // ObservableCollection could be sent directly to the settings. This is a solution in that storing the
            // License means the settings don't need to be updated if the UI aspects get redesigned. Although that
            // is only a minor benefit. Another benefit is that a license can be checked to see if the port and
            // host are defined before saving it.
            if (Settings.Default.Licenses != null)
            {
                foreach (CWBozarth.LicenseManager.License license in Settings.Default.Licenses)
                {
                    LicenseViewModel licenseViewModel = new LicenseViewModel(license);
                    this.Licenses.Add(licenseViewModel);

                    if (licenseViewModel.License.GetStatusCanExecute)
                    {
                        licenseViewModel.GetStatus();
                    }
                }
            }
        }