public IType GetClass(bool getUserClass) { if (targetObject == null) { return(null); } IType cls = gproject.FindClass(className, getUserClass); if (cls != null) { return(cls); } // The class name may have changed. Try to guess the new name. ArrayList matches = new ArrayList(); ICompilationUnit unit = null; ProjectDom ctx = gproject.GetParserContext(); ParsedDocument doc = ProjectDomService.Parse(project, classFile, null); if (doc != null && doc.CompilationUnit != null) { unit = doc.CompilationUnit; foreach (IType fcls in unit.Types) { if (IsValidClass(ctx, fcls, targetObject)) { matches.Add(fcls); } } } // If found the class, just return it if (matches.Count == 1) { cls = (IType)matches [0]; className = cls.FullName; targetObject.Name = className; gproject.Save(true); return(cls); } // If not found, warn the user. if (unit != null && unit.Types.Count > 0) { using (SelectRenamedClassDialog dialog = new SelectRenamedClassDialog(unit.Types)) { if (dialog.Run()) { className = dialog.SelectedClass; if (className == null) { return(null); } else { targetObject.Name = className; gproject.Save(true); return(gproject.FindClass(className)); } } } } else { MessageService.ShowError(GettextCatalog.GetString("The class bound to the component '{0}' could not be found. This may be due to syntax errors in the source code file.", GetObjectName(targetObject))); } return(null); }
public IUnresolvedTypeDefinition GetClass(bool getUserClass) { if (targetObject == null) { return(null); } var cls = gproject.FindClass(className, getUserClass); if (cls != null) { return(cls); } // The class name may have changed. Try to guess the new name. var matches = new List <IUnresolvedTypeDefinition> (); ParsedDocument unit = null; var ctx = gproject.GetParserContext(); var doc = TypeSystemService.ParseFile(project, classFile); if (doc != null) { unit = doc; foreach (var fcls in unit.TopLevelTypeDefinitions) { if (IsValidClass(fcls.Resolve(project), targetObject)) { matches.Add(fcls); } } } // If found the class, just return it if (matches.Count == 1) { cls = matches [0]; className = cls.FullName; targetObject.Name = className; gproject.Save(true); return(cls); } // If not found, warn the user. if (unit != null && unit.TopLevelTypeDefinitions.Count > 0) { using (SelectRenamedClassDialog dialog = new SelectRenamedClassDialog(unit.TopLevelTypeDefinitions.Select(c => c.Resolve(project)))) { if (dialog.Run()) { className = dialog.SelectedClass; if (className == null) { return(null); } else { targetObject.Name = className; gproject.Save(true); return(gproject.FindClass(className)); } } } } else { MessageService.ShowError(GettextCatalog.GetString("The class bound to the component '{0}' could not be found. This may be due to syntax errors in the source code file.", GetObjectName(targetObject))); } return(null); }