2001:11:11 Gaurav Vaish <gvaish@iitk.ac.in>
authorGaurav Vaish <gvaish@mono-cvs.ximian.com>
Sat, 10 Nov 2001 19:28:49 +0000 (19:28 -0000)
committerGaurav Vaish <gvaish@mono-cvs.ximian.com>
Sat, 10 Nov 2001 19:28:49 +0000 (19:28 -0000)
* Calendar.cs Added some functions, provided skeleton to some more

* BaseCompareValidator.cs Still wondering how to implement this

svn path=/trunk/mcs/; revision=1321

mcs/class/System.Web/System.Web.UI.WebControls/BaseCompareValidator.cs
mcs/class/System.Web/System.Web.UI.WebControls/Calendar.cs

index 6557c8be8c051e0c13571008b5a2767d17ff552c..b7d83665e99f6f435d7a736e9766ef08fa3f95fa 100755 (executable)
@@ -21,7 +21,7 @@ namespace System.Web.UI.WebControls
        {\r
                protected BaseCompareValidator(): base()\r
                {\r
-                       //TODO: Init work\r
+                       super();\r
                }\r
                \r
                /*[\r
@@ -32,7 +32,7 @@ namespace System.Web.UI.WebControls
 \r
                public static bool CanConvert(string text, ValidationDataType type)\r
                {\r
-                       //text = null;\r
+                       //TODO: Implement me\r
                        return false;\r
                }\r
                \r
@@ -50,7 +50,6 @@ namespace System.Web.UI.WebControls
                                if(!System.Enum.IsDefined(typeof(ValidationDataType), value))\r
                                        throw new ArgumentException();\r
                                ViewState["Type"] = value;\r
-                               // Else the function itself throws the exception\r
                        }\r
                }\r
                \r
@@ -64,9 +63,7 @@ namespace System.Web.UI.WebControls
 \r
                protected static int GetFullYear(int shortYear)\r
                {\r
-                       DateTime dt = DateTime.Today;\r
-                       int year = dt.Year;\r
-                       return 0; //TODO: Get the values. This is just to ensure that the code compiles\r
+                       //TODO: Implement me\r
                }\r
                \r
                protected override void AddAttributesToRender(HtmlTextWriter writer)\r
index 83bf131daac1a79fd6f823c83cb73de819e64999..858e120f077bf8ba651ab4517e073b1e74167230 100755 (executable)
 \r
 using System;\r
 using System.Collections;\r
+using System.Globalization;\r
+using System.Text;\r
 using System.Web;\r
 using System.Web.UI;\r
+using System.Drawing;\r
 \r
 namespace System.Web.UI.WebControls\r
 {\r
@@ -22,6 +25,7 @@ namespace System.Web.UI.WebControls
                \r
                private TableItemStyle          dayHeaderStyle;\r
                private TableItemStyle          dayStyle;\r
+               private TableItemStyle          nextPrevStyle;\r
                private TableItemStyle          otherMonthDayStyle;\r
                private SelectedDatesCollection selectedDates;\r
                private ArrayList               selectedDatesList;\r
@@ -31,8 +35,12 @@ namespace System.Web.UI.WebControls
                private TableItemStyle          todayDayStyle;\r
                private TableItemStyle          weekendDayStyle;\r
 \r
-               private static readonly object DayRenderEvent        = new object();\r
-               private static readonly object SelectionChangedEvent = new object();\r
+               private static readonly object DayRenderEvent           = new object();\r
+               private static readonly object SelectionChangedEvent    = new object();\r
+               private static readonly object VisibleMonthChangedEvent = new object();\r
+               \r
+               private Color defaultTextColor;\r
+               private System.Globalization.Calendar globCal;\r
 \r
                public Calendar(): base()\r
                {\r
@@ -157,6 +165,16 @@ namespace System.Web.UI.WebControls
                        }\r
                }\r
                \r
+               public TableItemStyle NextPrevStyle\r
+               {\r
+                       get\r
+                       {\r
+                               if(nextPrevStyle == null)\r
+                                       nextPrevStyle = new TableItemStyle();\r
+                               return nextPrevStyle;\r
+                       }\r
+               }\r
+               \r
                public TableItemStyle OtherMonthDayStyle\r
                {\r
                        get\r
@@ -446,6 +464,18 @@ namespace System.Web.UI.WebControls
                        }\r
                }\r
 \r
+               public event MonthChangedEventHandler VisibleMonthChanged\r
+               {\r
+                       add\r
+                       {\r
+                               Events.AddHandler(VisibleMonthChangedEvent, value);\r
+                       }\r
+                       remove\r
+                       {\r
+                               Events.RemoveHandler(VisibleMonthChangedEvent, value);\r
+                       }\r
+               }\r
+               \r
                protected virtual void OnDayRender(TableCell cell, CalendarDay day)\r
                {\r
                        if(Events!=null)\r
@@ -466,17 +496,229 @@ namespace System.Web.UI.WebControls
                        }\r
                }\r
                \r
+               protected virtual void OnVisibleMonthChanged(DateTime newDate, DateTime prevDate)\r
+               {\r
+                       if(Events!=null)\r
+                       {\r
+                               MonthChangedEventHandler mceh = (MonthChangedEventHandler)(Events[VisibleMonthChangedEvent]);\r
+                               if(mceh!=null)\r
+                                       mceh(this, new MonthChangedEventArgs(newDate, prevDate));\r
+                       }\r
+               }\r
+               \r
                public void RaisePostBackEvent(string eventArgument)\r
                {\r
-                       //TODO: THE LOST WORLD\r
+                       //TODO: Implement Me\r
                        // Written to keep compile get going\r
                }\r
                \r
                protected override void Render(HtmlTextWriter writer)\r
                {\r
-                       //TODO: Ofcourse, I have to override this function\r
+                       //TODO: Implement me\r
+                       globCal = DateTimeFormatInfo.CurrentInfo.Calendar;\r
+                       SetFirstCalendarDay(GetEffectiveVisibleDate());\r
+                       /*\r
+                        * ForeColor else defaultTextColor\r
+                        * Draw a table\r
+                        * if(ControlStyleCreated())\r
+                        *      then\r
+                        * {\r
+                        *       ApplyStyle(ControlStyle)\r
+                        * }\r
+                        * GridLines?\r
+                        * RenderBeginTag(writer)\r
+                        * RenderTitle(writer, visibleDate from GetEffectiveVisibleDate, this.SelectionMode, IsEnabled)\r
+                        * if(ShowHeader)\r
+                        *  RenderHeader(writer, visibleDate, SelectionMode, IsEnabled, \r
+                        * RenderAllDays\r
+                        * RenderEndTag(writer)\r
+                        */\r
+               }\r
+               \r
+               protected override ControlCollection CreateControlCollection()\r
+               {\r
+                       return new EmptyControlCollection(this);\r
+               }\r
+               \r
+               protected override void LoadViewState(object savedState)\r
+               {\r
+                       if(savedState!=null)\r
+                       {\r
+                               //TODO: Implement me\r
+                               //object[] states = (object[]) savedState;\r
+                               //loadViewState of all the states/styles\r
+                       }\r
+               }\r
+               \r
+               protected override object SaveViewState()\r
+               {\r
+                       //TODO: Implement me\r
+                       // SaveViewState of all the styles\r
+               }\r
+               \r
+               protected override void TrackViewState()\r
+               {\r
+                       base.TrackViewState();\r
+                       if(titleStyle!=null)\r
+                       {\r
+                               titleStyle.TrackViewState();\r
+                       }\r
+                       if(nextPrevStyle!=null)\r
+                       {\r
+                               nextPrevStyle.TrackViewState();\r
+                       }\r
+                       if(dayStyle!=null)\r
+                       {\r
+                               dayStyle.TrackViewState();\r
+                       }\r
+                       if(dayHeaderStyle!=null)\r
+                       {\r
+                               dayHeaderStyle.TrackViewState();\r
+                       }\r
+                       if(todayDayStyle!=null)\r
+                       {\r
+                               todayDayStyle.TrackViewState();\r
+                       }\r
+                       if(weekendDayStyle!=null)\r
+                       {\r
+                               weekendDayStyle.TrackViewState();\r
+                       }\r
+                       if(otherMonthStyle!=null)\r
+                       {\r
+                               otherMonthStyle.TrackViewState();\r
+                       }\r
+                       if(selectedDayStyle!=null)\r
+                       {\r
+                               selectedDayStyle.TrackViewState();\r
+                       }\r
+                       if(selectorStyle!=null)\r
+                       {\r
+                               selectorStyle.TrackViewState();\r
+                       }\r
                }\r
                \r
                //TODO: Recheck, I am through with all the functions?\r
+               \r
+               private void RenderAllDays(HtmlTextWriter writer, DateTime firstDay, DateTime activeDate, CalendarSelectionMode mode, bool isActive, bool isDownLevel)\r
+               {\r
+                       //TODO: Implement me\r
+                       /*\r
+                        * "<tr>"\r
+                        * "</tr>"\r
+                        */\r
+               }\r
+               \r
+               private void RenderHeader(HtmlTextWriter writer, DateTime firstDay, CalendarSelectionMode mode, bool isActive, bool isDownLevel)\r
+               {\r
+                       //TODO: Implement Me\r
+                       /*\r
+                        * "<tr>"\r
+                        * "</tr>"\r
+                        */\r
+               }\r
+               \r
+               private void RenderTitle(HtmlTextWriter writer, DateTime visibleDate, CalendarSelectionMode mode, bool isActive)\r
+               {\r
+                       //TODO: Implement me\r
+                       /*\r
+                        * Make a row with the following contents: "<tr>"\r
+                        * Draw a table, with cell having the following properties\r
+                        * if(mode==CalendarSelectionMode.DayWeek || mode==CalendarSelectionMode.DayWeekMonth)\r
+                        *      then draw a column with colspan=8\r
+                        * else\r
+                        *      draw with colspan=7\r
+                        * set gridlines?\r
+                        * set width\r
+                        * set cellspacing\r
+                        * ApplyStyleToTitle(table, cell, style)\r
+                        * RenderBeginTag(writer)\r
+                        * RenderBeginTag(writer)\r
+                        * "<tr>"\r
+                        * -> The next/previous months things\r
+                        * GetCalendarText("previousMonth", PrevMonthText, NextPrevStyle.ForeColor, isActive)\r
+                        * RenderCalendarCell(writer, cell, ^^^)\r
+                        * ..\r
+                        * ..\r
+                        * Then for NextMonthText\r
+                        * "</tr>"\r
+                        * "</tr>"\r
+                        */\r
+               }\r
+               \r
+               private void ApplyStyleToTitle(Table table, TableCell cell, TableItemStyle style)\r
+               {\r
+                       //TODO: Implement me\r
+                       /*\r
+                        * Font\r
+                        * Background color\r
+                        * Foreground color\r
+                        * Border color\r
+                        * Border width\r
+                        * Border style\r
+                        * Vertical alignment\r
+                        */\r
+               }\r
+               \r
+               private void RenderCalendarCell(HtmlTextWriter writer, TableCell cell, string text)\r
+               {\r
+                       cell.RenderBeginTag(writer);\r
+                       writer.Write(text);\r
+                       cell.RenderEndTag(writer);\r
+               }\r
+               \r
+               private DateTime SetFirstCalendarDay(DateTime visibleDate)\r
+               {\r
+                       globCal = visibleDate;\r
+                       //TODO: Implement me\r
+               }\r
+               \r
+               private DateTime GetEffectiveVisibleDate()\r
+               {\r
+                       DateTime dt = VisibleDate;\r
+                       if(dt.Equals(DateTime.MinValue))\r
+                       {\r
+                               dt = TodaysDate;\r
+                       }\r
+                       return new DateTime(globCal.GetYear(dt), globCal.GetMonth(dt), globCal.GetDayOfMonth(dt), globCal);\r
+               }\r
+               \r
+               /*\r
+                * Creates text to be displayed, with all attributes if to be\r
+                * shown as a hyperlink\r
+                */\r
+               private string GetCalendarText(string eventArg, string text, Color foreground, bool isLink)\r
+               {\r
+                       if(isLink)\r
+                       {\r
+                               StringBuilder dispVal = new StringBuilder();\r
+                               dispVal.Append("<a href=\"");\r
+                               dispVal.Append(Page.GetPostBackClientHyperlink(this, eventArg));\r
+                               dispVal.Append("\" style=\"color: ");\r
+                               if(foreground.IsEmpty)\r
+                               {\r
+                                       dispVal.Append(ColorTranslater.ToHtml(defaultTextColor);\r
+                               } else\r
+                               {\r
+                                       dispVal.Append(ColorTranslater.ToHtml(foreground);\r
+                               }\r
+                               dispVal.Append("\">");\r
+                               dispVal.Append(text);\r
+                               dispVal.Append("</a>");\r
+                               return dispVal.ToString();\r
+                       }\r
+                       return text;\r
+               }\r
+\r
+               private string GetHtmlForCell(TableCell cell, bool showLinks)\r
+               {\r
+                       StringWriter sw = new StringWriter();\r
+                       HtmlTextWriter htw = new HtmlTextWriter(sw);\r
+                       RenderBeginTag(htw);\r
+                       if(showLinks)\r
+                       {\r
+                               //sw.Write(GetCalendarText(,,true, ForeColor));\r
+                               //TODO: Implement me\r
+                       }\r
+               }\r
        }\r
 }\r