public void CleanUp() { Workspace.CleanUpWaitingService(); Workspace.CleanUpWorkspace(); SolutionExplorer.CleanUpOpenSolution(); // Close any windows leftover from previous (failed) tests InteractiveWindow.CloseInteractiveWindow(); ChangeSignatureDialog.CloseWindow(); GenerateTypeDialog.CloseWindow(); ExtractInterfaceDialog.CloseWindow(); }
protected override void ExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null) { return; } using (var view = new ExtractInterfaceDialog()) { var factory = new ExtractInterfacePresenterFactory(Vbe, _state, view); var refactoring = new ExtractInterfaceRefactoring(Vbe, _state, _messageBox, factory); refactoring.Refactor(); } }
protected override void OnExecute(object parameter) { using (var activePane = Vbe.ActiveCodePane) { if (activePane == null || activePane.IsWrappingNullReference) { return; } } using (var view = new ExtractInterfaceDialog(new ExtractInterfaceViewModel())) { var factory = new ExtractInterfacePresenterFactory(Vbe, _state, view); var refactoring = new ExtractInterfaceRefactoring(Vbe, _messageBox, factory, _rewritingManager); refactoring.Refactor(); } }
public void CleanUp() { Workspace.CleanUpWaitingService(); Workspace.CleanUpWorkspace(); SolutionExplorer.CleanUpOpenSolution(); Workspace.WaitForAllAsyncOperations(); // Close any windows leftover from previous (failed) tests InteractiveWindow.CloseInteractiveWindow(); ObjectBrowserWindow.CloseWindow(); ChangeSignatureDialog.CloseWindow(); GenerateTypeDialog.CloseWindow(); ExtractInterfaceDialog.CloseWindow(); StartPage.CloseWindow(); // Prevent the start page from showing after each solution closes StartPage.SetEnabled(false); }
public static void ExtractInterface(IClass c) { ExtractInterfaceOptions extractInterface = new ExtractInterfaceOptions(c); using (ExtractInterfaceDialog eid = new ExtractInterfaceDialog()) { extractInterface = eid.ShowDialog(extractInterface); if (extractInterface.IsCancelled) { return; } // do rename /* * MessageService.ShowMessageFormatted("Extracting interface", * @"Extracting {0} [{1}] from {2} into {3}", * extractInterface.NewInterfaceName, * extractInterface.FullyQualifiedName, * extractInterface.ClassEntity.Name, * extractInterface.NewFileName * ); * ` */ } string newInterfaceFileName = Path.Combine(Path.GetDirectoryName(c.CompilationUnit.FileName), extractInterface.NewFileName); if (File.Exists(newInterfaceFileName)) { int confirmReplace = MessageService.ShowCustomDialog("Extract Interface", newInterfaceFileName + " already exists!", 0, 1, "${res:Global.ReplaceButtonText}", "${res:Global.AbortButtonText}"); if (confirmReplace != 0) { return; } } LanguageProperties language = c.ProjectContent.Language; string classFileName = c.CompilationUnit.FileName; string existingClassCode = ParserService.GetParseableFileContent(classFileName).Text; // build the new interface... string newInterfaceCode = language.RefactoringProvider.GenerateInterfaceForClass(extractInterface.NewInterfaceName, existingClassCode, extractInterface.ChosenMembers, c, extractInterface.IncludeComments); if (newInterfaceCode == null) { return; } // ...dump it to a file... IViewContent viewContent = FileService.GetOpenFile(newInterfaceFileName); ITextEditorProvider editable = viewContent as ITextEditorProvider; if (viewContent != null && editable != null) { // simply update it editable.TextEditor.Document.Text = newInterfaceCode; viewContent.PrimaryFile.SaveToDisk(); } else { // create it viewContent = FileService.NewFile(newInterfaceFileName, newInterfaceCode); viewContent.PrimaryFile.SaveToDisk(newInterfaceFileName); // ... and add it to the project IProject project = (IProject)c.ProjectContent.Project; if (project != null) { FileProjectItem projectItem = new FileProjectItem(project, ItemType.Compile); projectItem.FileName = newInterfaceFileName; ProjectService.AddProjectItem(project, projectItem); FileService.FireFileCreated(newInterfaceFileName, false); project.Save(); ProjectBrowserPad.RefreshViewAsync(); } } ICompilationUnit newCompilationUnit = ParserService.ParseFile(newInterfaceFileName).CompilationUnit; IClass newInterfaceDef = newCompilationUnit.Classes[0]; // finally, add the interface to the base types of the class that we're extracting from if (extractInterface.AddInterfaceToClass) { string modifiedClassCode = language.RefactoringProvider.AddBaseTypeToClass(existingClassCode, c, newInterfaceDef); if (modifiedClassCode == null) { return; } // TODO: replacing the whole text is not an option, we would loose all breakpoints/bookmarks. viewContent = FileService.OpenFile(classFileName); editable = viewContent as ITextEditorProvider; if (editable == null) { return; } editable.TextEditor.Document.Text = modifiedClassCode; } }