public override bool IsValid(RefactoringOptions options) { if (options.ResolveResult == null) { return(false); } IType type = options.Dom.GetType(options.ResolveResult.ResolvedType); if (type == null || type.ClassType != MonoDevelop.Projects.Dom.ClassType.Class) { return(false); } return(CurrentRefactoryOperationsHandler.ContainsAbstractMembers(type)); }
public override bool IsValid(RefactoringOptions options) { var unit = options.Document.ParsedDocument.GetAst <CompilationUnit> (); if (unit == null) { return(false); } var generator = options.CreateCodeGenerator(); if (generator == null) { return(false); } var loc = options.Document.Editor.Caret.Location; var declaration = unit.GetNodeAt <TypeDeclaration> (loc.Line, loc.Column); if (declaration == null) { return(false); } if (options.ResolveResult == null) { return(false); } var type = options.ResolveResult.Type; var def = type.GetDefinition(); if (def == null || type.Kind == TypeKind.Interface) { return(false); } if (!CurrentRefactoryOperationsHandler.ContainsAbstractMembers(type)) { return(false); } var declaringType = options.Document.ParsedDocument.GetInnermostTypeDefinition(loc); var missingAbstractMembers = def.Members.Where(member => member.IsAbstract && !declaringType.Members.Any(m => member.Name == m.Name)); return(missingAbstractMembers.Any()); }
public override bool IsValid(RefactoringOptions options) { if (options.ResolveResult == null) { return(false); } IType type = options.Dom.GetType(options.ResolveResult.ResolvedType); if (type == null || type.ClassType != MonoDevelop.Projects.Dom.ClassType.Class) { return(false); } if (!CurrentRefactoryOperationsHandler.ContainsAbstractMembers(type)) { return(false); } DocumentLocation location = options.GetTextEditorData().Caret.Location; IType declaringType = options.Document.CompilationUnit.GetTypeAt(location.Line, location.Column); var missingAbstractMembers = type.Members.Where(member => member.IsAbstract && !declaringType.Members.Any(m => member.Name == m.Name)); return(missingAbstractMembers.Any()); }