Author: husted Date: Mon Apr 11 16:33:07 2005 New Revision: 160981 URL: http://svn.apache.org/viewcvs?view=rev&rev=160981 Log: OVR-5 * Skeleton implementation of the Directory page. OVR-8 * Add method to obtain generic objects, such as view helpers.
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/IController.cs struts/sandbox/trunk/overdrive/Nexus/Nexus.sln struts/sandbox/trunk/overdrive/PhoneBook/Core/App.cs struts/sandbox/trunk/overdrive/PhoneBook/Test/Test.csproj struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx.cs struts/sandbox/trunk/overdrive/PhoneBook/Web/Web.csproj Modified: struts/sandbox/trunk/overdrive/Nexus/Core/IController.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/IController.cs?view=diff&r1=160980&r2=160981 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Core/IController.cs (original) +++ struts/sandbox/trunk/overdrive/Nexus/Core/IController.cs Mon Apr 11 16:33:07 2005 @@ -25,6 +25,15 @@ /// </p></remarks> public interface IController { + + /// <summary> + /// Obtain object instance for name. + /// </summary> + /// <param name="name"></param> + /// <returns></returns> + /// + object GetObject (string name); + /// <summary> /// Obtain and execute the IRequestContext. /// </summary> Modified: struts/sandbox/trunk/overdrive/Nexus/Nexus.sln URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Nexus.sln?view=diff&r1=160980&r2=160981 ============================================================================== --- struts/sandbox/trunk/overdrive/Nexus/Nexus.sln (original) +++ struts/sandbox/trunk/overdrive/Nexus/Nexus.sln Mon Apr 11 16:33:07 2005 @@ -12,6 +12,10 @@ ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Web", "http://localhost/Nexus/Web.csproj", "{ED34316C-030F-44E2-BD09-0F55496F822A}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug @@ -30,6 +34,10 @@ {7931CACD-0E73-4DD2-A373-FF6A01CE6186}.Debug.Build.0 = Debug|.NET {7931CACD-0E73-4DD2-A373-FF6A01CE6186}.Release.ActiveCfg = Release|.NET {7931CACD-0E73-4DD2-A373-FF6A01CE6186}.Release.Build.0 = Release|.NET + {ED34316C-030F-44E2-BD09-0F55496F822A}.Debug.ActiveCfg = Debug|.NET + {ED34316C-030F-44E2-BD09-0F55496F822A}.Debug.Build.0 = Debug|.NET + {ED34316C-030F-44E2-BD09-0F55496F822A}.Release.ActiveCfg = Release|.NET + {ED34316C-030F-44E2-BD09-0F55496F822A}.Release.Build.0 = Release|.NET EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection Modified: struts/sandbox/trunk/overdrive/PhoneBook/Core/App.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Core/App.cs?view=diff&r1=160980&r2=160981 ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Core/App.cs (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Core/App.cs Mon Apr 11 16:33:07 2005 @@ -46,9 +46,19 @@ public const string EDITOR = "editor"; /// <summary> - /// Token for seledct all command. + /// Token for select all command. /// </summary> public const string SELECT_ALL = "select_all"; + + /// <summary> + /// Token for Find Helper class. + /// </summary> + public const string FIND_HELPER ="find_helper"; + + /// <summary> + /// Token for List Helper class. + /// </summary> + public const string LIST_HELPER ="list_helper"; } } Modified: struts/sandbox/trunk/overdrive/PhoneBook/Test/Test.csproj URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Test/Test.csproj?view=diff&r1=160980&r2=160981 ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Test/Test.csproj (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Test/Test.csproj Mon Apr 11 16:33:07 2005 @@ -106,9 +106,9 @@ HintPath = "..\..\iBatisNet.bin\ByteFX.MySqlClient.dll" /> <Reference - Name = "PhoneBook.Core" - AssemblyName = "PhoneBook.Core" - HintPath = "..\Core\bin\Debug\PhoneBook.Core.dll" + Name = "Core" + Project = "{3150F3E8-9A04-4FED-B16F-CEA57756E934}" + Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" /> </References> </Build> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx?view=diff&r1=160980&r2=160981 ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx Mon Apr 11 16:33:07 2005 @@ -12,13 +12,14 @@ <body> <h1>PhoneBook</h1> <form id="frm" method="post" runat="server"> - <asp:Panel ID="pnlList" Runat="server"> + <asp:Panel ID="pnlFind"> <table><tr> - <td><asp:DropDownList ID="lstSelect"></asp:DropDownList></td> - <td><asp:TextBox ID="txtInput" Runat="server"></asp:TextBox></td> - <td><asp:Button ID="btnInput" Runat="server"></asp:Button></td> - <td><asp:Button ID="btnAdd" Runat="server"></asp:Button></td> - </td></table> + <td>Sort by: </td><td><asp:DropDownList ID="lstSelect"></asp:DropDownList> + <td>Search for:<asp:TextBox ID="txtFind" Runat="server"></asp:TextBox> <asp:Button ID="cmdFind" Runat="server"></asp:Button></td> + <td><asp:Button ID="cmdAdd" Runat="server"></asp:Button></td> + </tr></table> + </asp:panel> + <asp:Panel ID="pnlList" Runat="server"> Â Â Â Â Â Â <asp:DataGrid id="repList" Runat="server" PagerStyle-Mode="NumericPages" AllowPaging="true" PageSize="10" OnPageIndexChanged="List_PageIndexChanged"> <HeaderStyle CssClass="HeaderStyle" BackColor="#CCCC99"></HeaderStyle> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx.cs?view=diff&r1=160980&r2=160981 ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx.cs (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx.cs Mon Apr 11 16:33:07 2005 @@ -1,26 +1,230 @@ using System; +using System.Collections; using System.Web.UI; +using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; +using Nexus.Core; +using PhoneBook.Core; namespace PhoneBook.Web { + /// <summary> + /// Maintain a list of employees with their telephone extension [OVR-5]. + /// </summary> public class Directory : Page { + + #region Page Properties + + private IController _Controller; + /// <summary> + /// Instance of our application controller (injected by Spring). + /// </summary> + public IController Controller + { + get { return _Controller; } + set { _Controller = value; } + } + + protected HtmlGenericControl msgTitle; + protected Panel pnlError; + protected Label lblError; + protected Panel pnlPrompt; + protected Label lblPrompt; + + protected string Page_Title + { + set + { + msgTitle.InnerText = value; + } + } + + protected IViewHelper Page_Error + { + set + { + lblError.Text = ViewHelper.HtmlErrorBuilder (value); + pnlError.Visible = true; + } + } + + protected string Page_Prompt + { + set + { + lblPrompt.Text = value; + pnlPrompt.Visible = true; + } + } + + private int List_ItemIndex + { + get + { + return (int) ViewState["ITEM_INDEX"]; + } + set + { + ViewState["ITEM_INDEX"] = value; + if (repList!=null) repList.EditItemIndex = value; + } + } + + private bool List_Insert + { + get + { + return (bool) ViewState["INSERT"]; + } + set + { + ViewState["INSERT"] = value; + cmdAdd.Visible = !value; + } + } + + #endregion + + #region Messages + + private const string msg_TITLE = "PhoneBook Application"; + private const string msg_PROMPT = "To select entries, choose a filter or search for a Name or Extension."; + private const string msg_FIND_CMD = "FIND"; + private const string msg_ADD_CMD = "ADD NEW"; + + #endregion + + #region Find + + protected Panel pnlFind; + protected IViewHelper myFindHelper; + protected DropDownList lstSelect; + protected TextBox txtFind; + protected Button cmdFind; + protected Button cmdAdd; + + // pageload events - These methods populate controls to display + + private void Find_Init () + { + this.cmdFind.Click += new EventHandler (this.Find_Submit); + this.cmdFind.Text = msg_FIND_CMD; + this.cmdAdd.Click += new EventHandler (this.Add_Submit); + this.cmdAdd.Text = msg_ADD_CMD; + } + + private void Find_Load () + { + myFindHelper.Execute(pnlFind.Controls); + if (!myFindHelper.IsNominal ) + { + Page_Error = myFindHelper; + } + else + { + Page_Title = myFindHelper.Title; + Page_Prompt = myFindHelper.Prompt; + } + pnlFind.Visible = true; + } + + // postback events - These events respond to user input (to controls displayed by pageload methods) + + protected void Find_Submit (object sender, EventArgs e) + { + myListHelper.Execute(pnlFind.Controls); + if (List_Load ()) pnlFind.Visible = false; + } + + protected void Add_Submit (object sender, EventArgs e) + { + // call business logic + myListHelper.DataInsert (repList); + // act on outcome + if (myListHelper.IsNominal) + { + List_ItemIndex = 0; + myListHelper.DataBind (repList); + Page_Prompt = myListHelper.Prompt; + List_Insert = true; + pnlList.Visible = true; + } + else Page_Error = myListHelper; + } + + #endregion + + #region panel List protected Panel pnlList; + protected IEditHelper myListHelper; protected DataGrid repList; - protected DropDownList lstSelect; - protected TextBox txtInput; - protected Button btnInput; - protected Button btnAdd; + // pageload events + + private void List_Init () + { + // Put user code to initialize the list here + } + + // Data access method + private bool List_Load () + { + bool okay = myListHelper.IsNominal; + if (okay) + { + repList.DataSource = myListHelper.List; + repList.DataBind (); + Page_Title = myListHelper.Title; + Page_Prompt = myListHelper.Prompt; + pnlList.Visible = true; + } + else + Page_Error = myListHelper; + return okay; + } + + // postback events + + protected void List_ItemCommand (object source, DataGridCommandEventArgs e) + { + bool okay = false; + switch (e.CommandName) + { + case "Page": + // Handled by List_PageIndexChanged + break; + default: + throw new NotImplementedException (); + } + + if (okay) pnlList.Visible = false; + } + protected void List_PageIndexChanged (object sender, DataGridPageChangedEventArgs e) - {} - + { + Find_Submit(null,null); // ISSUE: Refine workflow ... [WNE-64] + repList.CurrentPageIndex = e.NewPageIndex; + repList.DataBind (); + } + + #endregion + private void Page_Load(object sender, System.EventArgs e) { - // Put user code to initialize the page here + Find_Init(); + List_Init(); + bool isFirstView = (!IsPostBack); + if (isFirstView) + { + Page_Title = msg_TITLE; + Page_Prompt = msg_PROMPT; + myFindHelper = Controller.GetObject(App.FIND_HELPER) as IViewHelper; + myListHelper = Controller.GetObject(App.LIST_HELPER) as IEditHelper; + Find_Load(); + } } #region Web Form Designer generated code @@ -42,5 +246,55 @@ this.Load += new System.EventHandler(this.Page_Load); } #endregion + + #region PROPOSED INTERFACES TO IMPLEMENT + + public interface IViewHelper + { + void Execute(ControlCollection controls); + bool IsNominal { get; } + string Title {get;} + string Prompt {get;} + } + + public interface IListHelper : IViewHelper + { + IList List {get;} + } + + public interface IEditHelper : IListHelper + { + string EditText { get; set; } + string QuitText { get; set; } + string SaveText { get; set; } + + string ListCommand { get; set; } + string SaveCommand { get; set; } + string DataKeyField { get; set; } + + IList DataFields { get; set; } + IList DataLabels { get; set; } + + int BindColumns (DataGrid grid, int i); + void DataSource (DataGrid grid); + void DataInsert (DataGrid grid); + void DataBind (DataGrid grid); + void Save (string key, ControlCollection controls); + } + + public abstract class ViewHelper : IViewHelper + { + public static string HtmlErrorBuilder(IViewHelper value) + { + return null; // TODO: implementation + } + + public abstract void Execute (ControlCollection controls); + public abstract bool IsNominal { get; } + public abstract string Title { get; } + public abstract string Prompt { get; } + } + + #endregion } } Modified: struts/sandbox/trunk/overdrive/PhoneBook/Web/Web.csproj URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Web/Web.csproj?view=diff&r1=160980&r2=160981 ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Web/Web.csproj (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Web/Web.csproj Mon Apr 11 16:33:07 2005 @@ -89,6 +89,21 @@ AssemblyName = "System.Xml" HintPath = "..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll" /> + <Reference + Name = "Core" + Project = "{3150F3E8-9A04-4FED-B16F-CEA57756E934}" + Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" + /> + <Reference + Name = "Agility.Core" + AssemblyName = "Agility.Core" + HintPath = "..\..\Agility\Core\bin\Debug\Agility.Core.dll" + /> + <Reference + Name = "Nexus.Core" + AssemblyName = "Nexus.Core" + HintPath = "..\..\Nexus\Core\bin\Debug\Nexus.Core.dll" + /> </References> </Build> <Files> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]