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]