private static void UpdateUiToConfig(CompilerPane pane, CompilerConfigurationNode config) { if (pane.CurrentCompilerConfiguration != null) { pane.CurrentCompilerConfiguration.UnSubscribePropertyChangedRecursive(pane); if (pane._lastNamespaceImportsChangedHandler != null) { pane.CurrentCompilerConfiguration.OpenSimCompilerSettings.GeneratedNamespaceImports .CollectionChanged -= pane._lastNamespaceImportsChangedHandler; } } pane.CurrentConfigIsEdited = false; pane.CurrentCompilerConfiguration = config; var compilerConfig = pane.CurrentCompilerConfiguration.OpenSimCompilerSettings; pane.GeneratedClassName = compilerConfig.GeneratedClassName != null ? compilerConfig.GeneratedClassName.FullSignature : ""; pane.GeneratedClassNamespace = compilerConfig.GeneratedClassNamespace != null ? compilerConfig.GeneratedClassNamespace.FullSignature : ""; pane.GeneratedConstructorSignature = compilerConfig.GeneratedConstructorSignature != null ? compilerConfig.GeneratedConstructorSignature.FullSignature : ""; pane.GeneratedInheritanceList = compilerConfig.GeneratedInheritanceList != null ? compilerConfig.GeneratedInheritanceList.FullSignature : ""; pane.CoOpTerminationFunctionCall = compilerConfig.CoOpTerminationFunctionCall != null ? compilerConfig.CoOpTerminationFunctionCall.FullSignature : ""; pane.CurrentCompilerConfiguration.SubscribePropertyChangedRecursive(pane, AnyCurrentCompilerConfigSubPropertyChanged); pane._lastNamespaceImportsChangedHandler = (sender, args) => { if (!AppSettings.Settings.CompilerConfigurations.ContainsKey(pane.SelectedCompilerConfigurationName)) { return; } var settingsConfig = AppSettings.Settings.CompilerConfigurations[pane.SelectedCompilerConfigurationName]; pane.CurrentConfigIsEdited = !pane.CurrentCompilerConfiguration.Equals(settingsConfig); }; pane.CurrentCompilerConfiguration.OpenSimCompilerSettings.GeneratedNamespaceImports .CollectionChanged += pane._lastNamespaceImportsChangedHandler; var bindingExpression = pane.GetBindingExpression(GeneratedClassNameProperty); if (bindingExpression != null) { bindingExpression.UpdateSource(); } }