home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 40 / IOPROG_40.ISO / SOFT / NETFrameworkSDK.exe / comsdk.cab / samples.exe / QuickStart / aspplus / samples / classbrowser / classbrowser.aspx next >
Encoding:
Text File  |  2000-06-11  |  27.2 KB  |  621 lines

  1.  
  2. <%@ Import namespace="ClassInfo" %>  
  3. <%@ Import namespace="System.Collections"  %> 
  4. <%@ Import namespace="System.Reflection" %> 
  5. <%@ Assembly name="mscorlib.dll" %>
  6. <html>
  7. <head>
  8.  
  9.     <title>NGWS Class Browser</title>  
  10.     <link rel="stylesheet" href="classstyle.css">
  11.  
  12.     <script runat="server" Language="C#">
  13.         
  14.         public  string SelectedNameSpace;    
  15.         public  string CurrentNameSpace;       
  16.  
  17.         public  ArrayList ModuleName = new ArrayList();
  18.         public  string ClassName;
  19.         
  20.         public  Type[]      CorClasses;
  21.         public  Hashtable NameSpaceHash = new Hashtable();
  22.         public  Module[]  CorRuntime;
  23.  
  24.         public  ArrayList NameSpaceList   = new ArrayList();    
  25.         public  ArrayList ClassList       = new ArrayList();
  26.         public  ArrayList InterfaceList   = new ArrayList();
  27.         public  ArrayList SubClassDetails = new ArrayList();
  28.  
  29.         public  DisplayConstructors ConstructorDetails;
  30.         public  DisplayFields       FieldDetails;
  31.         public  DisplayProperties   PropertyDetails;
  32.         public  DisplayMethods      MethodDetails;
  33.         public  DisplaySuperclasses SuperClassDetails;
  34.         public  DisplayInterfaces   InterfaceDetails;
  35.        
  36.         protected  void Page_Load(Object Sender, EventArgs e)
  37.         { 
  38.             Hashtable ConfigSettings = new Hashtable();  
  39.             ConfigSettings = (Hashtable)Context.GetConfig("ClassBrowser");
  40.             IEnumerator SettingsEnum   = ConfigSettings.Values.GetEnumerator();
  41.  
  42.             for (int i = 0; i < ConfigSettings.Count; i++)
  43.             {
  44.                 SettingsEnum.MoveNext(); 
  45.                 ModuleName.Add(SettingsEnum.Current.ToString());
  46.             } 
  47.             DisplayNamespaces();  
  48.             Namespace1.DataBind();
  49.             if(! IsPostBack)
  50.             { 
  51.                 State["CreateclassView"] = "false";
  52.                 SelectedNameSpace = "System"; 
  53.                 DisplayClassList(SelectedNameSpace);
  54.                 
  55.                 Classes.DataBind();
  56.                 Interfaces.DataBind();
  57.             }
  58.            else
  59.             { 
  60.                  DisplayClassList(State["namespace"].ToString());
  61.                  Classes.DataBind();
  62.                  Interfaces.DataBind();
  63.             }     
  64.             
  65.             DisplayBoxes.Visible = false;  
  66.         }
  67.        
  68.         private void DisplayNamespaces()
  69.         {  
  70.             for (int y = 0; y < ModuleName.Count; y++)
  71.             {
  72.                 CorRuntime = Assembly.Load(ModuleName[y].ToString()).GetModules(); 
  73.                 CorClasses = CorRuntime[0].GetTypes(); 
  74.  
  75.                  for( int x=0; x < CorClasses.Length; x++ )
  76.                  {
  77.                      if (!NameSpaceHash.ContainsKey(CorClasses[x].Namespace) && CorClasses[x].IsPublic )
  78.                      {
  79.                           NameSpaceHash.Add(CorClasses[x].Namespace,"");
  80.                 NameSpaceList.Add(CorClasses[x].Namespace); 
  81.                       }
  82.                   }
  83.               }  
  84.               NameSpaceList.Sort();
  85.           }
  86.  
  87.  
  88.         private void DisplayClassList(string CurrentNameSpace)
  89.         {    
  90.             ClassList     = new ArrayList();
  91.             InterfaceList = new ArrayList();
  92.  
  93.             for( int y=0; y < ModuleName.Count; y++ )
  94.         {
  95.                 CorRuntime = Assembly.Load(ModuleName[y].ToString()).GetModules(); 
  96.                 CorClasses = CorRuntime[0].GetTypes(); 
  97.  
  98.                 for (int x=0; x < CorClasses.Length; x++ )
  99.                 {
  100.                     if ( CorClasses[x].Namespace == CurrentNameSpace && CorClasses[x].IsPublic  )
  101.                     {
  102.                         if ( CorClasses[x].IsInterface ) 
  103.                             InterfaceList.Add(CorClasses[x].Name);  
  104.                         else
  105.                             ClassList.Add(CorClasses[x].Name);
  106.                     } 
  107.                  }
  108.              } 
  109.           
  110.             InterfaceList.Sort();
  111.             ClassList.Sort();
  112.  
  113.             Classes.Visible = true;
  114.             Classes.RepeatColumns = 3;
  115.             Classes.SelectedIndex = -1;
  116.  
  117.             Interfaces.Visible = true;
  118.             Interfaces.RepeatColumns = 4;
  119.             Interfaces.SelectedIndex = -1; 
  120.  
  121.             if (InterfaceList.Count > 0)
  122.                 IHeader.Visible = true;
  123.             else
  124.                 IHeader.Visible = false;
  125.  
  126.             if (ClassList.Count > 0)
  127.                CHeader.Visible = true;
  128.             else
  129.                CHeader.Visible = false; 
  130.             State["namespace"] = CurrentNameSpace; 
  131.             if(String.Compare(State["CreateclassView"].ToString(), "true" ,true )==0)
  132.                 CreateClassView(State["Class"].ToString());
  133.         }
  134.   
  135.   
  136.         private void ProcessNamespace(object Source, EventArgs e)
  137.         {
  138.             SetDataSourceNull();
  139.             State["CreateclassView"] = "false";
  140.             SubClasses.DataBind();
  141.             Constructors.DataBind();
  142.             Fields.DataBind();
  143.             Properties.DataBind();
  144.             Methods.DataBind();
  145.             Interface1.DataBind();
  146.             SuperClasses.DataBind();
  147.  
  148.             DisplayBoxes.Visible = false;
  149.             ClassName = null;
  150.             
  151.             SelectedNameSpace = Namespace1.SelectedItem.DataItem.ToString(); 
  152.             State["NameSpace"] = SelectedNameSpace ;
  153.             DisplayClassList(SelectedNameSpace);
  154.              
  155.             Interfaces.DataBind();
  156.             Namespace1.DataBind();
  157.             Classes.DataBind();
  158.         }
  159.  
  160.  
  161.         private void SelectClass(object Source, EventArgs e)
  162.         { 
  163.             ClassName = ((DataList)Source).SelectedItem.DataItem.ToString(); 
  164.             CreateClassView(ClassName);
  165.             SetDataSource(); 
  166.             DisableListView(); 
  167.         }
  168.  
  169.         
  170.         private void DisableListView()
  171.         {
  172.             DisplayBoxes.Visible = true; 
  173.             Interfaces.Visible = false;
  174.             Classes.Visible = false;
  175.             IHeader.Visible = false;
  176.             CHeader.Visible = false;
  177.         }
  178.  
  179.         
  180.         private void SetDataSource()
  181.         { 
  182.             if(ConstructorDetails.Count != 0 )
  183.                 Constructors.DataSource =  ConstructorDetails;
  184.             if(SubClassDetails.Count != 0 )
  185.                 SubClasses.DataSource   =  SubClassDetails;
  186.             if(FieldDetails.Count != 0 )
  187.                 Fields.DataSource       =  FieldDetails;
  188.             if(PropertyDetails.Count != 0 )
  189.                 Properties.DataSource   =  PropertyDetails;
  190.             if(MethodDetails.Count != 0 ) 
  191.                 Methods.DataSource      =  MethodDetails; 
  192.             if(InterfaceDetails.Count != 0 )
  193.                 Interface1.DataSource   =  InterfaceDetails;
  194.             if(SuperClassDetails.Count != 0 )
  195.                 SuperClasses.DataSource =  SuperClassDetails; 
  196.         }
  197.  
  198.         private void SetDataSourceNull()
  199.         { 
  200.             SubClasses.DataSource   =  null;
  201.             Constructors.DataSource =  null;
  202.             Fields.DataSource       =  null;
  203.             Properties.DataSource   =  null;
  204.             Methods.DataSource      =  null; 
  205.             Interface1.DataSource   =  null;
  206.             SuperClasses.DataSource =  null; 
  207.         }       
  208.  
  209.         private void CreateClassView(string myclass1)
  210.         {
  211.             State["CreateclassView"] = "true" ;
  212.             State["Class"] = myclass1;
  213.             Type ClassType;
  214.             string MyClassName;
  215.             Type[] ClassInterfaces;
  216.             SelectedNameSpace = State["NameSpace"].ToString();
  217.             MyClassName = myclass1;
  218.  
  219.             ClassType          =  Type.GetType(SelectedNameSpace.ToString() + "." + MyClassName);
  220.             SubClassDetails    =  new DisplaySubClasses(ClassType,ModuleName);
  221.             ConstructorDetails =  new DisplayConstructors(ClassType); 
  222.             FieldDetails       =  new DisplayFields(ClassType); 
  223.             PropertyDetails    =  new DisplayProperties(ClassType); 
  224.             MethodDetails      =  new DisplayMethods(ClassType, MyClassName);
  225.             SuperClassDetails  =  new DisplaySuperclasses(ClassType);
  226.             InterfaceDetails   =  new DisplayInterfaces(ClassType);
  227.            
  228.             Namespace1.SelectedIndex = -1 ;
  229.             SetDataSource();
  230.  
  231.             DataBind();
  232.         }
  233.  
  234.         private void ChangeClassView(Object Source, EventArgs e) 
  235.         {
  236.             DataList    SourceTable ;
  237.             Hashtable  DataBag    ; 
  238.             SourceTable = (DataList) Source; 
  239.             DataBag =  (Hashtable)SourceTable.SelectedItem.DataItem;   
  240.             State["NameSpace"]  = (String) DataBag["Namespace"];
  241.             ClassName = (String) DataBag["GetType"];
  242.             CreateClassView( ClassName);
  243.             DisableListView();    
  244.         }
  245.        
  246.         private void ModifyView(object Source, EventArgs e)
  247.         { 
  248.             DisableListView();
  249.  
  250.             if (ShowConstructors.Checked) 
  251.                 Constructors.Visible = true;
  252.             else
  253.                 Constructors.Visible = false;
  254.             
  255.  
  256.             if (ShowFields.Checked) 
  257.                 Fields.Visible = true;
  258.             else
  259.                 Fields.Visible = false;
  260.             
  261.  
  262.             if (ShowProperties.Checked) 
  263.                 Properties.Visible = true;
  264.             else
  265.                 Properties.Visible = false;
  266.             
  267.  
  268.             if (ShowMethods.Checked) 
  269.                 Methods.Visible = true;
  270.             else
  271.                 Methods.Visible = false;
  272.             
  273.  
  274.             if (ShowImplements.Checked) 
  275.                 Interface1.Visible = true;
  276.             else
  277.                 Interface1.Visible = false;
  278.              
  279.  
  280.             if (ShowSubclassed.Checked) 
  281.                 SubClasses.Visible = true;
  282.             else
  283.                 SubClasses.Visible = false;
  284.              
  285.  
  286.             if (ShowHierarchy.Checked) 
  287.                 SuperClasses.Visible = true;
  288.             else
  289.                 SuperClasses.Visible = false;  
  290.             DataBind();           
  291.         }
  292.       
  293.     </Script>
  294.  
  295. </head>    
  296. <body> 
  297.   <form runat="server">
  298.     <table class="top" width=100% height="40" cellpadding=0 cellspacing=0>
  299.       <tr>
  300.         <td bgcolor=#000666>
  301.           <b><font size=5 color=white>NGWS Class Browser</b>
  302.         </td>
  303.       </tr>
  304.     </table>
  305.     
  306.     <table width=100% height=700 cellpadding=0 cellspacing=0>
  307.       <tr>
  308.         <td width=25% bgcolor=#CCCCFF valign=top > 
  309.           <br> 
  310.             <asp:DataList runat=server id="Namespace1" onSelectedIndexChanged="ProcessNamespace"  
  311.               datasource=<%# NameSpaceList %> RepeatLayOut="flow" ItemStyle-Font-Size="9pt" HeaderStyle-Font-Size="12pt" >
  312.               <template name="headertemplate">
  313.                 <div left-margin="10">  <font size=4> <b>Namespaces</b>  </font> <br>
  314.               </template>
  315.                
  316.               <template name="itemtemplate">
  317.                 <asp:LinkButton Command="Select" runat="server" text=<%# Container.DataItem %>/>
  318.               </template>
  319.                         
  320.               <template name="selecteditemtemplate">
  321.                 <b><asp:LinkButton  runat=server text=<%# Container.DataItem %>/></b>
  322.               </template>
  323.             </asp:DataList>                         
  324.         </td>
  325.         
  326.         <td valign=top >
  327.           <table class="main" width=100% >
  328.             <tr>
  329.               <td class="main_header"> 
  330.                 <span runat=server id="CHeader" style="text-indent:8"> <b><font size=4 color=#000666>Classes in 
  331.                   <%= SelectedNameSpace %>  </b> </font></span> 
  332.               </td>
  333.             </tr>
  334.             <tr>
  335.               <td>
  336.                 <div id="DisplayBoxes" runat=server>
  337.                   <table style="margin-top:12;margin-bottom:12;margin-left:5" >
  338.                     <tr>
  339.                       <td>
  340.                         <b><font size=4 color="000666">Class <span runat=server  InnerHtml =<%# SelectedNameSpace %>/>.<span runat=server  InnerHtml =<%# State["Class"].ToString() %> /></font></b>
  341.                       </td>
  342.                     </tr>
  343.                   </table>
  344.                    
  345.                   <table width="90%" bgcolor="CCC0FF" style="margin-left:5">
  346.                     <tr width="100%">
  347.                       <td><nobr><input type=checkbox checked runat=server id="ShowFields" > Fields </nobr></td>      
  348.                       <td><nobr><input type=checkbox checked runat=server id="ShowProperties" >  Properties  </nobr></td> 
  349.                       <td><nobr><input type=checkbox checked runat=server id="ShowMethods">  Methods  </nobr></td>
  350.                       <td><input type=checkbox checked runat=server id="ShowConstructors"> Constructors </td>
  351.                     </tr>
  352.                     <tr width=100%>
  353.                       <td><nobr><input type=checkbox checked runat=server id="ShowSubclassed">  Subclasses  </nobr></td>
  354.                       <td><nobr><input  type=checkbox checked runat=server id="ShowImplements"  >  Implements   </nobr></td>
  355.                       <td><input  type=checkbox checked runat=server id="ShowHierarchy"   >  Hierarchy  </td>
  356.                       <td coldiv=2><input value="Update" type=submit runat=server onServerClick="ModifyView" ></td>
  357.                     </tr> 
  358.                   </table>
  359.                 </div>
  360.               </td>
  361.             </tr>  
  362.             <tr>
  363.               <td align="left">
  364.                 <asp:DataList runat=server id="Classes" OnSelectedIndexChanged="SelectClass"  datasource=<%# ClassList %>                                                     Gridlines=None borderstyle=none borderwidth=0 RepeatDirection="Horizontal">
  365.                   <template name="itemtemplate">
  366.                     <asp:LinkButton runat=server Command="Select"  text=<%# Container.DataItem %>  />
  367.                   </template>
  368.                 </asp:DataList>
  369.               </td>
  370.             </tr>
  371.           </table>
  372.  
  373.           <table class="main" width=100% >
  374.             <tr>
  375.               <td class="main_header" >
  376.                 <span runat=server id="IHeader" style="text-indent:8"> <b><font size=4 color=#000666>Interfaces in
  377.                    <%= SelectedNameSpace %>  </font> </b> </span>
  378.               </td>
  379.             </tr>
  380.             <tr>
  381.               <td align="left">  
  382.                 <asp:DataList runat=server id="Interfaces" OnSelectedIndexChanged="SelectClass"
  383.                   datasource=<%# InterfaceList %> Gridlines=None borderstyle=none borderwidth=0 >
  384.                   <template name="itemtemplate">
  385.                     <asp:LinkButton  Command="Select" runat=server  text=<%# Container.DataItem %> /> 
  386.                   </template> 
  387.                 </asp:DataList> 
  388.               </td>
  389.             </tr>
  390.           </table>
  391.                              
  392.           <table class="main" width=100% cellpadding=0 cellspacing=0>
  393.             <tr>
  394.               <td class="main_header" valign="top"  >
  395.                 <asp:DataList id="Constructors" runat="server" Gridlines=None borderstyle="none" borderwidth=0  width="100%">
  396.                   <template name="headertemplate" >
  397.                     <table cellspacing=0  width="93%" style="margin-left:15">
  398.                       <tr><td class="class_header"><b><font size=2> Constructors </font></b></td></tr>
  399.                       <tr bgcolor="eeeeee">
  400.                         <td width="75" > <b><u> Visibility     </u> </td>
  401.                         <td width="100"> <b><u> Constructor    </u> </td>
  402.                         <td> <b><u> Parameters     </u> </td>
  403.                       </tr>
  404.                   </template>
  405.  
  406.                   <template name="itemtemplate">  
  407.                     <tr bgcolor="eeeeee">
  408.                       <td width="75">
  409.                         <span runat=server InnerHtml=<%# ((Hashtable)Container.DataItem)["Access"] %> /> 
  410.                       </td>
  411.                       <td width="100">
  412.                         <span runat=server InnerHtml =<%# ((Hashtable)Container.DataItem)["Name"] %> />                                                                                    </td>
  413.                       <td width="1000">  
  414.                         <asp:DataList runat=server RepeatDirection="Horizontal"  RepeatLayout=Flow  showfooter=true
  415.                            datasource=<%# ((Hashtable)Container.DataItem)["Params"]%>   OnSelectedIndexChanged="ChangeClassView">
  416.                            <template name="headertemplate" > ( </template>    
  417.                            <template name="itemtemplate" runat=server>
  418.                              <asp:LinkButton text=<%# ((Hashtable)Container.DataItem)["ParamType"] %> Command="Select" runat=server />  
  419.                              <span innerhtml=<%# ((Hashtable)Container.DataItem)["ParamName"] %> runat=server />
  420.                            </template>
  421.                            <template name="separatortemplate">, </template> 
  422.                            <template name="footertemplate" > ) </template>
  423.                          </asp:DataList>    
  424.                        </td>
  425.                      </tr>
  426.                    </template>
  427.                    <template name="footertemplate">
  428.                      </table>
  429.                    </template>
  430.                  </asp:DataList>  
  431.                                 
  432.                  <p>
  433.  
  434.                  <asp:DataList id="Fields" runat="server" OnSelectedIndexChanged="ChangeClassView" 
  435.                    Gridlines=None BorderStyle="none"  width="100%" BorderWidth=0>
  436.            
  437.                    <template name="headertemplate">
  438.                      <table cellspacing=0  width="95%" style="margin-left:10">
  439.                        <tr><td class="class_header"><b><font size=2> Fields </font></b></td></tr>
  440.                        <tr bgcolor="eeeeee">
  441.                          <td width="120" ><b><u> Visibility </td>
  442.                          <td width="100"><b><u> Type       </td>
  443.                          <td ><b><u> Name       </td>
  444.                        </tr>
  445.                      </template>
  446.       
  447.                      <template name="itemtemplate">   
  448.                        <tr bgcolor="eeeeee">
  449.                          <td width="120">
  450.                            <nobr><span InnerHTML=<%#((Hashtable)Container.DataItem)["Access"]%> runat=server /></nobr>
  451.                          </td>
  452.                          <td width="100">
  453.                            <asp:LinkButton text=<%#((Hashtable)Container.DataItem)["Type"] %> Command="Select" runat=server/>   
  454.                          </td>
  455.                          <td>
  456.                            <span InnerHTML=<%#((Hashtable)Container.DataItem)["Name"] %> runat=server /> 
  457.                          </td>
  458.                       </tr>
  459.                     </template>  
  460.  
  461.                     <template name="footertemplate">
  462.                       </table>
  463.                     </template>
  464.                   </asp:DataList> 
  465.                             
  466.                   <p>
  467.  
  468.                   <asp:DataList id="Properties" runat="server" OnSelectedIndexChanged="ChangeClassView"    
  469.                        Gridlines=None BorderStyle="none" BorderWidth=0 width="100%">
  470.  
  471.                     <template name="headertemplate">
  472.                       <table cellspacing=0 width="97%" style="margin-left:5">
  473.                         <tr><td class="class_header"><b><font size=2> Properties </font></b></td></tr>
  474.                         <tr bgcolor="eeeeee">
  475.                           <td width="75"><b><u>Visibility</td>
  476.                           <td width="100"><b><u>Type</td>
  477.                           <td width="150"><b><u>Name</td>
  478.                           <td><b><u>Accessibility</td>
  479.                         </tr>
  480.                       </template>
  481.  
  482.                       <template name="itemtemplate">   
  483.                         <tr bgcolor="eeeeee">
  484.                           <td width="75"><span InnerHTML=<%#((Hashtable)Container.DataItem)["Visibility"] %> runat=server /> </td>
  485.                           <td width="100">
  486.                             <asp:LinkButton runat=server Command="Select" runat="server" text=<%#((Hashtable)Container.DataItem)["Type"] %>/>                             </td>
  487.                           <td width="150"><span InnerHTML=<%#((Hashtable)Container.DataItem)["Name"]%> runat=server/> 
  488.                             <asp:DataList runat=server OnSelectedIndexChanged="ChangeClassView"   RepeatLayout="Flow" ShowFooter=true
  489.                               RepeatDirection="Horizontal"  datasource=<%#((Hashtable)Container.DataItem)["Params"] %>>
  490.                               <template name="headertemplate" > [ </template> 
  491.                               <template name="itemtemplate">                           
  492.                                 <asp:LinkButton  Command="Select" runat=server text=<%#((Hashtable)Container.DataItem)["ParamType"] %>  />  
  493.                                 <span InnerHtml=<%#((Hashtable)Container.DataItem)["ParamName"] %> runat=server />
  494.                               </template>
  495.                               <template name="separatortemplate">, </template> 
  496.                               <template name="footertemplate">]</template> 
  497.                             </asp:DataList>
  498.                                              
  499.                           </td>
  500.                           <td><span InnerHTML=<%#((Hashtable)Container.DataItem)["Access"]%> runat=server/></td>
  501.                          </tr>
  502.                        </template>  
  503.                      <template name="footertemplate">
  504.                        </table>
  505.                      </template>
  506.                    </asp:DataList>     
  507.                  
  508.                    <p>
  509.       
  510.                   <asp:DataList id="Methods" runat="server" OnSelectedIndexChanged="ChangeClassView"
  511.                     Gridlines=None borderstyle="none" borderwidth="0" width="100%">
  512.                    
  513.                     <template name="headertemplate">
  514.                       <table cellspacing=0  >
  515.                         <tr><td class="class_header"><b><font size=2> Methods </font></b></td></tr>
  516.                         <tr bgcolor="eeeeee">
  517.                           <td width="75" ><b><u>Visibility</td>
  518.                           <td width="100"><b><u>Return </td>
  519.                           <td width="100"><b><u>Name</td>
  520.                           <td width="600"><b><u>Parameters</td>
  521.                         </tr>
  522.                       </template>
  523.                       <template name="itemtemplate">   
  524.                         <tr bgcolor="eeeeee">
  525.                           <td  width="75"><nobr><span runat=server InnerHtml=<%#((Hashtable)Container.DataItem)["Access"]%> /></nobr></td>
  526.                           <td width="100">
  527.                             <asp:LinkButton runat=server Command="Select" text=<%#((Hashtable)Container.DataItem)["Type"]%>/>
  528.                           </td> 
  529.                           <td width="100"><span runat=server InnerHtml=<%#((Hashtable)Container.DataItem)["Name"]%>/></td> 
  530.                           <td  width="900">
  531.                             <asp:DataList runat=server  OnSelectedIndexChanged="ChangeClassView" 
  532.                             datasource=<%#((Hashtable)Container.DataItem)["Params"] %>
  533.                             RepeatLayout=Flow RepeatDirection="Horizontal" showfooter=true >
  534.                               <template name="headertemplate">
  535.                                 (
  536.                               </template>
  537.                               <template name="itemtemplate">
  538.                                 <asp:LinkButton text=<%#((Hashtable)Container.DataItem)["ParamType"]%> Command="Select" runat=server />  
  539.                                 <span InnerHtml=<%#((Hashtable)Container.DataItem)["ParamName"] %>  runat=server />
  540.                               </template>
  541.                               <template name="separatortemplate"> ,</template>  
  542.                               <template name="footertemplate">
  543.                                 )
  544.                               </template>
  545.                             </asp:DataList> 
  546.                           </td>
  547.                         </tr>
  548.                       </template>  
  549.                                     
  550.                       <template name="footertemplate" >
  551.                         </table>
  552.                       </template>
  553.                     </asp:DataList>  
  554.                                 
  555.                     <p>   
  556.                      
  557.                     <asp:DataList id="SuperClasses" runat="server" RepeatLayout="Flow"
  558.                        OnSelectedIndexChanged="ChangeClassView" RepeatDirection="horizontal"  width="100%">
  559.                     
  560.                       <template name="headertemplate">
  561.                         <font size=2><b> Hierarchy </b></font> <br>
  562.                       </template>  
  563.  
  564.                       <template name="itemtemplate">   
  565.                         <asp:LinkButton runat=server Command="Select" text=<%#((Hashtable)Container.DataItem)["FullName"]%> /> 
  566.                       </template>  
  567.  
  568.                       <template name="separatortemplate">   
  569.                         <font face="Verdana" style="font-size:8pt"><nobr>---></nobr> 
  570.                       </template>
  571.                     </asp:DataList>  
  572.                                
  573.                     <p>
  574.       
  575.                     <asp:DataList id="Interface1" runat=server  RepeatDirection="horizontal"
  576.                        RepeatLayout="Flow"   OnSelectedIndexChanged="ChangeClassView"  width="100%">
  577.                                      
  578.                       <template name="headertemplate">
  579.                         <font size=2><b> Implements </b></font> <br>
  580.                       </template> 
  581.  
  582.                       <template name="itemtemplate">   
  583.                         <asp:LinkButton runat=server Command="Select"  text=<%#((Hashtable)Container.DataItem)["FullName"]%> /> 
  584.                       </template>  
  585.           
  586.                       <template name="separatortemplate">
  587.                         <font face="Verdana" style="font-size:8pt">,
  588.                       </template> 
  589.  
  590.                     </asp:DataList> 
  591.                               
  592.  
  593.                     <p>
  594.   
  595.                     <asp:DataList id="SubClasses" runat=server OnSelectedIndexChanged="ChangeClassView"
  596.                        RepeatLayout="Flow" RepeatDirection="horizontal"  width="100%">
  597.                       <template name="headertemplate">
  598.                         <font size=2> <b>Subclassed By </b></font>  <br>
  599.                       </template>  
  600.  
  601.                       <template name="itemtemplate">   
  602.                         <asp:LinkButton runat=server Command="Select"  text=<%#((Hashtable)Container.DataItem)["FullName"]%> /> 
  603.                       </template>  
  604.  
  605.                       <template name="separatortemplate">
  606.                         <font face="Verdana" style="font-size:8pt">,
  607.                       </template> 
  608.                     </asp:DataList>
  609.                                
  610.                     <p>
  611.                      
  612.                   </td>
  613.                 </tr>
  614.               </table>
  615.             </td>
  616.           </tr>
  617.         </table>
  618.     </form>
  619.   </body>
  620. </html>    
  621.