public virtual void Save(IServiceProvider serviceProvider)
        {
            ConfigurationSectionInfo info = null;
            ConfigurationNode        node = ServiceHelper.GetCurrentRootNode(serviceProvider);

            try
            {
                IConfigurationSource    configurationSource = GetConfigurationSource(serviceProvider);
                IConfigurationParameter parameter           = GetConfigurationParameter(serviceProvider);

                info = GetConfigurationSectionInfo(serviceProvider);
                if (null != info && !string.IsNullOrEmpty(info.SectionName))
                {
                    if (null != info.Section)
                    {
                        configurationSource.Add(parameter, info.SectionName, info.Section);
                    }
                    else
                    {
                        configurationSource.Remove(parameter, info.SectionName);
                    }
                }
            }
            catch (Exception e)
            {
                ServiceHelper.LogError(serviceProvider, info != null ? info.Node : node, e);
            }
        }
예제 #2
0
        /// <summary>
        /// <para>Opens the configuration settings and registers them with the application.</para>
        /// </summary>
        /// <param name="serviceProvider">
        /// <para>The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</para>
        /// </param>
        public void Open(IServiceProvider serviceProvider)
        {
            ConfigurationContext configurationContext       = ServiceHelper.GetCurrentConfigurationContext(serviceProvider);
            ConfigurationSectionCollectionNode sectionsNode = null;
            ConfigurationNode configurationNode             = ServiceHelper.GetCurrentRootNode(serviceProvider);

            RemoveCurrentConfigurationSectionCollectionNode(serviceProvider);
            try
            {
                string appName = SR.DefaultApplicationName;
                ConfigurationSettings configurationSettings = configurationContext.GetMetaConfiguration();
                if (null != configurationSettings)
                {
                    appName = configurationSettings.ApplicationName;
                    if (configurationSettings.ConfigurationSections.Count > 0)
                    {
                        sectionsNode = new ConfigurationSectionCollectionNode(configurationSettings);
                        configurationNode.Nodes.Add(sectionsNode);
                    }
                }
                if (configurationNode is ApplicationConfigurationNode)
                {
                    ((ApplicationConfigurationNode)configurationNode).Name = appName;
                }
            }
            catch (ConfigurationException e)
            {
                ServiceHelper.LogError(serviceProvider, sectionsNode, e);
            }
        }
예제 #3
0
        /// <summary>
        /// Gets a <see cref="FileConfigurationSource"/> based on the applications configuration file.
        /// </summary>
        /// <param name="serviceProvider">The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</param>
        /// <returns>A <see cref="FileConfigurationSource"/> based on the applications configuration file.</returns>
        protected override IConfigurationSource GetConfigurationSource(IServiceProvider serviceProvider)
        {
            string configurationFile = ServiceHelper.GetCurrentRootNode(serviceProvider).ConfigurationFile;

            FileConfigurationSource.ResetImplementation(configurationFile, false);

            return(new FileConfigurationSource(configurationFile));
        }
예제 #4
0
        /// <summary>
        /// Executes the creation of the file.
        /// </summary>
        public override void Execute()
        {
            string filePath = GetAbsolutePathFromConfigurationPath(ServiceHelper.GetCurrentRootNode(ServiceProvider).ConfigurationFile, FileName);

            if (!File.Exists(filePath))
            {
                CreateFile(filePath);
            }
        }
        private void CreateStorageEntries()
        {
            using (StorageCreationNodeCommand cmd = new StorageCreationNodeCommand(ServiceProvider))
            {
                cmd.Execute(ServiceHelper.GetCurrentRootNode(ServiceProvider));
            }
            IStorageService storage = CurrentHierarchy.StorageService;

            storage.ForEach(new Action <StorageCreationCommand>(ExecuteStorageCommand));
        }
예제 #6
0
        private static void CreateCommands(IServiceProvider serviceProvider)
        {
            IUIHierarchy      currentHierarchy = ServiceHelper.GetCurrentHierarchy(serviceProvider);
            ConfigurationNode rootNode         = ServiceHelper.GetCurrentRootNode(serviceProvider);
            bool containsNode = currentHierarchy.ContainsNodeType(rootNode, typeof(ConfigurationSectionCollectionNode));
            IMenuContainerService menuService = ServiceHelper.GetMenuContainerService(serviceProvider);
            ConfigurationMenuItem item        = new ConfigurationMenuItem(SR.ConfigurationSectionCollectionMenuItemText, new AddChildNodeCommand(serviceProvider, typeof(ConfigurationSectionCollectionNode)), rootNode, Shortcut.None, SR.ConfigurationSectionCollectionStatusText, InsertionPoint.New);

            item.Enabled = !containsNode;
            menuService.MenuItems.Add(item);
        }
 private bool DoValidationCommand()
 {
     using (ValidateNodeCommand cmd = new ValidateNodeCommand(ServiceProvider, false, false))
     {
         cmd.Execute(ServiceHelper.GetCurrentRootNode(ServiceProvider));
         if (!cmd.ValidationSucceeded)
         {
             UIService.ShowMessage(Resources.ValidationErrorsMessage, Resources.SaveApplicationCaption, MessageBoxButtons.OK);
             saveSucceeded = false;
             return(false);
         }
         return(true);
     }
 }
        private bool CreateConfigurationFile()
        {
            // set the configuration file here for the service
            IStorageService service = ServiceHelper.GetCurrentStorageService(ServiceProvider);

            service.ConfigurationFile = ServiceHelper.GetCurrentRootNode(ServiceProvider).ConfigurationFile;
            ConfigurationFileStorageCreationCommand cmd = new ConfigurationFileStorageCreationCommand(service.ConfigurationFile, ServiceProvider);

            cmd.Execute();
            if (cmd.CreationCancled)
            {
                return(false);
            }
            return(true);
        }
예제 #9
0
        private static ConfigurationSettings GetConfigurationSettings(IServiceProvider serviceProvider)
        {
            ConfigurationNode rootNode = ServiceHelper.GetCurrentRootNode(serviceProvider);
            ConfigurationSectionCollectionNode sectionsNode = rootNode.Hierarchy.FindNodeByType(rootNode, typeof(ConfigurationSectionCollectionNode)) as ConfigurationSectionCollectionNode;
            ConfigurationSettings configurationSettings     = null;

            if (sectionsNode == null)
            {
                configurationSettings = new ConfigurationSettings();
            }
            else
            {
                configurationSettings = sectionsNode.ConfigurationSettings;
            }
            return(configurationSettings);
        }
        private DialogResult GetApplicationFileFromUI()
        {
            ApplicationConfigurationNode node = (ApplicationConfigurationNode)ServiceHelper.GetCurrentRootNode(ServiceProvider);
            SaveFileDialog dialog             = new SaveFileDialog();

            dialog.Filter = SR.ConfigurationFileDialogFilter;
            dialog.Title  = System.String.Concat(SR.SaveApplicationCaption, " : ", node.Name);
            IUIService uiService = ServiceHelper.GetUIService(ServiceProvider);

            System.Windows.Forms.DialogResult result = uiService.ShowSaveDialog(dialog);
            if (System.Windows.Forms.DialogResult.OK == result)
            {
                FileName = dialog.FileName;
                node.ConfigurationFile = FileName;
                node.Hierarchy.StorageTable.MetaConfigurationFile = FileName;
            }
            return(result);
        }
예제 #11
0
        /// <summary>
        /// TODO
        /// </summary>
        /// <param name="node"></param>
        protected override void ExecuteCore(ConfigurationNode node)
        {
            ConfigurationApplicationNode applicationNode = ServiceHelper.GetCurrentRootNode(ServiceProvider);
            string previousConfigurationFile             = applicationNode.ConfigurationFile;

            applicationNode.ConfigurationFile = filePath;
            try
            {
                base.ExecuteCore(node);
            }
            finally
            {
                if (!updateApplicationNode)
                {
                    applicationNode.ConfigurationFile = previousConfigurationFile;
                }
            }
        }
        public void Open(IServiceProvider serviceProvider)
        {
            IConfigurationSource         configurationSource = GetConfigurationSource(serviceProvider);
            ConfigurationApplicationNode appNode             = ServiceHelper.GetCurrentRootNode(serviceProvider);

            try
            {
                ConfigurationSectionInfo info = GetConfigurationSectionInfo(serviceProvider);
                if (null != info)
                {
                    ConfigurationSection section = configurationSource.GetSection(info.SectionName);
                    OpenCore(serviceProvider, appNode, section);
                }
            }
            catch (Exception e)
            {
                ServiceHelper.LogError(serviceProvider, appNode, e);
            }
        }
예제 #13
0
        /// <summary>
        /// <para>Saves the configuration settings created for the application.</para>
        /// </summary>
        /// <param name="serviceProvider">
        /// <para>The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</para>
        /// </param>
        public void Save(IServiceProvider serviceProvider)
        {
            ConfigurationContext configurationContext = ServiceHelper.GetCurrentConfigurationContext(serviceProvider);
            ConfigurationNode    node = ServiceHelper.GetCurrentRootNode(serviceProvider);

            try
            {
                ConfigurationSettings configurationSettings = GetConfigurationSettings(serviceProvider);
                configurationSettings.ApplicationName = node.Name;
                configurationContext.WriteMetaConfiguration(configurationSettings);
            }
            catch (ConfigurationException e)
            {
                ServiceHelper.LogError(serviceProvider, node, e);
            }
            catch (InvalidOperationException e)
            {
                ServiceHelper.LogError(serviceProvider, node, e);
            }
        }
예제 #14
0
        /// <summary>
        /// Gets the a <see cref="ConfigurationSectionInfo"/> for the instrumentation section.
        /// </summary>
        /// <param name="serviceProvider">The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</param>
        /// <returns>A <see cref="ConfigurationSectionInfo"/> for the configuration for the configuration sources.</returns>
        protected override ConfigurationSectionInfo GetConfigurationSectionInfo(IServiceProvider serviceProvider)
        {
            ConfigurationNode   rootNode = ServiceHelper.GetCurrentRootNode(serviceProvider);
            InstrumentationNode node     = null;

            if (null != rootNode)
            {
                node = rootNode.Hierarchy.FindNodeByType(rootNode, typeof(InstrumentationNode)) as InstrumentationNode;
            }
            InstrumentationConfigurationSection instrumentationSection = null;

            if (node == null)
            {
                instrumentationSection = null;
            }
            else
            {
                instrumentationSection = node.InstrumentationConfigurationSection;
            }
            return(new ConfigurationSectionInfo(node, instrumentationSection, InstrumentationConfigurationSection.SectionName));
        }
예제 #15
0
        /// <summary>
        /// Gets the a <see cref="ConfigurationSectionInfo"/> for the configuration sources.
        /// </summary>
        /// <param name="serviceProvider">The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</param>
        /// <returns>A <see cref="ConfigurationSectionInfo"/> for the configuration for the configuration sources.</returns>
        protected override ConfigurationSectionInfo GetConfigurationSectionInfo(IServiceProvider serviceProvider)
        {
            ConfigurationNode rootNode          = ServiceHelper.GetCurrentRootNode(serviceProvider);
            ConfigurationSourceSectionNode node = null;

            if (null != rootNode)
            {
                node = (ConfigurationSourceSectionNode)rootNode.Hierarchy.FindNodeByType(rootNode, typeof(ConfigurationSourceSectionNode));
            }
            ConfigurationSourceSection sourcesSection = null;

            if (node == null)
            {
                sourcesSection = null;
            }
            else
            {
                ConfigurationSourceSectionBuilder builder = new ConfigurationSourceSectionBuilder(node);
                sourcesSection = builder.Build();;
            }
            return(new ConfigurationSectionInfo(node, sourcesSection, ConfigurationSourceSection.SectionName));
        }
        private DialogResult GetApplicationFileFromUI()
        {
            ConfigurationApplicationNode node = (ConfigurationApplicationNode)ServiceHelper.GetCurrentRootNode(ServiceProvider);
            SaveFileDialog dialog             = new SaveFileDialog();

            dialog.Filter = Resources.ConfigurationFileDialogFilter;
            dialog.Title  = System.String.Concat(Resources.SaveApplicationCaption, " : ", node.Name);
            IUIService uiService = ServiceHelper.GetUIService(ServiceProvider);

            System.Windows.Forms.DialogResult result = uiService.ShowSaveDialog(dialog);
            Application.DoEvents();
            // we need this because the wait cursor gets set back by the save dialog
            Cursor.Current = Cursors.WaitCursor;
            if (System.Windows.Forms.DialogResult.OK == result)
            {
                DeleteFileIfItExists(dialog.FileName);
                FileName = dialog.FileName;
                node.ConfigurationFile = FileName;
                node.Hierarchy.StorageService.ConfigurationFile = FileName;
                uiService.RefreshPropertyGrid();
            }
            return(result);
        }
예제 #17
0
 /// <summary>
 /// Gets a <see cref="FileConfigurationParameter"/> based on the applications configuration file.
 /// </summary>
 /// <param name="serviceProvider">The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</param>
 /// <returns>A <see cref="FileConfigurationParameter"/> based on the applications configuration file.</returns>
 protected override IConfigurationParameter GetConfigurationParameter(IServiceProvider serviceProvider)
 {
     return(new FileConfigurationParameter(ServiceHelper.GetCurrentRootNode(serviceProvider).ConfigurationFile));
 }