home *** CD-ROM | disk | FTP | other *** search
-
- <%@ Import namespace="ClassInfo" %>
- <%@ Import namespace="System.Collections" %>
- <%@ Import namespace="System.Reflection" %>
- <%@ Assembly name="mscorlib.dll" %>
- <html>
- <head>
-
- <title>NGWS Class Browser</title>
- <link rel="stylesheet" href="classstyle.css">
-
- <script runat="server" Language="C#">
-
- public string SelectedNameSpace;
- public string CurrentNameSpace;
-
- public ArrayList ModuleName = new ArrayList();
- public string ClassName;
-
- public Type[] CorClasses;
- public Hashtable NameSpaceHash = new Hashtable();
- public Module[] CorRuntime;
-
- public ArrayList NameSpaceList = new ArrayList();
- public ArrayList ClassList = new ArrayList();
- public ArrayList InterfaceList = new ArrayList();
- public ArrayList SubClassDetails = new ArrayList();
-
- public DisplayConstructors ConstructorDetails;
- public DisplayFields FieldDetails;
- public DisplayProperties PropertyDetails;
- public DisplayMethods MethodDetails;
- public DisplaySuperclasses SuperClassDetails;
- public DisplayInterfaces InterfaceDetails;
-
- protected void Page_Load(Object Sender, EventArgs e)
- {
- Hashtable ConfigSettings = new Hashtable();
- ConfigSettings = (Hashtable)Context.GetConfig("ClassBrowser");
- IEnumerator SettingsEnum = ConfigSettings.Values.GetEnumerator();
-
- for (int i = 0; i < ConfigSettings.Count; i++)
- {
- SettingsEnum.MoveNext();
- ModuleName.Add(SettingsEnum.Current.ToString());
- }
- DisplayNamespaces();
- Namespace1.DataBind();
- if(! IsPostBack)
- {
- State["CreateclassView"] = "false";
- SelectedNameSpace = "System";
- DisplayClassList(SelectedNameSpace);
-
- Classes.DataBind();
- Interfaces.DataBind();
- }
- else
- {
- DisplayClassList(State["namespace"].ToString());
- Classes.DataBind();
- Interfaces.DataBind();
- }
-
- DisplayBoxes.Visible = false;
- }
-
- private void DisplayNamespaces()
- {
- for (int y = 0; y < ModuleName.Count; y++)
- {
- CorRuntime = Assembly.Load(ModuleName[y].ToString()).GetModules();
- CorClasses = CorRuntime[0].GetTypes();
-
- for( int x=0; x < CorClasses.Length; x++ )
- {
- if (!NameSpaceHash.ContainsKey(CorClasses[x].Namespace) && CorClasses[x].IsPublic )
- {
- NameSpaceHash.Add(CorClasses[x].Namespace,"");
- NameSpaceList.Add(CorClasses[x].Namespace);
- }
- }
- }
- NameSpaceList.Sort();
- }
-
-
- private void DisplayClassList(string CurrentNameSpace)
- {
- ClassList = new ArrayList();
- InterfaceList = new ArrayList();
-
- for( int y=0; y < ModuleName.Count; y++ )
- {
- CorRuntime = Assembly.Load(ModuleName[y].ToString()).GetModules();
- CorClasses = CorRuntime[0].GetTypes();
-
- for (int x=0; x < CorClasses.Length; x++ )
- {
- if ( CorClasses[x].Namespace == CurrentNameSpace && CorClasses[x].IsPublic )
- {
- if ( CorClasses[x].IsInterface )
- InterfaceList.Add(CorClasses[x].Name);
- else
- ClassList.Add(CorClasses[x].Name);
- }
- }
- }
-
- InterfaceList.Sort();
- ClassList.Sort();
-
- Classes.Visible = true;
- Classes.RepeatColumns = 3;
- Classes.SelectedIndex = -1;
-
- Interfaces.Visible = true;
- Interfaces.RepeatColumns = 4;
- Interfaces.SelectedIndex = -1;
-
- if (InterfaceList.Count > 0)
- IHeader.Visible = true;
- else
- IHeader.Visible = false;
-
- if (ClassList.Count > 0)
- CHeader.Visible = true;
- else
- CHeader.Visible = false;
- State["namespace"] = CurrentNameSpace;
- if(String.Compare(State["CreateclassView"].ToString(), "true" ,true )==0)
- CreateClassView(State["Class"].ToString());
- }
-
-
- private void ProcessNamespace(object Source, EventArgs e)
- {
- SetDataSourceNull();
- State["CreateclassView"] = "false";
- SubClasses.DataBind();
- Constructors.DataBind();
- Fields.DataBind();
- Properties.DataBind();
- Methods.DataBind();
- Interface1.DataBind();
- SuperClasses.DataBind();
-
- DisplayBoxes.Visible = false;
- ClassName = null;
-
- SelectedNameSpace = Namespace1.SelectedItem.DataItem.ToString();
- State["NameSpace"] = SelectedNameSpace ;
- DisplayClassList(SelectedNameSpace);
-
- Interfaces.DataBind();
- Namespace1.DataBind();
- Classes.DataBind();
- }
-
-
- private void SelectClass(object Source, EventArgs e)
- {
- ClassName = ((DataList)Source).SelectedItem.DataItem.ToString();
- CreateClassView(ClassName);
- SetDataSource();
- DisableListView();
- }
-
-
- private void DisableListView()
- {
- DisplayBoxes.Visible = true;
- Interfaces.Visible = false;
- Classes.Visible = false;
- IHeader.Visible = false;
- CHeader.Visible = false;
- }
-
-
- private void SetDataSource()
- {
- if(ConstructorDetails.Count != 0 )
- Constructors.DataSource = ConstructorDetails;
- if(SubClassDetails.Count != 0 )
- SubClasses.DataSource = SubClassDetails;
- if(FieldDetails.Count != 0 )
- Fields.DataSource = FieldDetails;
- if(PropertyDetails.Count != 0 )
- Properties.DataSource = PropertyDetails;
- if(MethodDetails.Count != 0 )
- Methods.DataSource = MethodDetails;
- if(InterfaceDetails.Count != 0 )
- Interface1.DataSource = InterfaceDetails;
- if(SuperClassDetails.Count != 0 )
- SuperClasses.DataSource = SuperClassDetails;
- }
-
- private void SetDataSourceNull()
- {
- SubClasses.DataSource = null;
- Constructors.DataSource = null;
- Fields.DataSource = null;
- Properties.DataSource = null;
- Methods.DataSource = null;
- Interface1.DataSource = null;
- SuperClasses.DataSource = null;
- }
-
- private void CreateClassView(string myclass1)
- {
- State["CreateclassView"] = "true" ;
- State["Class"] = myclass1;
- Type ClassType;
- string MyClassName;
- Type[] ClassInterfaces;
- SelectedNameSpace = State["NameSpace"].ToString();
- MyClassName = myclass1;
-
- ClassType = Type.GetType(SelectedNameSpace.ToString() + "." + MyClassName);
- SubClassDetails = new DisplaySubClasses(ClassType,ModuleName);
- ConstructorDetails = new DisplayConstructors(ClassType);
- FieldDetails = new DisplayFields(ClassType);
- PropertyDetails = new DisplayProperties(ClassType);
- MethodDetails = new DisplayMethods(ClassType, MyClassName);
- SuperClassDetails = new DisplaySuperclasses(ClassType);
- InterfaceDetails = new DisplayInterfaces(ClassType);
-
- Namespace1.SelectedIndex = -1 ;
- SetDataSource();
-
- DataBind();
- }
-
- private void ChangeClassView(Object Source, EventArgs e)
- {
- DataList SourceTable ;
- Hashtable DataBag ;
- SourceTable = (DataList) Source;
- DataBag = (Hashtable)SourceTable.SelectedItem.DataItem;
- State["NameSpace"] = (String) DataBag["Namespace"];
- ClassName = (String) DataBag["GetType"];
- CreateClassView( ClassName);
- DisableListView();
- }
-
- private void ModifyView(object Source, EventArgs e)
- {
- DisableListView();
-
- if (ShowConstructors.Checked)
- Constructors.Visible = true;
- else
- Constructors.Visible = false;
-
-
- if (ShowFields.Checked)
- Fields.Visible = true;
- else
- Fields.Visible = false;
-
-
- if (ShowProperties.Checked)
- Properties.Visible = true;
- else
- Properties.Visible = false;
-
-
- if (ShowMethods.Checked)
- Methods.Visible = true;
- else
- Methods.Visible = false;
-
-
- if (ShowImplements.Checked)
- Interface1.Visible = true;
- else
- Interface1.Visible = false;
-
-
- if (ShowSubclassed.Checked)
- SubClasses.Visible = true;
- else
- SubClasses.Visible = false;
-
-
- if (ShowHierarchy.Checked)
- SuperClasses.Visible = true;
- else
- SuperClasses.Visible = false;
- DataBind();
- }
-
- </Script>
-
- </head>
- <body>
- <form runat="server">
- <table class="top" width=100% height="40" cellpadding=0 cellspacing=0>
- <tr>
- <td bgcolor=#000666>
- <b><font size=5 color=white>NGWS Class Browser</b>
- </td>
- </tr>
- </table>
-
- <table width=100% height=700 cellpadding=0 cellspacing=0>
- <tr>
- <td width=25% bgcolor=#CCCCFF valign=top >
- <br>
- <asp:DataList runat=server id="Namespace1" onSelectedIndexChanged="ProcessNamespace"
- datasource=<%# NameSpaceList %> RepeatLayOut="flow" ItemStyle-Font-Size="9pt" HeaderStyle-Font-Size="12pt" >
- <template name="headertemplate">
- <div left-margin="10"> <font size=4> <b>Namespaces</b> </font> <br>
- </template>
-
- <template name="itemtemplate">
- <asp:LinkButton Command="Select" runat="server" text=<%# Container.DataItem %>/>
- </template>
-
- <template name="selecteditemtemplate">
- <b><asp:LinkButton runat=server text=<%# Container.DataItem %>/></b>
- </template>
- </asp:DataList>
- </td>
-
- <td valign=top >
- <table class="main" width=100% >
- <tr>
- <td class="main_header">
- <span runat=server id="CHeader" style="text-indent:8"> <b><font size=4 color=#000666>Classes in
- <%= SelectedNameSpace %> </b> </font></span>
- </td>
- </tr>
- <tr>
- <td>
- <div id="DisplayBoxes" runat=server>
- <table style="margin-top:12;margin-bottom:12;margin-left:5" >
- <tr>
- <td>
- <b><font size=4 color="000666">Class <span runat=server InnerHtml =<%# SelectedNameSpace %>/>.<span runat=server InnerHtml =<%# State["Class"].ToString() %> /></font></b>
- </td>
- </tr>
- </table>
-
- <table width="90%" bgcolor="CCC0FF" style="margin-left:5">
- <tr width="100%">
- <td><nobr><input type=checkbox checked runat=server id="ShowFields" > Fields </nobr></td>
- <td><nobr><input type=checkbox checked runat=server id="ShowProperties" > Properties </nobr></td>
- <td><nobr><input type=checkbox checked runat=server id="ShowMethods"> Methods </nobr></td>
- <td><input type=checkbox checked runat=server id="ShowConstructors"> Constructors </td>
- </tr>
- <tr width=100%>
- <td><nobr><input type=checkbox checked runat=server id="ShowSubclassed"> Subclasses </nobr></td>
- <td><nobr><input type=checkbox checked runat=server id="ShowImplements" > Implements </nobr></td>
- <td><input type=checkbox checked runat=server id="ShowHierarchy" > Hierarchy </td>
- <td coldiv=2><input value="Update" type=submit runat=server onServerClick="ModifyView" ></td>
- </tr>
- </table>
- </div>
- </td>
- </tr>
- <tr>
- <td align="left">
- <asp:DataList runat=server id="Classes" OnSelectedIndexChanged="SelectClass" datasource=<%# ClassList %> Gridlines=None borderstyle=none borderwidth=0 RepeatDirection="Horizontal">
- <template name="itemtemplate">
- <asp:LinkButton runat=server Command="Select" text=<%# Container.DataItem %> />
- </template>
- </asp:DataList>
- </td>
- </tr>
- </table>
-
- <table class="main" width=100% >
- <tr>
- <td class="main_header" >
- <span runat=server id="IHeader" style="text-indent:8"> <b><font size=4 color=#000666>Interfaces in
- <%= SelectedNameSpace %> </font> </b> </span>
- </td>
- </tr>
- <tr>
- <td align="left">
- <asp:DataList runat=server id="Interfaces" OnSelectedIndexChanged="SelectClass"
- datasource=<%# InterfaceList %> Gridlines=None borderstyle=none borderwidth=0 >
- <template name="itemtemplate">
- <asp:LinkButton Command="Select" runat=server text=<%# Container.DataItem %> />
- </template>
- </asp:DataList>
- </td>
- </tr>
- </table>
-
- <table class="main" width=100% cellpadding=0 cellspacing=0>
- <tr>
- <td class="main_header" valign="top" >
- <asp:DataList id="Constructors" runat="server" Gridlines=None borderstyle="none" borderwidth=0 width="100%">
- <template name="headertemplate" >
- <table cellspacing=0 width="93%" style="margin-left:15">
- <tr><td class="class_header"><b><font size=2> Constructors </font></b></td></tr>
- <tr bgcolor="eeeeee">
- <td width="75" > <b><u> Visibility </u> </td>
- <td width="100"> <b><u> Constructor </u> </td>
- <td> <b><u> Parameters </u> </td>
- </tr>
- </template>
-
- <template name="itemtemplate">
- <tr bgcolor="eeeeee">
- <td width="75">
- <span runat=server InnerHtml=<%# ((Hashtable)Container.DataItem)["Access"] %> />
- </td>
- <td width="100">
- <span runat=server InnerHtml =<%# ((Hashtable)Container.DataItem)["Name"] %> /> </td>
- <td width="1000">
- <asp:DataList runat=server RepeatDirection="Horizontal" RepeatLayout=Flow showfooter=true
- datasource=<%# ((Hashtable)Container.DataItem)["Params"]%> OnSelectedIndexChanged="ChangeClassView">
- <template name="headertemplate" > ( </template>
- <template name="itemtemplate" runat=server>
- <asp:LinkButton text=<%# ((Hashtable)Container.DataItem)["ParamType"] %> Command="Select" runat=server />
- <span innerhtml=<%# ((Hashtable)Container.DataItem)["ParamName"] %> runat=server />
- </template>
- <template name="separatortemplate">, </template>
- <template name="footertemplate" > ) </template>
- </asp:DataList>
- </td>
- </tr>
- </template>
- <template name="footertemplate">
- </table>
- </template>
- </asp:DataList>
-
- <p>
-
- <asp:DataList id="Fields" runat="server" OnSelectedIndexChanged="ChangeClassView"
- Gridlines=None BorderStyle="none" width="100%" BorderWidth=0>
-
- <template name="headertemplate">
- <table cellspacing=0 width="95%" style="margin-left:10">
- <tr><td class="class_header"><b><font size=2> Fields </font></b></td></tr>
- <tr bgcolor="eeeeee">
- <td width="120" ><b><u> Visibility </td>
- <td width="100"><b><u> Type </td>
- <td ><b><u> Name </td>
- </tr>
- </template>
-
- <template name="itemtemplate">
- <tr bgcolor="eeeeee">
- <td width="120">
- <nobr><span InnerHTML=<%#((Hashtable)Container.DataItem)["Access"]%> runat=server /></nobr>
- </td>
- <td width="100">
- <asp:LinkButton text=<%#((Hashtable)Container.DataItem)["Type"] %> Command="Select" runat=server/>
- </td>
- <td>
- <span InnerHTML=<%#((Hashtable)Container.DataItem)["Name"] %> runat=server />
- </td>
- </tr>
- </template>
-
- <template name="footertemplate">
- </table>
- </template>
- </asp:DataList>
-
- <p>
-
- <asp:DataList id="Properties" runat="server" OnSelectedIndexChanged="ChangeClassView"
- Gridlines=None BorderStyle="none" BorderWidth=0 width="100%">
-
- <template name="headertemplate">
- <table cellspacing=0 width="97%" style="margin-left:5">
- <tr><td class="class_header"><b><font size=2> Properties </font></b></td></tr>
- <tr bgcolor="eeeeee">
- <td width="75"><b><u>Visibility</td>
- <td width="100"><b><u>Type</td>
- <td width="150"><b><u>Name</td>
- <td><b><u>Accessibility</td>
- </tr>
- </template>
-
- <template name="itemtemplate">
- <tr bgcolor="eeeeee">
- <td width="75"><span InnerHTML=<%#((Hashtable)Container.DataItem)["Visibility"] %> runat=server /> </td>
- <td width="100">
- <asp:LinkButton runat=server Command="Select" runat="server" text=<%#((Hashtable)Container.DataItem)["Type"] %>/> </td>
- <td width="150"><span InnerHTML=<%#((Hashtable)Container.DataItem)["Name"]%> runat=server/>
- <asp:DataList runat=server OnSelectedIndexChanged="ChangeClassView" RepeatLayout="Flow" ShowFooter=true
- RepeatDirection="Horizontal" datasource=<%#((Hashtable)Container.DataItem)["Params"] %>>
- <template name="headertemplate" > [ </template>
- <template name="itemtemplate">
- <asp:LinkButton Command="Select" runat=server text=<%#((Hashtable)Container.DataItem)["ParamType"] %> />
- <span InnerHtml=<%#((Hashtable)Container.DataItem)["ParamName"] %> runat=server />
- </template>
- <template name="separatortemplate">, </template>
- <template name="footertemplate">]</template>
- </asp:DataList>
-
- </td>
- <td><span InnerHTML=<%#((Hashtable)Container.DataItem)["Access"]%> runat=server/></td>
- </tr>
- </template>
- <template name="footertemplate">
- </table>
- </template>
- </asp:DataList>
-
- <p>
-
- <asp:DataList id="Methods" runat="server" OnSelectedIndexChanged="ChangeClassView"
- Gridlines=None borderstyle="none" borderwidth="0" width="100%">
-
- <template name="headertemplate">
- <table cellspacing=0 >
- <tr><td class="class_header"><b><font size=2> Methods </font></b></td></tr>
- <tr bgcolor="eeeeee">
- <td width="75" ><b><u>Visibility</td>
- <td width="100"><b><u>Return </td>
- <td width="100"><b><u>Name</td>
- <td width="600"><b><u>Parameters</td>
- </tr>
- </template>
- <template name="itemtemplate">
- <tr bgcolor="eeeeee">
- <td width="75"><nobr><span runat=server InnerHtml=<%#((Hashtable)Container.DataItem)["Access"]%> /></nobr></td>
- <td width="100">
- <asp:LinkButton runat=server Command="Select" text=<%#((Hashtable)Container.DataItem)["Type"]%>/>
- </td>
- <td width="100"><span runat=server InnerHtml=<%#((Hashtable)Container.DataItem)["Name"]%>/></td>
- <td width="900">
- <asp:DataList runat=server OnSelectedIndexChanged="ChangeClassView"
- datasource=<%#((Hashtable)Container.DataItem)["Params"] %>
- RepeatLayout=Flow RepeatDirection="Horizontal" showfooter=true >
- <template name="headertemplate">
- (
- </template>
- <template name="itemtemplate">
- <asp:LinkButton text=<%#((Hashtable)Container.DataItem)["ParamType"]%> Command="Select" runat=server />
- <span InnerHtml=<%#((Hashtable)Container.DataItem)["ParamName"] %> runat=server />
- </template>
- <template name="separatortemplate"> ,</template>
- <template name="footertemplate">
- )
- </template>
- </asp:DataList>
- </td>
- </tr>
- </template>
-
- <template name="footertemplate" >
- </table>
- </template>
- </asp:DataList>
-
- <p>
-
- <asp:DataList id="SuperClasses" runat="server" RepeatLayout="Flow"
- OnSelectedIndexChanged="ChangeClassView" RepeatDirection="horizontal" width="100%">
-
- <template name="headertemplate">
- <font size=2><b> Hierarchy </b></font> <br>
- </template>
-
- <template name="itemtemplate">
- <asp:LinkButton runat=server Command="Select" text=<%#((Hashtable)Container.DataItem)["FullName"]%> />
- </template>
-
- <template name="separatortemplate">
- <font face="Verdana" style="font-size:8pt"><nobr>---></nobr>
- </template>
- </asp:DataList>
-
- <p>
-
- <asp:DataList id="Interface1" runat=server RepeatDirection="horizontal"
- RepeatLayout="Flow" OnSelectedIndexChanged="ChangeClassView" width="100%">
-
- <template name="headertemplate">
- <font size=2><b> Implements </b></font> <br>
- </template>
-
- <template name="itemtemplate">
- <asp:LinkButton runat=server Command="Select" text=<%#((Hashtable)Container.DataItem)["FullName"]%> />
- </template>
-
- <template name="separatortemplate">
- <font face="Verdana" style="font-size:8pt">,
- </template>
-
- </asp:DataList>
-
-
- <p>
-
- <asp:DataList id="SubClasses" runat=server OnSelectedIndexChanged="ChangeClassView"
- RepeatLayout="Flow" RepeatDirection="horizontal" width="100%">
- <template name="headertemplate">
- <font size=2> <b>Subclassed By </b></font> <br>
- </template>
-
- <template name="itemtemplate">
- <asp:LinkButton runat=server Command="Select" text=<%#((Hashtable)Container.DataItem)["FullName"]%> />
- </template>
-
- <template name="separatortemplate">
- <font face="Verdana" style="font-size:8pt">,
- </template>
- </asp:DataList>
-
- <p>
-
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </form>
- </body>
- </html>
-