private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            if (validateInput())
            {
                enableDisableUI(true);
                showHideProgressIndicator(Visibility.Visible);
                ViewerApplicationControl va = ViewerApplicationControl.Instance;
                if (va != null)
                {
                    va.View.SaveExtensionsConfigData();

                    // Get add-in configuration (tools, controls, and behaviors) before map configuration so add-ins have a chance
                    // to perform map-related cleanup (e.g. removing temp layers) before the map is saved
                    string toolsXml = va.ToolPanels != null?va.ToolPanels.GetToolPanelsXml() : string.Empty;

                    string controlsXml = va.View.GetConfigurationOfControls();

                    // Publish only Xaps in use
                    string behaviorsXml = null;
                    ObservableCollection <string> usedXaps = BuilderApplication.Instance.GetXapsInUse(out behaviorsXml);
                    BuilderApplication.Instance.SyncExtensionsInUse(usedXaps);

                    string mapXaml = va.View.GetMapConfiguration(null);

                    // Now that the extensions list has been updated - serialize the applicationXml
                    string   appXml            = va.ViewerApplication.ToXml();
                    string   colorsXaml        = va.GetColorXaml();
                    byte[]   previewImageBytes = BuilderApplication.Instance.GetPreviewImage();
                    Template template          = BuilderApplication.Instance.Templates.FirstOrDefault <Template>(t => t.IsDefault);
                    string   templateId        = template != null ? template.ID : "Default";

                    SitePublishInfo info = new SitePublishInfo()
                    {
                        ApplicationXml      = appXml,
                        BehaviorsXml        = behaviorsXml,
                        ColorsXaml          = colorsXaml,
                        ControlsXml         = controlsXml,
                        ExtensionsXapsInUse = usedXaps.ToArray(),
                        MapXaml             = mapXaml,
                        PreviewImageBytes   = previewImageBytes,
                        ToolsXml            = toolsXml
                    };

                    var title = "";
                    if (ViewerApplicationControl.Instance != null && ViewerApplicationControl.Instance.ViewerApplication != null)
                    {
                        title = ViewerApplicationControl.Instance.ViewerApplication.TitleText;
                    }
                    ApplicationBuilderClient client = WCFProxyFactory.CreateApplicationBuilderProxy();
                    client.CreateViewerApplicationFromTemplateCompleted += new EventHandler <CreateViewerApplicationFromTemplateCompletedEventArgs>(client_CreateViewerApplicationFromTemplateCompleted);
                    client.CreateViewerApplicationFromTemplateAsync(NameTextBox.Text.Trim(), title,
                                                                    DescriptionTextBox.Text.Trim(), templateId, info);
                }
            }
        }