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); 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.SaveWindow (true, targetObject.Name); 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.SaveWindow (true, targetObject.Name); 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; }