private void OnGenerateFilesButtonClick(object sender, EventArgs e)
        {
            if (outputDirectoryText.Text != null && outputDirectoryText.Text.Trim().Length > 0)
            {
                if (Directory.Exists(outputDirectoryText.Text) == false)
                {
                    Directory.CreateDirectory(outputDirectoryText.Text);
                }

                using (var switcher = new ScopeSwitcher<Control, Cursor>(Parent, Cursors.WaitCursor))
                {
                    var assemblyBrowser = (IAssemblyBrowser) serviceProvider.GetService(typeof(IAssemblyBrowser));

                    if (assemblyBrowser.ActiveItem != null)
                    {
                        object resolvedObject = Resolve(assemblyBrowser.ActiveItem);

                        if (resolvedObject != null)
                        {
                            if (ThreadPool.QueueUserWorkItem(GenerateFiles,
                                                             new GenerateFilesState
                                                                 {
                                                                     ActiveItem = assemblyBrowser.ActiveItem,
                                                                     CreateSubdirectories = createSubDirectories.Checked,
                                                                     CreateVisualStudioProjectFile =
                                                                         createVisualStudioProjectFile.Checked,
                                                                     Directory = outputDirectoryText.Text
                                                                 }))
                            {
                                generateFilesButton.Enabled = false;
                                cancelGenerationButton.Enabled = true;
                            }
                        }
                        else
                        {
                            fileGenerationStatusText.Text = string.Format(
                                CultureInfo.CurrentCulture, "Could not resolve the active item type {0}.",
                                assemblyBrowser.ActiveItem.GetType().FullName);
                            fileGenerationStatusText.SelectionStart = 0;
                            fileGenerationStatusText.SelectionLength = 0;
                        }
                    }
                }
            }
        }
 private void OnCancelGenerationButtonClick(object sender, EventArgs e)
 {
     using (var switcher = new ScopeSwitcher<Control, Cursor>(Parent, Cursors.WaitCursor))
     {
         CancelFileGeneration();
         FileGenerationComplete();
     }
 }