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]

Reply via email to