protected void GenerateForClass( Hashtable htDefs, Hashtable htUses, ClassComponent cls )
		{
			ArrayList uses = new ArrayList();
			ArrayList defs = new ArrayList();
			TemporaryFieldComponent temp = new TemporaryFieldComponent( cls, cls.Name, cls.FullName );
			foreach( FieldComponent field in htUses.Keys )
			{
				if( (ArrayList)htUses[ field ] != null )
				{
					foreach( object obj in (ArrayList)htUses[ field ] )
					{
						if( ! uses.Contains( obj ) )
						{
							uses.Add( obj );
						}
					}
				}
				if( (ArrayList)htDefs[ field ] != null )
				{
					foreach( object obj in (ArrayList)htDefs[ field ] )
					{
						if( ! defs.Contains( obj ) )
						{
							defs.Add( obj );
						}
					}
				}
			}
			temp.Uses = uses;
			temp.Defs = defs;
			if( temp.Uses.Count > 0 || temp.Defs.Count > 0 )
                m_list.Add( temp );
		}
		protected void CreateMethodClip( TemporaryFieldComponent temp, 
			int x, int y, int w, int h )
		{
			MovieClip clip = m_panelClip.CreateSubMovieClip( x, y, w, h );
			clip.Object = temp.ClassComponent;
			// Back rectangle
			clip.Graphics.FillRectangle( m_backBrush, 0, 0, w, h);

			// Dots
			MovieClip dots = clip.CreateSubMovieClip( 0, 0, w, h/2 );
			dots.Object = temp.ClassComponent;
			for( int d = 0; d < temp.Uses.Count; d++ )
			{   // extra spacing in between disconnected chains?
				MovieClip dot = dots.CreateSubMovieClip( 0, 0, 10, 10 );
				dot.Graphics.FillEllipse( Brushes.Yellow, 0, 0, 9, 9 );
			}
			Space( 3, 3, dots.Children, dots.Width );

			// Dots 2
			MovieClip dots2 = clip.CreateSubMovieClip( 0, h/2, w, h/2 );
			dots2.Object = temp.ClassComponent;
			for( int d = 0; d < temp.Defs.Count; d++ )
			{   // extra spacing in between disconnected chains?
				MovieClip dot = dots2.CreateSubMovieClip( 0, 0, 10, 10 );
				dot.Graphics.FillEllipse( Brushes.LightBlue, 0, 0, 9, 9 );
				//Brushes.LemonChiffon
			}
			Space( 3, 3, dots2.Children, dots2.Width );

			// Text
			clip.CenteredString( temp.Name );
		}
        public int Compare(object x, object y)
        {
            TemporaryFieldComponent xx = (TemporaryFieldComponent)x;
            TemporaryFieldComponent yy = (TemporaryFieldComponent)y;
            int left  = xx.Uses.Count + xx.Defs.Count;
            int value = left.CompareTo(yy.Uses.Count + yy.Defs.Count);

            return(value * (m_direction == SortDirection.Ascending ? 1 : -1));
        }
        protected void GenerateForClass(Hashtable htDefs, Hashtable htUses, ClassComponent cls)
        {
            ArrayList uses = new ArrayList();
            ArrayList defs = new ArrayList();
            TemporaryFieldComponent temp = new TemporaryFieldComponent(cls, cls.Name, cls.FullName);

            foreach (FieldComponent field in htUses.Keys)
            {
                if ((ArrayList)htUses[field] != null)
                {
                    foreach (object obj in (ArrayList)htUses[field])
                    {
                        if (!uses.Contains(obj))
                        {
                            uses.Add(obj);
                        }
                    }
                }
                if ((ArrayList)htDefs[field] != null)
                {
                    foreach (object obj in (ArrayList)htDefs[field])
                    {
                        if (!defs.Contains(obj))
                        {
                            defs.Add(obj);
                        }
                    }
                }
            }
            temp.Uses = uses;
            temp.Defs = defs;
            if (temp.Uses.Count > 0 || temp.Defs.Count > 0)
            {
                m_list.Add(temp);
            }
        }