예제 #1
0
        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());
        }
예제 #2
0
        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);
        }
예제 #4
0
        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());
        }
예제 #5
0
        /*
         * 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("&gt;");
         *              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);
                }
            }
        }
예제 #6
0
        /*
         * private string GetNameWithGenericParameters (IType c)
         * {
         *      if (c.TypeParameters != null && c.TypeParameters.Count > 0)
         *      {
         *              StringBuilder builder = new StringBuilder (c.Name);
         *              builder.Append("&lt;");
         *              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("&gt;");
         *              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);
                }
            }
        }
예제 #7
0
        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));
        }
예제 #8
0
		internal void UpdateFrom (ClassData cd)
		{
			cls = cd.cls;
			project = cd.project;
		}
예제 #9
0
        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;
				}
			}
		}
예제 #11
0
        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;
 }
예제 #13
0
        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);
                }
            }
        }