You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by hu...@apache.org on 2006/11/29 17:55:41 UTC

svn commit: r480626 - in /struts/sandbox/trunk/overdrive/Nexus: Core/Helpers/IViewHelper.cs Core/Nexus.Core.xml Test/Test.csproj Test/bin/Debug/PostBuildEvent.bat Web/GridControl.ascx.cs Web/ViewControl.ascx.cs

Author: husted
Date: Wed Nov 29 08:55:40 2006
New Revision: 480626

URL: http://svn.apache.org/viewvc?view=rev&rev=480626
Log:
XML Documentation updates. 

Modified:
    struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/IViewHelper.cs
    struts/sandbox/trunk/overdrive/Nexus/Core/Nexus.Core.xml
    struts/sandbox/trunk/overdrive/Nexus/Test/Test.csproj
    struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/PostBuildEvent.bat
    struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs
    struts/sandbox/trunk/overdrive/Nexus/Web/ViewControl.ascx.cs

Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/IViewHelper.cs
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/IViewHelper.cs?view=diff&rev=480626&r1=480625&r2=480626
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/IViewHelper.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/IViewHelper.cs Wed Nov 29 08:55:40 2006
@@ -21,10 +21,12 @@
 namespace Nexus.Core.Helpers
 {
 	/// <summary>
-	/// Provide a facade for use by a code-behind to simplify access to the 
-	/// IRequestContext and IRequestCommand. 
+	/// Provide methods for running a business command and handling the result.
 	/// </summary>
 	/// <remarks><p>
+	/// IViewHelper is a facade for use by a code-behind to simplify access 
+	/// to the IRequestContext and IRequestCommand. 
+	/// </p><p>
 	/// The helper may also work with the catalog to act as a 
 	/// "front controller" by ensuring routine tasks are carried out.
 	/// These tasks can include input validation, data conversion, 

Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Nexus.Core.xml
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/Nexus/Core/Nexus.Core.xml?view=diff&rev=480626&r1=480625&r2=480626
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Nexus.Core.xml (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Nexus.Core.xml Wed Nov 29 08:55:40 2006
@@ -44,10 +44,12 @@
         </member>
         <member name="T:Nexus.Core.Helpers.IViewHelper">
             <summary>
-            Provide a facade for use by a code-behind to simplify access to the 
-            IRequestContext and IRequestCommand. 
+            Provide methods for running a business command and handling the result.
             </summary>
             <remarks><p>
+            IViewHelper is a facade for use by a code-behind to simplify access 
+            to the IRequestContext and IRequestCommand. 
+            </p><p>
             The helper may also work with the catalog to act as a 
             "front controller" by ensuring routine tasks are carried out.
             These tasks can include input validation, data conversion, 

Modified: struts/sandbox/trunk/overdrive/Nexus/Test/Test.csproj
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/Nexus/Test/Test.csproj?view=diff&rev=480626&r1=480625&r2=480626
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Test/Test.csproj (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Test/Test.csproj Wed Nov 29 08:55:40 2006
@@ -110,6 +110,11 @@
                     AssemblyName = "Agility.Core"
                     HintPath = "..\..\..\local-cache\Agility\Agility.Core.dll"
                 />
+                <Reference
+                    Name = "Spring.Web"
+                    AssemblyName = "Spring.Web"
+                    HintPath = "..\..\local-cache\SpringNet\Spring.Web.dll"
+                />
             </References>
         </Build>
         <Files>

Modified: struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/PostBuildEvent.bat
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/PostBuildEvent.bat?view=diff&rev=480626&r1=480625&r2=480626
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/PostBuildEvent.bat (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Test/bin/Debug/PostBuildEvent.bat Wed Nov 29 08:55:40 2006
@@ -1,5 +1,5 @@
 @echo off
-C:\projects\Apache\struts-overdrive\sandbox\overdrive\Nexus\postbuild.bat C:\projects\Apache\struts-overdrive\sandbox\overdrive\Nexus\Test\bin\Debug\  Nexus.Test  Nexus  C:\projects\Apache\struts-overdrive\sandbox\overdrive\Nexus\
+C:\projects\Nexus\struts-overdrive\sandbox\overdrive\Nexus\postbuild.bat C:\projects\Nexus\struts-overdrive\sandbox\overdrive\Nexus\Test\bin\Debug\  Nexus.Test  Nexus  C:\projects\Nexus\struts-overdrive\sandbox\overdrive\Nexus\
 if errorlevel 1 goto CSharpReportError
 goto CSharpEnd
 :CSharpReportError

Modified: struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs?view=diff&rev=480626&r1=480625&r2=480626
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs Wed Nov 29 08:55:40 2006
@@ -8,19 +8,22 @@
 
 namespace Nexus.Web
 {
+	/// <summary>
+	/// List, edit, and select items using a DataGrid and IViewHelper commands. 
+	/// </summary>
 	public class GridControl : ViewControl
 	{
 		#region Runtime state Properties
 
 		/// <summary>
-		/// Attribute token for List_Criteria.
+		/// Provide an attribute token for List_Criteria.
 		/// </summary>
 		private string LIST_CRITERIA_KEY = "list_Criteria";
 
 		/// <summary>
 		/// Set the given criteria to the list_Critieria (creating a new one if null), and, 
-		/// If AllowCustomPage is set, 
-		/// calcuate new Limit and Offset, based on pageIndex, and set to criteria.
+		/// if AllowCustomPage is set, 
+		/// calculate new Limit and Offset, based on pageIndex, and set to criteria.
 		/// </summary>
 		/// <remarks><p>
 		/// This form is provided to be called by list_Criteria_Init. 
@@ -49,24 +52,14 @@
 			return list_Criteria_NewPageIndex(criteria, pageIndex);
 		}
 
-		/// <summary>
-		/// If AllowCustomPage is set, 
-		/// calculate new List and Offset, using the list_Context.
-		/// </summary>
-		/// <remarks><p>
-		/// The other form is provided to be called by list_Criteria_Init. 
-		/// This form is provided to be called by other methods.
-		/// </p></remarks>
-		/// <param name="pageIndex">The new page index</param>
-		/// <returns>The updated list_Criteria instance</returns>
 		protected IDictionary list_Criteria_NewPageIndex(int pageIndex)
 		{
 			IDictionary criteria = list_Criteria;
-			return list_Criteria_NewPageIndex(criteria, pageIndex, AllowCustomPaging);
+			return list_Criteria_NewPageIndex(criteria, pageIndex);
 		}
 
 		/// <summary>
-		/// Values to use with a query statement.
+		/// Provide values to use with a query statement, persisted across requests.
 		/// </summary>
 		protected IDictionary list_Criteria
 		{
@@ -92,7 +85,7 @@
 		}
 
 		/// <summary>
-		/// Attribute token for List_ItemIndex
+		/// Provide attribute token for List_ItemIndex.
 		/// </summary>
 		private const string LIST_ITEM_INDEX = "list_ItemIndex";
 
@@ -115,12 +108,12 @@
 		}
 
 		/// <summary>
-		/// Attribute token for List_ItemKey.
+		/// Provide attribute token for List_ItemKey.
 		/// </summary>
 		private const string LIST_ITEM_KEY = "list_ItemKey";
 
 		/// <summary>
-		/// The data key for the selected item.
+		/// Provide data key for the selected item.
 		/// </summary>
 		public virtual string list_ItemKey
 		{
@@ -129,12 +122,12 @@
 		}
 
 		/// <summary>
-		/// Attribute token for List_Insert.
+		/// Provide attribute token for List_Insert.
 		/// </summary>
 		private const string LIST_INSERT_KEY = "list_Insert";
 
 		/// <summary>
-		/// Insert mode - are we adding or modifying?
+		/// Determine insert mode - are we adding or modifying?
 		/// </summary>
 		public virtual bool list_Insert
 		{
@@ -147,8 +140,14 @@
 			set { ViewState[LIST_INSERT_KEY] = value; }
 		}
 
+		/// <summary>
+		/// Store whether command uses critiera.
+		/// </summary>
 		private bool _HasCriteria = true;
 
+		/// <summary>
+		/// Track whether a criteria is used.
+		/// </summary>
 		public virtual bool HasCriteria
 		{
 			get { return _HasCriteria; }
@@ -159,24 +158,42 @@
 
 		#region Command properties to set
 
+		/// <summary>
+		/// Store the Find Command.
+		/// </summary>
 		private string _FindCommand;
 
+		/// <summary>
+		/// Provide the Find Command to prepare a new search.
+		/// </summary>
 		public virtual string FindCommand
 		{
 			get { return _FindCommand; }
 			set { _FindCommand = value; }
 		}
 
+		/// <summary>
+		/// Store the List Command.
+		/// </summary>
 		private string _ListCommand;
 
+		/// <summary>
+		/// Provide the List Command to filter items and populate the DataGrid.
+		/// </summary>
 		public virtual string ListCommand
 		{
 			get { return _ListCommand; }
 			set { _ListCommand = value; }
 		}
 
+		/// <summary>
+		/// Store the Save Command.
+		/// </summary>
 		private string _SaveCommand;
 
+		/// <summary>
+		/// Provide the Save Command to retain changes to an item.
+		/// </summary>
 		public virtual string SaveCommand
 		{
 			get { return _SaveCommand; }
@@ -187,16 +204,32 @@
 
 		#region Column properties to set 
 
+		/// <summary>
+		/// Store the key field.
+		/// </summary>
 		private string _DataKeyField;
 
+		/// <summary>
+		/// Provide the key field for the DataGrid.
+		/// </summary>
 		public virtual string DataKeyField
 		{
 			get { return _DataKeyField; }
 			set { _DataKeyField = value; }
 		}
 
+		/// <summary>
+		/// Store the list of GridConfig items.
+		/// </summary>
 		private IList _Configs;
 
+		/// <summary>
+		/// Provide a list of the GridConfig items.
+		/// </summary>
+		/// <remarks><p>
+		/// GridConfig is a local class that describes 
+		/// the fields needed to program a DataGrid column.
+		/// </p></remarks>
 		public virtual IList Configs
 		{
 			get { return _Configs; }
@@ -207,79 +240,163 @@
 
 		#region Column properties with defaults
 
+		/// <summary>
+		/// Provide default text for the EDIT control.
+		/// </summary>
 		public const string msg_EDIT_TEXT = "EDIT";
+		
+		/// <summary>
+		/// Provide default text for the CANCEL control.
+		/// </summary>
 		public const string msg_QUIT_TEXT = "CANCEL";
+
+		/// <summary>
+		/// Provide default text for the SAVE control.
+		/// </summary>
 		public const string msg_SAVE_TEXT = "SAVE";
-		public const string msg_ITEM_TEXT = "#";
-		public const string msg_ITEM_COMMAND = "Item";
 
+		/// <summary>
+		/// Provide default text for the ITEM control.
+		/// </summary>		
+		public const string msg_ITEM_TEXT = "#";
+		
+		/// <summary>
+		/// Store the text for the EDIT control.
+		/// </summary>
 		private string _EditText = msg_EDIT_TEXT;
 
+		/// <summary>
+		/// Provide the text for the EDIT control.
+		/// </summary>
 		public virtual string EditText
 		{
 			get { return _EditText; }
 			set { _EditText = value; }
 		}
 
+		/// <summary>
+		/// Store the text for the QUIT control.
+		/// </summary>
 		private string _QuitText = msg_QUIT_TEXT;
 
+		/// <summary>
+		/// Provide the text for the QUIT control.
+		/// </summary>
 		public virtual string QuitText
 		{
 			get { return _QuitText; }
 			set { _QuitText = value; }
 		}
 
+		/// <summary>
+		/// Store the text for the SAVE control.
+		/// </summary>
 		private string _SaveText = msg_SAVE_TEXT;
 
+		/// <summary>
+		/// Provide the text for the SAVE control.
+		/// </summary>
 		public virtual string SaveText
 		{
 			get { return _SaveText; }
 			set { _SaveText = value; }
 		}
 
+		/// <summary>
+		/// Store the text for the ITEM control.
+		/// </summary>
 		private string _ItemText = msg_ITEM_TEXT;
 
+		/// <summary>
+		/// Provide the text for the ITEM control.
+		/// </summary>
 		public virtual string ItemText
 		{
 			get { return _ItemText; }
 			set { _ItemText = value; }
 		}
 
+		/// <summary>
+		/// Provide default token to signal an item select command.
+		/// </summary>		
+		public const string msg_ITEM_COMMAND = "Item";
+
+		/// <summary>
+		/// Store the token to signal an item select command. 
+		/// </summary>
 		private string _ItemCommand = msg_ITEM_COMMAND;
 
+		/// <summary>
+		/// Provide the token to signal an item select command. 
+		/// </summary>
 		public virtual string ItemCommandName
 		{
 			get { return _ItemCommand; }
 			set { _ItemCommand = value; }
 		}
 
+		/// <summary>
+		/// Store whether an item column is presented [false].
+		/// </summary>
 		private bool _HasItemColumn = false;
 
+		/// <summary>
+		/// Provide whether an item column is presented [false].
+		/// </summary>
 		public virtual bool HasItemColumn
 		{
 			get { return _HasItemColumn; }
 			set { _HasItemColumn = value; }
 		}
 
+		/// <summary>
+		/// Store whether an edit column is presented [false].
+		/// </summary>
 		private bool _HasEditColumn = false;
 
+		/// <summary>
+		/// Provide whether an edit column is presented [false].
+		/// </summary>
 		public virtual bool HasEditColumn
 		{
 			get { return _HasEditColumn; }
 			set { _HasEditColumn = value; }
 		}
 
+		/// <summary>
+		/// Store whether dataset is being accessed page by page. 
+		/// </summary>
 		private bool _AllowCustomPaging = true;
 
+		/// <summary>
+		/// Provide whether dataset is being accessed page by page. 
+		/// </summary>
+		/// <remarks><p>
+		/// Custom paging refers to whether the entire dataset is retrieved all at once
+		/// or whether the items to fill the current page are retrieved.
+		/// A DataGrid may be configured to display pages with AllowCusteomPaging set to false, 
+		/// but the underlying query should retrieve the entire dataset up front.
+		/// Whether page numbers are used is set in the DataGrid markup, not here.
+		/// </p></remarks>
 		public virtual bool AllowCustomPaging
 		{
 			get { return _AllowCustomPaging; }
 			set { _AllowCustomPaging = value; }
 		}
 
+		/// <summary>
+		/// Store the ASP.NET default for a DataGrid page size.
+		/// </summary>
 		const int DEFAULT_DATAGRID_PAGESIZE = 10;
+		
+		/// <summary>
+		/// Store the DataGrid default page size.
+		/// </summary>
 		private int _PageSize = DEFAULT_DATAGRID_PAGESIZE;
 
+		/// <summary>
+		/// Provide the DataGrid default page size.
+		/// </summary>
 		public virtual int PageSize
 		{
 			get { return _PageSize; }
@@ -290,6 +407,11 @@
 
 		#region Binding methods 
 
+		/// <summary>
+		/// Set the Helper's outcome to the DataGrid datasource, 
+		/// and update the virtual item count if AllowCustomPaging.
+		/// </summary>
+		/// <param name="helper"></param>
 		protected virtual void DataSource(IViewHelper helper)
 		{
 			IList list = helper.Outcome;
@@ -301,34 +423,56 @@
 			}
 		}
 
+		/// <summary>
+		/// Bind the current datasource to the base control and the DataGrid control.
+		/// </summary>
 		public override void DataBind()
 		{
 			base.DataBind();
 			Grid.DataBind();
 		}
 
-		protected virtual int BindItemColumn(int i)
+		/// <summary>
+		/// Configure a control column to select a DataGrid item (or row).
+		/// </summary>
+		/// <param name="pos">The column position</param>
+		/// <returns>The next column position</returns>
+		protected virtual int BindItemColumn(int pos)
 		{
 			ButtonColumn column = new ButtonColumn();
 			column.ButtonType = ButtonColumnType.PushButton;
 			column.Text = ItemText;
 			column.CommandName = ItemCommandName;
-			Grid.Columns.AddAt(i, column);
-			return ++i;
+			Grid.Columns.AddAt(pos, column);
+			return ++pos;
 		}
 
-		protected virtual int BindEditColumn(int i)
+		/// <summary>
+		/// Configure a control column to edit a DataGrid item (or row).
+		/// </summary>
+		/// <param name="pos">The column position</param>
+		/// <returns>The next column position</returns>
+		protected virtual int BindEditColumn(int pos)
 		{
 			EditCommandColumn column = new EditCommandColumn();
 			column.ButtonType = ButtonColumnType.PushButton;
 			column.EditText = EditText;
 			column.CancelText = QuitText;
 			column.UpdateText = SaveText;
-			Grid.Columns.AddAt(i, column);
-			return ++i;
+			Grid.Columns.AddAt(pos, column);
+			return ++pos;
 		}
 
-		protected virtual int BindColumns(int i)
+		/// <summary>
+		/// Configure the list of custom columns, starting from a given column position.
+		/// </summary>
+		/// <remarks><p>
+		/// If the edit or item columns have already been configured, 
+		/// then starting position may be 1 or 2.
+		/// </p></remarks>
+		/// <param name="pos">Starting column position</param>
+		/// <returns>Next column position</returns>
+		protected virtual int BindColumns(int pos)
 		{
 			DataGrid grid = Grid;
 			grid.DataKeyField = DataKeyField;
@@ -339,13 +483,20 @@
 				IGridConfig config = configs[c] as IGridConfig;
 				if (config.HasTemplate)
 				{
-					i = BindTemplateColumn(i, config);
+					pos = BindTemplateColumn(pos, config);
 				}
-				else i = BindColumn(i, config);
+				else pos = BindColumn(pos, config);
 			}
-			return i;
+			return pos;
 		}
 
+		/// <summary>
+		/// Configure a DataGrid column at the given position, 
+		/// using the IGridConfig settings.
+		/// </summary>
+		/// <param name="pos">Position to insert column</param>
+		/// <param name="config">Column settings</param>
+		/// <returns>The next column pos</returns>
 		protected int BindColumn(int pos, IGridConfig config)
 		{
 			BoundColumn column = new BoundColumn();
@@ -357,6 +508,13 @@
 			return pos + 1;
 		}
 
+		/// <summary>
+		/// Configure a template column at the given position, 
+		/// using the IGtridConfig settings.
+		/// </summary>
+		/// <param name="pos">Position to insert column</param>
+		/// <param name="config">Column settings</param>
+		/// <returns>The next column pos</returns>
 		protected int BindTemplateColumn(int pos, IGridConfig config)
 		{
 			TemplateColumn column = new TemplateColumn();
@@ -369,15 +527,25 @@
 			return pos + 1;
 		}
 
+		/// <summary>
+		/// Store whether the DataGrid has bee configured.
+		/// </summary>
 		private bool bind = true;
 
+		/// <summary>
+		/// Initialize the DataGrid with any custom columns.
+		/// </summary>
+		/// <remarks>
+		/// This method is meant to be overriden by subclasses 
+		/// to program a custom set of DataGrid columns.
+		/// </remarks>
 		protected virtual void InitGrid()
 		{
 			bind = true;
 		}
 
 		/// <summary>
-		/// Obtain item count from Helper.
+		/// Obtain the item count from Helper.
 		/// </summary>
 		/// <param name="helper">The helper to examine</param>
 		/// <returns>Total count of items for all pages</returns>
@@ -387,6 +555,10 @@
 			return Convert.ToInt32(helper.Criteria[ITEM_COUNT]);
 		}
 
+		/// <summary>
+		/// Configure the DataGrid for initial display.
+		/// </summary>
+		/// <param name="helper">The Helper with an outcome to bind as a DataSource</param>
 		protected virtual void BindGrid(IViewHelper helper)
 		{
 
@@ -424,6 +596,13 @@
 
 		#region Special ReadControls method 
 
+		/// <summary>
+		/// Inspect a collection of DataGrid controls and set control values to a dictionary.
+		/// </summary>
+		/// <param name="controls">DataGrid Control Collection</param>
+		/// <param name="dictionary">Output object for control values</param>
+		/// <param name="keys">List of control/attribute names to collect</param>
+		/// <param name="nullIfEmpty">If value is an empty strong, set to null</param>
 		protected void ReadGridControls(ControlCollection controls, IDictionary dictionary, string[] keys, bool nullIfEmpty)
 		{
 			int i = -1;
@@ -487,15 +666,20 @@
 		#region Command methods
 
 		/// <summary>
-		/// If "Add Row" feature is going to be used, 
-		/// Override getter to return new instance of the Context list 
-		/// for this application. 
+		/// Provide an internal extension point 
+		/// that can return an entry item of the appropriate type 
+		/// to use when adding a new entry to the dataset.
 		/// </summary>
 		protected virtual IEntryList NewContextList
 		{
 			get { throw new NotImplementedException(); }
 		}
-
+		
+		/// <summary>
+		/// Create a blank for editing by creating an empty row 
+		/// and temporarily changing the datasource.
+		/// </summary>
+		/// <returns></returns>
 		protected virtual IViewHelper DataInsert()
 		{
 			DataGrid grid = Grid;
@@ -511,12 +695,24 @@
 			return helper;
 		}
 
+		/// <summary>
+		/// Invoke a Find command.
+		/// </summary>
+		/// <param name="key">Data index key for the entry, if any</param>
+		/// <param name="controls">The set of controls</param>
+		/// <returns>The executed helper</returns>
 		protected virtual IViewHelper Find(string key, ControlCollection controls)
 		{
 			IViewHelper helper = ExecuteBind(FindCommand);
 			return helper;
 		}
 
+		/// <summary>
+		/// Invoke a Save command.
+		/// </summary>
+		/// <param name="key">Data index key for the entry, if any</param>
+		/// <param name="controls">The set of controls</param>
+		/// <returns>The executed helper</returns>
 		protected virtual IViewHelper Save(string key, ControlCollection controls)
 		{
 			IViewHelper h = GetHelperFor(SaveCommand);
@@ -545,6 +741,10 @@
 
 		#region Loading methods
 
+		/// <summary>
+		/// Invoke a ListCommand that doesn't require a criteria.
+		/// </summary>
+		/// <returns>Executed helper</returns>
 		public virtual IViewHelper ExecuteList()
 		{
 			IViewHelper helper = Execute(ListCommand);
@@ -553,6 +753,10 @@
 			return helper;
 		}
 
+		/// <summary>
+		/// Invoke a ListCommand that uses a criteria.
+		/// </summary>
+		/// <returns>Executed helper</returns>
 		public virtual IViewHelper ExecuteList(IDictionary criteria)
 		{
 			IViewHelper helper = ReadExecute(ListCommand, criteria);
@@ -561,6 +765,11 @@
 			return helper;
 		}
 
+		/// <summary>
+		/// Setup the DataGrid when the page is first initialized.
+		/// </summary>
+		/// <param name="criteria">Parameters for the comamnd</param>
+		/// <returns></returns>
 		public virtual IViewHelper LoadGrid(IDictionary criteria)
 		{
 			IViewHelper helper;
@@ -575,13 +784,13 @@
 				helper = ExecuteList(criteria);
 			else
 				helper = ExecuteList();
-
+			
 			if (Grid.AllowCustomPaging)
 			{
 				int count = GetItemCount(helper);
 				ListPageIndexChanged_Raise(this, 0, Grid.PageSize, count);								
 			}
-
+			
 			return helper;
 		}
 
@@ -630,6 +839,12 @@
 			Reset(list_Criteria);
 		}
 
+		/// <summary>
+		/// Handle standard list Item events by opening item 
+		/// or preparing to add a new item.
+		/// </summary>
+		/// <param name="commandName">The com</param>
+		/// <param name="index"></param>
 		protected virtual void list_Item(string commandName, int index)
 		{
 			switch (commandName)
@@ -654,6 +869,10 @@
 			}
 		}
 
+		/// <summary>
+		/// Handle standard Edit events by setting the index and refreshing display.
+		/// </summary>
+		/// <param name="index"></param>
 		protected virtual void list_Edit(int index)
 		{
 			// ISSUE: Event? Page_Prompt = msg_EDIT_HINT;
@@ -661,6 +880,9 @@
 			list_Refresh();
 		}
 
+		/// <summary>
+		/// Reset DataGrid state.
+		/// </summary>
 		protected virtual void list_Quit()
 		{
 			// ISSUE: Event? Page_Prompt = msg_QUIT_SUCCESS;
@@ -669,6 +891,9 @@
 			list_Refresh();
 		}
 
+		/// <summary>
+		/// Refresh DataGrid  by rebinding datasource.
+		/// </summary>
 		protected virtual void list_Refresh()
 		{
 			DataBind();
@@ -688,6 +913,9 @@
 			Grid.CurrentPageIndex = 0; // sic
 		}
 
+		/// <summary>
+		/// Insert a new row for editing.
+		/// </summary>
 		protected virtual void list_Add()
 		{
 			IViewHelper helper = DataInsert();
@@ -706,6 +934,10 @@
 
 		#region List events
 
+		/// <summary>
+		/// Prepare an item for editing and return its key.
+		/// </summary>
+		/// <returns>Data key for item to edit</returns>
 		private string GetDataKey()
 		{
 			DataGrid grid = Grid;
@@ -714,6 +946,11 @@
 			return key;
 		}
 
+		/// <summary>
+		/// Harvest a collection of controls from DataGrid
+		/// </summary>
+		/// <param name="e"></param>
+		/// <returns>A control collection for DataGrid</returns>
 		public virtual ControlCollection GetControls(DataGridCommandEventArgs e)
 		{
 			DataGrid grid = Grid;
@@ -728,11 +965,21 @@
 
 		// postback events
 
+		/// <summary>
+		/// Handle event by presenting selected row in an editable form.
+		/// </summary>
+		/// <param name="source">Event source</param>
+		/// <param name="e">Event parameters</param>
 		private void list_Edit(object source, DataGridCommandEventArgs e)
 		{
 			list_Edit(e.Item.ItemIndex);
 		}
 
+		/// <summary>
+		/// Handle event by retaining any changes to the selected DataGrid row.
+		/// </summary>
+		/// <param name="source">Event source</param>
+		/// <param name="e">Event parameters</param>
 		private void list_Save(object source, DataGridCommandEventArgs e)
 		{
 			string key = (list_Insert) ? null : GetDataKey();
@@ -750,26 +997,53 @@
 			if (!okay) Page_Alert = helper;
 		}
 
+		
+		/// <summary>
+		/// Handle event by resetting DataGrid state.
+		/// </summary>
+		/// <param name="source">Event source</param>
+		/// <param name="e">Event parameters</param>
 		private void list_Quit(object source, DataGridCommandEventArgs e)
 		{
 			list_Quit();
 		}
 
+		/// <summary>
+		/// Handle list add event by inserting a new row, 
+		/// and raising a View Add event.
+		/// </summary>
+		/// <param name="sender">Event source</param>
+		/// <param name="e">Event parameters</param>
 		protected void list_Add(object sender, EventArgs e)
 		{
 			list_Add();
 			if (View_Add != null) View_Add(sender, e);
 		}
 
+		/// <summary>
+		/// Handle list item event by opening item or preparing to add new item.
+		/// </summary>
+		/// <param name="source">Event source</param>
+		/// <param name="e">Event parameters</param>
 		private void List_Item(object source, DataGridCommandEventArgs e)
 		{
 			int index = e.Item.ItemIndex;
 			list_Item(e.CommandName, index);
 		}
 
-
+		/// <summary>
+		/// Provide key to store item limit in criteria.
+		/// </summary>
 		public const string ITEM_LIMIT = "item_limit";
+		
+		/// <summary>
+		/// Provide key to store item offset in criteria.
+		/// </summary>
 		public const string ITEM_OFFSET = "item_offset";
+		
+		/// <summary>
+		/// Provide key to store item count in criteria.
+		/// </summary>
 		public const string ITEM_COUNT = "item_count";
 
 		#endregion
@@ -902,6 +1176,12 @@
 		/// 
 		public event EventHandler View_Add;
 
+		/// <summary>
+		/// Handle click event by raising a View Add event 
+		/// and passing the list criteria.
+		/// </summary>
+		/// <param name="sender">Event source</param>
+		/// <param name="e">Runtime arguments</param>
 		protected void add_Click(object sender, EventArgs e)
 		{
 			if (View_Add != null)
@@ -911,6 +1191,10 @@
 			}
 		}
 
+		/// <summary>
+		/// Provide an internal extension point for handling a selected item.
+		/// </summary>
+		/// <param name="index">Page index of item being selected</param>
 		protected virtual void list_Item_Click(int index)
 		{
 			// Override to provide implementation			
@@ -919,7 +1203,6 @@
 		/// <summary>
 		/// Signal when an item is being saved.
 		/// </summary>
-		/// 
 		public event EventHandler View_Save;
 
 		/// <summary>
@@ -938,7 +1221,6 @@
 		/// </summary>
 		/// <param name="sender">Event source</param>
 		/// <param name="e">Runtime arguments</param>
-		/// 
 		private void Page_Load(object sender, EventArgs e)
 		{
 			DataGrid grid = Grid;
@@ -982,6 +1264,9 @@
 
 		#region Templates
 
+		/// <summary>
+		/// Describe the fields needed to program a DataGrid column.
+		/// </summary>
 		public interface IGridConfig
 		{
 			string DataField { get; }
@@ -991,25 +1276,32 @@
 			bool HasTemplate { get; }
 		}
 
+		/// <summary>
+		/// Implement IGridConfig.
+		/// </summary>
 		public class GridConfig : IGridConfig
 		{
 			/// <summary>
-			/// Attribute name (required).
+			/// Store attribute name for column (required).
 			/// </summary>
-			/// 
 			private string _DataField;
 
+			/// <summary>
+			/// Provide attribute name for column (required).
+			/// </summary>
 			public string DataField
 			{
 				get { return _DataField; }
 			}
 
 			/// <summary>
-			/// Heading for this attribute (optional).
+			/// Store heading for this column (optional).
 			/// </summary>
-			/// 
 			private string _HeaderText;
 
+			/// <summary>
+			/// Provide heading for this column (optional).
+			/// </summary>
 			public string HeaderText
 			{
 				get
@@ -1020,10 +1312,13 @@
 			}
 
 			/// <summary>
-			/// Item template for this attribute (optional).
+			/// Store item template for this column (optional).
 			/// </summary>
 			private ITemplate _ItemTemplate;
 
+			/// <summary>
+			/// Provide item template for this column (optional).
+			/// </summary>
 			public ITemplate ItemTemplate
 			{
 				get { return _ItemTemplate; }
@@ -1031,10 +1326,13 @@
 			}
 
 			/// <summary>
-			/// Edit template for this attribute (optional).
+			/// Store edit template for this column (optional).
 			/// </summary>
 			private ITemplate _EditItemTemplate;
 
+			/// <summary>
+			/// Provide edit template for this column (optional).
+			/// </summary>
 			public ITemplate EditItemTemplate
 			{
 				get { return _EditItemTemplate; }
@@ -1045,17 +1343,32 @@
 			// string SortFormat;
 			// ITemplate ItemFormat;
 
+			/// <summary>
+			/// Store whether attribute has a template. 
+			/// </summary>
 			public bool HasTemplate
 			{
 				get { return (_ItemTemplate != null) || (_EditItemTemplate != null); }
 			}
 
+			/// <summary>
+			/// Construct a GridConfig from a data field and header test.
+			/// </summary>
+			/// <param name="dataField">The attribute name for this column</param>
+			/// <param name="headerText">The header text for this column</param>
 			public GridConfig(string dataField, string headerText)
 			{
 				_DataField = dataField;
 				_HeaderText = headerText;
 			}
 
+			/// <summary>
+			/// Construct a GridConfig using all attributes.
+			/// </summary>
+			/// <param name="dataField">The attribute name for this column</param>
+			/// <param name="headerText">The header text for this column</param>
+			/// <param name="itemTemplate">The item template for this column</param>
+			/// <param name="editItemTemplate">The edit template for this column</param>
 			public GridConfig(string dataField, string headerText, ITemplate itemTemplate, ITemplate editItemTemplate)
 			{
 				_DataField = dataField;
@@ -1065,11 +1378,22 @@
 			}
 		}
 
-
+		/// <summary>
+		/// Add literal text to a DataGrid column.
+		/// </summary>
 		public class LiteralTemplate : ITemplate
 		{
+			
+			/// <summary>
+			/// Store attribute name.
+			/// </summary>
 			private string _DataField;
 
+			/// <summary>
+			/// Handle data binding event by setting control text to data field.
+			/// </summary>
+			/// <param name="sender"></param>
+			/// <param name="e"></param>
 			private void OnDataBinding(object sender, EventArgs e)
 			{
 				Literal control;
@@ -1086,17 +1410,30 @@
 				container.Controls.Add(control);
 			}
 
+			/// <summary>
+			/// Construct instance from attribute name.
+			/// </summary>
+			/// <param name="dataField">Attribute name</param>
 			public LiteralTemplate(string dataField)
 			{
 				_DataField = dataField;
 			}
 		}
 
+		/// <summary>
+		/// Configure a DataGrid column to display the selected value on the KeyValue list.
+		/// </summary>
 		public class KeyValueTemplate : ITemplate
 		{
 			private string _DataField;
 			private IKeyValueList _Control;
 
+			/// <summary>
+			/// Handle data binding events by extracting key and value, 
+			/// and setting selected value to control text.
+			/// </summary>
+			/// <param name="sender">Event source</param>
+			/// <param name="e">Runtime arguments</param>
 			private void OnDataBinding(object sender, EventArgs e)
 			{
 				Literal control;
@@ -1114,6 +1451,11 @@
 				container.Controls.Add(control);
 			}
 
+			/// <summary>
+			/// Construct instance from a datafield and the list.
+			/// </summary>
+			/// <param name="dataField">Attribute name</param>
+			/// <param name="list">List of keyValue items</param>
 			public KeyValueTemplate(string dataField, IKeyValueList list)
 			{
 				_DataField = dataField;
@@ -1121,11 +1463,26 @@
 			}	
 		}
 
+		/// <summary>
+		/// Present a drop down list control when editing a column.
+		/// </summary>
 		public class DropDownListTemplate : ITemplate
 		{
+			/// <summary>
+			/// Store attribute name.
+			/// </summary>
 			private string _DataField;
+			
+			/// <summary>
+			/// Store reference to the DropDownList control.
+			/// </summary>
 			private DropDownList _Control;
 
+			/// <summary>
+			/// Scan list for an item matching value.
+			/// </summary>
+			/// <param name="control">The control to scan</param>
+			/// <param name="value">The value to match</param>
 			private void SelectItem(ListControl control, string value)
 			{
 				if (value != null)
@@ -1143,6 +1500,11 @@
 				}
 			}
 
+			/// <summary>
+			/// Handle a data binding event by selecting the key row.
+			/// </summary>
+			/// <param name="sender"></param>
+			/// <param name="e"></param>
 			private void OnDataBinding(object sender, EventArgs e)
 			{
 				DropDownList control;
@@ -1159,7 +1521,7 @@
 			private int _SelectedIndex;
 
 			/// <summary>
-			/// Kludge method to set Selected Index.
+			/// Provide a kludge method to set Selected Index.
 			/// </summary>
 			/// <remarks><p>
 			/// After setting the selected index on DataBinding, 
@@ -1181,6 +1543,10 @@
 				container.Controls.Add(_Control);
 			}
 
+			/// <summary>
+			/// Construct a DropDownListTempate from an id and datasource. 
+			/// </summary>
+			/// <param name="id">Data Field Name</param>
 			public DropDownListTemplate(string id, object dataSource)
 			{
 				_DataField = id;
@@ -1192,9 +1558,20 @@
 				_Control.PreRender += new EventHandler(OnPreRender);
 			}
 
+			/// <summary>
+			/// Construct a DropDownListTempate from an id and list. 
+			/// </summary>
+			/// <param name="id">Data Field Name</param>
+			/// <param name="list">Items to list</param>
 			public DropDownListTemplate(string id, IKeyValueList list) : this(id,list,false)
 			{}
 
+			/// <summary>
+			/// Construct a DropDownListTempate from id, list, insertNullKey.
+			/// </summary>
+			/// <param name="id">Data Field Name</param>
+			/// <param name="list">Items to list</param>
+			/// <param name="insertNullKey">Whether to prepend a -v- item to the list</param>
 			public DropDownListTemplate(string id, IKeyValueList list, bool insertNullKey)
 			{
 					if (insertNullKey) 
@@ -1279,4 +1656,4 @@
 	
 	
 	 */
-}
\ No newline at end of file
+}

Modified: struts/sandbox/trunk/overdrive/Nexus/Web/ViewControl.ascx.cs
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/Nexus/Web/ViewControl.ascx.cs?view=diff&rev=480626&r1=480625&r2=480626
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Web/ViewControl.ascx.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Web/ViewControl.ascx.cs Wed Nov 29 08:55:40 2006
@@ -12,6 +12,13 @@
 	/// <summary>
 	/// Base class for view controls (sub forms).
 	/// </summary>
+	/// <remarks>
+	/// ViewControl can read and bind controls, 
+	/// and provides access methods for helper and message resources  
+	/// </remarks>
+	/// 
+	/// 
+	/// 
 	public class ViewControl : UserControl, IViewControl
 	{
 		private IRequestCatalog _Catalog;