public bool IsAvailable(IUserDataHolder cache) { var typeDeclaration = _provider.GetSelectedElement <ICSharpTypeDeclaration>(true, true); if (typeDeclaration == null || !typeDeclaration.IsValid()) { return(false); } var element = typeDeclaration.DeclaredElement; if (element == null) { return(false); } if (typeDeclaration.GetContainingTypeDeclaration() != null) { return(false); } if (!typeDeclaration.GetNameRange().Contains(_provider.CaretOffset)) { return(false); } _currentProject = typeDeclaration.GetProject(); if (RenameFileToMatchTypeNameAction.CountTopLevelTypeDeclarations(_provider.PsiFile as ICSharpFile) <= 1) { return(false); } return(RenameFileToMatchTypeNameAction.TypeNameNameDoesNotCorrespondWithFileName(element, _provider.ProjectFile)); }
private void MoveToOuterFile() { var declaredElement = _sourceTypeDeclaration.DeclaredElement; var solution = _sourceTypeDeclaration.GetSolution(); var newName = RenameFileToMatchTypeNameAction.GetFileName(declaredElement, _sourceTypeDeclaration.GetProjectFile()); if (newName == null) { return; } var dataProvider = new MoveMoFileMoveTypeDataProvider(newName, null, new[] { _sourceTypeDeclaration }); var context = new DataContext(); context.SetData(MoveTypeWorkflow.DATA_PROVIDER, dataProvider); context.SetData(DataConstants.SOLUTION, solution); context.SetData(JetBrains.ReSharper.Psi.Services.DataConstants.PSI_LANGUAGE_TYPE, _sourceTypeDeclaration.Language); context.SetData(JetBrains.ReSharper.Psi.Services.DataConstants.DECLARED_ELEMENT, declaredElement); var workflow = new MoveTypeWorkflow(solution); RefactoringActionUtil.ExecuteRefactoring(context, workflow); }