public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf closedIcon) { ClassData classData = dataObject as ClassData; label = AmbienceService.DefaultAmbience.GetString(classData.Class.GetDefinition(), OutputFlags.ClassBrowserEntries | OutputFlags.IncludeMarkup); icon = Context.GetIcon(classData.Class.GetStockIcon()); }
public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo) { ClassData classData = dataObject as ClassData; nodeInfo.Label = Ambience.EscapeText(classData.Class.ToDisplayString(NameFormat)); nodeInfo.Icon = Context.GetIcon(classData.Class.GetStockIcon()); }
public override bool Equals(object ob) { ClassData other = ob as ClassData; return(other != null && cls.FullName == other.cls.FullName && project == other.project); }
public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo) { ClassData classData = dataObject as ClassData; nodeInfo.Label = AmbienceService.DefaultAmbience.GetString(classData.Class.GetDefinition(), OutputFlags.ClassBrowserEntries | OutputFlags.IncludeMarkup); nodeInfo.Icon = Context.GetIcon(classData.Class.GetStockIcon()); }
/* * private string GetNameWithGenericParameters (IType c) * { * if (c.TypeParameters != null && c.TypeParameters.Count > 0) * { * StringBuilder builder = new StringBuilder (c.Name); * builder.Append("<"); * for (int i = 0; i < c.TypeParameters.Count; i++) * { * builder.Append(c.TypeParameters[i].Name); * if (i + 1 < c.TypeParameters.Count) builder.Append(", "); * } * builder.Append(">"); * return builder.ToString(); * } * else * return c.Name; * }*/ public override void BuildChildNodes(ITreeBuilder builder, object dataObject) { ClassData classData = dataObject as ClassData; bool publicOnly = builder.Options ["PublicApiOnly"]; bool publicProtectedOnly = builder.Options ["PublicProtectedApiOnly"]; publicOnly |= publicProtectedOnly; // Delegates have an Invoke method, which doesn't need to be shown. if (classData.Class.Kind == TypeKind.Delegate) { return; } foreach (var innerClass in classData.Class.NestedTypes.Where(m => !m.IsSynthetic)) { if (innerClass.IsPublic || (innerClass.IsProtected && publicProtectedOnly) || !publicOnly) { builder.AddChild(new ClassData(classData.Project, innerClass)); } } foreach (var method in classData.Class.Methods.Where(m => !m.IsSynthetic)) { if (method.IsPublic || (method.IsProtected && publicProtectedOnly) || !publicOnly) { builder.AddChild(method); } } foreach (var property in classData.Class.Properties.Where(m => !m.IsSynthetic)) { if (property.IsPublic || (property.IsProtected && publicProtectedOnly) || !publicOnly) { builder.AddChild(property); } } foreach (var field in classData.Class.Fields.Where(m => !m.IsSynthetic)) { if (field.IsPublic || (field.IsProtected && publicProtectedOnly) || !publicOnly) { builder.AddChild(field); } } foreach (var e in classData.Class.Events.Where(m => !m.IsSynthetic)) { if (e.IsPublic || (e.IsProtected && publicProtectedOnly) || !publicOnly) { builder.AddChild(e); } } }
/* * private string GetNameWithGenericParameters (IType c) * { * if (c.TypeParameters != null && c.TypeParameters.Count > 0) * { * StringBuilder builder = new StringBuilder (c.Name); * builder.Append("<"); * for (int i = 0; i < c.TypeParameters.Count; i++) * { * builder.Append(c.TypeParameters[i].Name); * if (i + 1 < c.TypeParameters.Count) builder.Append(", "); * } * builder.Append(">"); * return builder.ToString(); * } * else * return c.Name; * }*/ public override void BuildChildNodes(ITreeBuilder builder, object dataObject) { ClassData classData = dataObject as ClassData; bool publicOnly = builder.Options ["PublicApiOnly"]; bool publicProtectedOnly = builder.Options ["PublicProtectedApiOnly"]; publicOnly |= publicProtectedOnly; // Delegates have an Invoke method, which doesn't need to be shown. if (classData.Class.ClassType == ClassType.Delegate) { return; } foreach (IType innerClass in classData.Class.InnerTypes) { if (innerClass.IsPublic || (innerClass.IsProtected && publicProtectedOnly) || !publicOnly) { builder.AddChild(new ClassData(classData.Project, innerClass)); } } foreach (IMethod method in classData.Class.Methods) { if (method.IsPublic || (method.IsProtected && publicProtectedOnly) || !publicOnly) { builder.AddChild(method); } } foreach (IProperty property in classData.Class.Properties) { if (property.IsPublic || (property.IsProtected && publicProtectedOnly) || !publicOnly) { builder.AddChild(property); } } foreach (IField field in classData.Class.Fields) { if (field.IsPublic || (field.IsProtected && publicProtectedOnly) || !publicOnly) { builder.AddChild(field); } } foreach (IEvent e in classData.Class.Events) { if (e.IsPublic || (e.IsProtected && publicProtectedOnly) || !publicOnly) { builder.AddChild(e); } } }
public override void BuildChildNodes(ITreeBuilder builder, object dataObject) { ClassData classData = dataObject as ClassData; bool publicOnly = builder.Options ["PublicApiOnly"]; bool publicProtectedOnly = builder.Options ["PublicProtectedApiOnly"]; publicOnly |= publicProtectedOnly; // Delegates have an Invoke method, which doesn't need to be shown. if (classData.Class.TypeKind == TypeKind.Delegate) { return; } builder.AddChildren(classData.Class.GetTypeMembers() .Where(innerClass => innerClass.DeclaredAccessibility == Accessibility.Public || (innerClass.DeclaredAccessibility == Accessibility.Protected && publicProtectedOnly) || !publicOnly) .Where(c => !c.IsImplicitClass) .Select(innerClass => new ClassData(classData.Project, innerClass))); builder.AddChildren(classData.Class.GetMembers().OfType <IMethodSymbol> ().Where(m => m.MethodKind != MethodKind.PropertyGet && m.MethodKind != MethodKind.PropertySet) .Where(method => method.DeclaredAccessibility == Accessibility.Public || (method.DeclaredAccessibility == Accessibility.Protected && publicProtectedOnly) || !publicOnly) .Where(m => !m.IsImplicitlyDeclared)); builder.AddChildren(classData.Class.GetMembers().OfType <IPropertySymbol> () .Where(property => property.DeclaredAccessibility == Accessibility.Public || (property.DeclaredAccessibility == Accessibility.Protected && publicProtectedOnly) || !publicOnly) .Where(m => !m.IsImplicitlyDeclared)); builder.AddChildren(classData.Class.GetMembers().OfType <IFieldSymbol> () .Where(field => field.DeclaredAccessibility == Accessibility.Public || (field.DeclaredAccessibility == Accessibility.Protected && publicProtectedOnly) || !publicOnly) .Where(m => !m.IsImplicitlyDeclared)); builder.AddChildren(classData.Class.GetMembers().OfType <IEventSymbol> () .Where(e => e.DeclaredAccessibility == Accessibility.Public || (e.DeclaredAccessibility == Accessibility.Protected && publicProtectedOnly) || !publicOnly) .Where(m => !m.IsImplicitlyDeclared)); }
internal void UpdateFrom (ClassData cd) { cls = cd.cls; project = cd.project; }
public override void ActivateItem() { ClassData cls = CurrentNode.DataItem as ClassData; IdeApp.ProjectOperations.JumpToDeclaration(cls.Class, cls.Project); }
void OnClassInformationChanged (object sender, TypeUpdateInformationEventArgs e) { // DateTime t = DateTime.Now; Dictionary<object,bool> oldStatus = new Dictionary<object,bool> (); List<string> namespacesToClean = new List<string> (); ITreeBuilder tb = Context.GetTreeBuilder (); foreach (IType cls in e.TypeUpdateInformation.Removed) { if (tb.MoveToObject (new ClassData (e.Project, cls))) { oldStatus [tb.DataItem] = tb.Expanded; ITreeNavigator np = tb.Clone (); np.MoveToParent (); oldStatus [np.DataItem] = np.Expanded; tb.Remove (true); } namespacesToClean.Add (cls.Namespace); } foreach (IType cls in e.TypeUpdateInformation.Modified) { ClassData ucd = new ClassData (e.Project, cls); if (tb.MoveToObject (ucd)) { ClassData cd = (ClassData) tb.DataItem; cd.UpdateFrom (ucd); tb.UpdateAll (); } } foreach (IType cls in e.TypeUpdateInformation.Added) { AddClass (e.Project, cls); } // Clean empty namespaces foreach (string ns in namespacesToClean) { string subns = ns; while (subns != null) { bool found = tb.MoveToObject (new ProjectNamespaceData (e.Project, subns)); if (!found) found = tb.MoveToObject (new ProjectNamespaceData (null, subns)); if (found) { while (tb.DataItem is NamespaceData && !tb.HasChildren()) tb.Remove (true); break; } int i = subns.LastIndexOf ('.'); if (i != -1) subns = subns.Substring (0,i); else subns = null; } } // Restore expand status foreach (KeyValuePair<object,bool> de in oldStatus) { if (de.Value && tb.MoveToObject (de.Key)) { tb.ExpandToNode (); tb.Expanded = true; } } }
void OnClassInformationChanged(object sender, TypeUpdateInformationEventArgs e) { // DateTime t = DateTime.Now; Dictionary <object, bool> oldStatus = new Dictionary <object, bool> (); List <string> namespacesToClean = new List <string> (); ITreeBuilder tb = Context.GetTreeBuilder(); foreach (IType cls in e.TypeUpdateInformation.Removed) { if (tb.MoveToObject(new ClassData(e.Project, cls))) { oldStatus [tb.DataItem] = tb.Expanded; ITreeNavigator np = tb.Clone(); np.MoveToParent(); oldStatus [np.DataItem] = np.Expanded; tb.Remove(true); } namespacesToClean.Add(cls.Namespace); } foreach (IType cls in e.TypeUpdateInformation.Modified) { ClassData ucd = new ClassData(e.Project, cls); if (tb.MoveToObject(ucd)) { ClassData cd = (ClassData)tb.DataItem; cd.UpdateFrom(ucd); tb.UpdateAll(); } } foreach (IType cls in e.TypeUpdateInformation.Added) { AddClass(e.Project, cls); } // Clean empty namespaces foreach (string ns in namespacesToClean) { string subns = ns; while (subns != null) { bool found = tb.MoveToObject(new ProjectNamespaceData(e.Project, subns)); if (!found) { found = tb.MoveToObject(new ProjectNamespaceData(null, subns)); } if (found) { while (tb.DataItem is NamespaceData && !tb.HasChildren()) { tb.Remove(true); } break; } int i = subns.LastIndexOf('.'); if (i != -1) { subns = subns.Substring(0, i); } else { subns = null; } } } // Restore expand status foreach (KeyValuePair <object, bool> de in oldStatus) { if (de.Value && tb.MoveToObject(de.Key)) { tb.ExpandToNode(); tb.Expanded = true; } } }
internal void UpdateFrom(ClassData cd) { cls = cd.cls; project = cd.project; }
public override void BuildChildNodes(ITreeBuilder builder, object dataObject) { ClassData classData = dataObject as ClassData; bool publicOnly = builder.Options ["PublicApiOnly"]; bool publicProtectedOnly = builder.Options ["PublicProtectedApiOnly"]; publicOnly |= publicProtectedOnly; // Delegates have an Invoke method, which doesn't need to be shown. if (classData.Class.TypeKind == TypeKind.Delegate) { return; } foreach (var innerClass in classData.Class.GetTypeMembers()) { if (innerClass.DeclaredAccessibility == Accessibility.Public || (innerClass.DeclaredAccessibility == Accessibility.Protected && publicProtectedOnly) || !publicOnly) { builder.AddChild(new ClassData(classData.Project, innerClass)); } } foreach (var method in classData.Class.GetMembers().OfType <IMethodSymbol> ().Where(m => m.MethodKind != MethodKind.PropertyGet && m.MethodKind != MethodKind.PropertySet)) { if (method.DeclaredAccessibility == Accessibility.Public || (method.DeclaredAccessibility == Accessibility.Protected && publicProtectedOnly) || !publicOnly) { builder.AddChild(method); } } foreach (var property in classData.Class.GetMembers().OfType <IPropertySymbol> ()) { if (property.DeclaredAccessibility == Accessibility.Public || (property.DeclaredAccessibility == Accessibility.Protected && publicProtectedOnly) || !publicOnly) { builder.AddChild(property); } } foreach (var field in classData.Class.GetMembers().OfType <IFieldSymbol> ()) { if (field.DeclaredAccessibility == Accessibility.Public || (field.DeclaredAccessibility == Accessibility.Protected && publicProtectedOnly) || !publicOnly) { builder.AddChild(field); } } foreach (var e in classData.Class.GetMembers().OfType <IEventSymbol> ()) { if (e.DeclaredAccessibility == Accessibility.Public || (e.DeclaredAccessibility == Accessibility.Protected && publicProtectedOnly) || !publicOnly) { builder.AddChild(e); } } }