/// <include file='doc\WmlObjectListAdapter.uex' path='docs/doc[@for="WmlObjectListAdapter.RenderItemDetails"]/*' />
        protected virtual void RenderItemDetails(WmlMobileTextWriter writer, ObjectListItem item)
        {
            String backCommandText = Control.BackCommandText.Length == 0 ?
                                     GetDefaultLabel(BackLabel) :
                                     Control.BackCommandText;
            String softkeyLabel = backCommandText.Length <= Device.MaximumSoftkeyLabelLength ?
                                  backCommandText :
                                  null;

            Style labelStyle = Control.LabelStyle;

            writer.EnterStyle(labelStyle);
            writer.RenderText(item[Control.LabelFieldIndex], true);
            writer.ExitStyle(labelStyle);

            writer.EnterStyle(Style);
            IObjectListFieldCollection fields = Control.AllFields;
            int fieldIndex = 0;

            foreach (ObjectListField field in fields)
            {
                if (field.Visible)
                {
                    String displayText = String.Format(CultureInfo.InvariantCulture, "{0}: {1}", field.Title, item[fieldIndex]);
                    writer.RenderText(displayText, true);
                }
                fieldIndex++;
            }
            RenderPostBackEvent(writer, _backToList, softkeyLabel, true, backCommandText, true);
            writer.ExitStyle(Style);
        }
        /// <include file='doc\WmlTextViewAdapter.uex' path='docs/doc[@for="WmlTextViewAdapter.Render"]/*' />
        public override void Render(WmlMobileTextWriter writer)
        {
            writer.EnterLayout(Style);

            int beginElement = Control.FirstVisibleElementIndex;
            int beginOffset = Control.FirstVisibleElementOffset;
            int endElement = Control.LastVisibleElementIndex;
            int endOffset = Control.LastVisibleElementOffset;

            for (int i = beginElement; i <= endElement; i++)
            {
                int begin = (i == beginElement) ? beginOffset : 0;
                int end;
                if (i == endElement)
                {
                    if (endOffset <= begin)
                    {
                        break;
                    }
                    end = endOffset;
                }
                else
                {
                    end = -1;
                }

                RenderElement(writer, i, begin, end);
            }

            writer.RenderText(String.Empty, true);
            writer.ExitLayout(Style);
        }
Example #3
0
        public override void Render(WmlMobileTextWriter writer)
        {
            writer.EnterLayout(Style);

            int beginElement = Control.FirstVisibleElementIndex;
            int beginOffset  = Control.FirstVisibleElementOffset;
            int endElement   = Control.LastVisibleElementIndex;
            int endOffset    = Control.LastVisibleElementOffset;

            for (int i = beginElement; i <= endElement; i++)
            {
                int begin = (i == beginElement) ? beginOffset : 0;
                int end;
                if (i == endElement)
                {
                    if (endOffset <= begin)
                    {
                        break;
                    }
                    end = endOffset;
                }
                else
                {
                    end = -1;
                }

                RenderElement(writer, i, begin, end);
            }

            writer.RenderText("", true);
            writer.ExitLayout(Style);
        }
        public override void Render(WmlMobileTextWriter writer)
        {
            String source               = Control.ImageUrl;
            String target               = Control.NavigateUrl;
            String text                 = Control.AlternateText;
            bool   breakAfterContents   = Control.BreakAfter;
            String softkeyLabel         = Control.SoftkeyLabel;
            bool   implicitSoftkeyLabel = false;

            if (softkeyLabel.Length == 0)
            {
                implicitSoftkeyLabel = true;
                softkeyLabel         = text;
            }

            writer.EnterLayout(Style);
            if (target != String.Empty)
            {
                RenderBeginLink(writer, target, softkeyLabel, implicitSoftkeyLabel, true);
                breakAfterContents = false;
            }

            if (source == String.Empty)
            {
                // Just write the alternate as text
                writer.RenderText(text, breakAfterContents);
            }
            else
            {
                String localSource;

                if (source.StartsWith(Constants.SymbolProtocol))
                {
                    // src is required according to WML
                    localSource = source.Substring(Constants.SymbolProtocol.Length);
                    source      = String.Empty;
                }
                else
                {
                    localSource = null;

                    // AUI 3652
                    source = Control.ResolveUrl(source);

                    writer.AddResource(source);
                }

                writer.RenderImage(source, localSource, text, breakAfterContents);
            }

            if (target != String.Empty)
            {
                RenderEndLink(writer, target, Control.BreakAfter);
            }
            writer.ExitLayout(Style);
        }
        /// <include file='doc\WmlImageAdapter.uex' path='docs/doc[@for="WmlImageAdapter.Render"]/*' />
        public override void Render(WmlMobileTextWriter writer)
        {
            String source = Control.ImageUrl;
            String target = Control.NavigateUrl;
            String text   = Control.AlternateText;
            bool   breakAfterContents = Control.BreakAfter;
            String softkeyLabel = Control.SoftkeyLabel;
            bool implicitSoftkeyLabel = false;
            if (softkeyLabel.Length == 0)
            {
                implicitSoftkeyLabel = true;
                softkeyLabel = text;
            }

            writer.EnterLayout(Style);
            if (!String.IsNullOrEmpty(target))
            {
                RenderBeginLink(writer, target, softkeyLabel, implicitSoftkeyLabel, true);
                breakAfterContents = false;
            }

            if (String.IsNullOrEmpty(source))
            {
                // Just write the alternate as text
                writer.RenderText(text, breakAfterContents);
            }
            else
            {
                String localSource;

                if (source.StartsWith(Constants.SymbolProtocol, StringComparison.Ordinal))
                {
                    // src is required according to WML
                    localSource = source.Substring(Constants.SymbolProtocol.Length);
                    source = String.Empty;
                }
                else
                {
                    localSource = null;

                    // AUI 3652
                    source = Control.ResolveUrl(source);

                    writer.AddResource(source);
                }

                writer.RenderImage(source, localSource, text, breakAfterContents);
            }

            if (!String.IsNullOrEmpty(target))
            {
                RenderEndLink(writer, target, Control.BreakAfter);
            }
            writer.ExitLayout(Style);
        }
 /// <include file='doc\WmlLiteralTextAdapter.uex' path='docs/doc[@for="WmlLiteralTextAdapter.Render"]/*' />
 public override void Render(WmlMobileTextWriter writer)
 {
     // Cache value, because Render is called twice.
     if (_pagedText == null)
     {
         _pagedText = Control.PagedText;
     }
     writer.EnterFormat(Style);
     writer.RenderText(_pagedText, Control.BreakAfter);
     writer.ExitFormat(Style);
 }
 /// <include file='doc\WmlLiteralTextAdapter.uex' path='docs/doc[@for="WmlLiteralTextAdapter.Render"]/*' />
 public override void Render(WmlMobileTextWriter writer)
 {
     // Cache value, because Render is called twice.
     if (_pagedText == null)
     {
         _pagedText = Control.PagedText;
     }
     writer.EnterFormat(Style);
     writer.RenderText(_pagedText, Control.BreakAfter);
     writer.ExitFormat(Style);
 }
Example #8
0
 /// <include file='doc\WmlControlAdapter.uex' path='docs/doc[@for="WmlControlAdapter.RenderLink"]/*' />
 protected void RenderLink(WmlMobileTextWriter writer,
                           String targetUrl,
                           String softkeyLabel,
                           bool implicitSoftkeyLabel,
                           bool mapToSoftkey,
                           String text,
                           bool breakAfter)
 {
     RenderBeginLink(writer, targetUrl, softkeyLabel, implicitSoftkeyLabel, mapToSoftkey);
     writer.RenderText(text);
     RenderEndLink(writer, targetUrl, breakAfter);
 }
Example #9
0
        protected override void RenderItemDetails(WmlMobileTextWriter writer, ObjectListItem item)
        {
            string str1  = (Control.BackCommandText != String.Empty) ? Control.BackCommandText : base.GetDefaultLabel(ControlAdapter.BackLabel);
            string str2  = (str1.Length > base.Device.MaximumSoftkeyLabelLength) ? null : str1;
            Style  style = Control.LabelStyle;

            writer.EnterStyle(style);
            writer.RenderText(item[Control.LabelFieldIndex], true);
            writer.ExitStyle(style);
            writer.EnterStyle(base.Style);
            IObjectListFieldCollection iObjectListFieldCollection = Control.AllFields;
            int         i           = 0;
            IEnumerator iEnumerator = iObjectListFieldCollection.GetEnumerator();

            while (iEnumerator.MoveNext())
            {
                ObjectListField objectListField = (ObjectListField)iEnumerator.Current;
                if (objectListField.Visible)
                {
                    if (objectListField.Name == "CALL")
                    {
                        writer.RenderText(String.Format("{0}: {1}", objectListField.Title, WmlcheckPhonenumber(item[i])), true, false);
                    }
                    else if (objectListField.Name == "MAIL")
                    {
                        writer.RenderText(String.Format("{0}: {1}", objectListField.Title, WmlMail(item[i])), true, false);
                    }
                    else
                    {
                        writer.RenderText(String.Format("{0}: {1}", objectListField.Title, item[i]), true);
                    }
                }
                i++;
            }

            base.RenderPostBackEvent(writer, "__back", str2, true, str1, true);
            writer.ExitStyle(base.Style);
        }
Example #10
0
        /// <include file='doc\WmlListAdapter.uex' path='docs/doc[@for="WmlListAdapter.Render"]/*' />
        public override void Render(WmlMobileTextWriter writer)
        {
            if (Control.HasControls())
            {
                writer.BeginCustomMarkup();
                RenderChildren(writer);
                writer.EndCustomMarkup();
                return;
            }

            int pageStart = Control.FirstVisibleItemIndex;
            int pageSize  = Control.VisibleItemCount;

            if (pageSize == 0)
            {
                return;
            }

            MobileListItemCollection items = Control.Items;

            if (items.Count == 0)
            {
                return;
            }

            bool itemsAsLinks  = Control.ItemsAsLinks;
            bool hasCmdHandler = Control.HasItemCommandHandler;

            writer.EnterStyle(Style);
            for (int i = 0; i < pageSize; i++)
            {
                MobileListItem item = items[pageStart + i];

                if (itemsAsLinks)
                {
                    RenderLink(writer, item.Value, null, false, false, item.Text, true);
                }
                else if (hasCmdHandler)
                {
                    RenderPostBackEvent(writer, item.Index.ToString(CultureInfo.InvariantCulture), null, true, item.Text, true);
                }
                else
                {
                    writer.RenderText(item.Text, true);
                }
            }
            writer.ExitStyle(Style);
        }
 /// <include file='doc\WmlValidatorAdapter.uex' path='docs/doc[@for="WmlValidatorAdapter.Render"]/*' />
 public override void Render(WmlMobileTextWriter writer)
 {
     writer.EnterStyle(Style);
     if (!Control.IsValid && Control.Display != ValidatorDisplay.None)
     {
         String text = Control.Text;
         if (String.IsNullOrEmpty(text))
         {
             text = Control.ErrorMessage;
         }
         
         if (!String.IsNullOrEmpty(text))
         {
             writer.RenderText(text, Control.BreakAfter);
         }
     }
     writer.ExitStyle(Style);
 }
Example #12
0
        /// <include file='doc\WmlValidatorAdapter.uex' path='docs/doc[@for="WmlValidatorAdapter.Render"]/*' />
        public override void Render(WmlMobileTextWriter writer)
        {
            writer.EnterStyle(Style);
            if (!Control.IsValid && Control.Display != ValidatorDisplay.None)
            {
                String text = Control.Text;
                if (String.IsNullOrEmpty(text))
                {
                    text = Control.ErrorMessage;
                }

                if (!String.IsNullOrEmpty(text))
                {
                    writer.RenderText(text, Control.BreakAfter);
                }
            }
            writer.ExitStyle(Style);
        }
Example #13
0
        public override void Render(WmlMobileTextWriter writer)
        {
            String[] errorMessages = null;

            if (Control.Visible)
            {
                errorMessages = Control.GetErrorMessages();
            }

            writer.EnterStyle(Style);
            if (errorMessages != null)
            {
                if (Control.HeaderText.Length > 0)
                {
                    writer.RenderText(Control.HeaderText, true);
                }

                ArrayList arr = new ArrayList();
                foreach (String errorMessage in errorMessages)
                {
                    Debug.Assert(errorMessage != null && errorMessage.Length > 0, "Bad Error Messages");
                    arr.Add(errorMessage);
                }

                _list.DataSource = arr;
                _list.DataBind();

                if (String.Compare(Control.FormToValidate, Control.Form.UniqueID, true) != 0)
                {
                    _link.NavigateUrl = Constants.FormIDPrefix + Control.FormToValidate;
                    _link.Text        = Control.BackLabel == String.Empty? GetDefaultLabel(BackLabel) : Control.BackLabel;
                }
                else
                {
                    _link.Visible = false;
                }

                // Render the child controls to display error message list and a
                // link for going back to the Form that is having error
                RenderChildren(writer);
            }
            writer.ExitStyle(Style);
        }
        /// <include file='doc\WmlValidationSummaryAdapter.uex' path='docs/doc[@for="WmlValidationSummaryAdapter.Render"]/*' />
        public override void Render(WmlMobileTextWriter writer)
        {
            String[] errorMessages = null;

            if (Control.Visible)
            {
                errorMessages = Control.GetErrorMessages();
            }
    
            writer.EnterStyle(Style);
            if (errorMessages != null)
            {
                if (Control.HeaderText.Length > 0)
                {
                    writer.RenderText(Control.HeaderText, true);
                }

                ArrayList arr = new ArrayList();
                foreach (String errorMessage in errorMessages)
                {
                    Debug.Assert(errorMessage != null && errorMessage.Length > 0, "Bad Error Messages");
                    arr.Add(errorMessage);
                }

                _list.DataSource = arr;
                _list.DataBind();

                if (String.Compare(Control.FormToValidate, Control.Form.UniqueID, StringComparison.OrdinalIgnoreCase) != 0)
                {
                    _link.NavigateUrl = Constants.FormIDPrefix + Control.FormToValidate;
                    _link.Text = Control.BackLabel.Length == 0 ? GetDefaultLabel(BackLabel) : Control.BackLabel;
                }
                else
                {
                    _link.Visible = false;
                }

                // Render the child controls to display error message list and a
                // link for going back to the Form that is having error
                RenderChildren(writer);
            }
            writer.ExitStyle(Style);
        }
Example #15
0
        private void RenderElement(WmlMobileTextWriter writer, int index, int begin, int end)
        {
            TextViewElement element = Control.GetElement(index);

            if (end == -1)
            {
                end = element.Text.Length;
            }

            String text = element.Text;

            if (begin > 0 || end < text.Length)
            {
                text = text.Substring(begin, end - begin);
            }

            BooleanOption previousBold   = Style.Font.Bold;
            BooleanOption previousItalic = Style.Font.Italic;

            if (element.IsBold)
            {
                Style.Font.Bold = BooleanOption.True;
            }
            if (element.IsItalic)
            {
                Style.Font.Italic = BooleanOption.True;
            }

            writer.EnterStyle(Style);
            if (element.Url != null)
            {
                RenderLink(writer, element.Url, null, true, true, text, element.BreakAfter);
            }
            else
            {
                writer.RenderText(text, element.BreakAfter);
            }
            writer.ExitStyle(Style);

            Style.Font.Bold   = previousBold;
            Style.Font.Italic = previousItalic;
        }
Example #16
0
        /// <include file='doc\WmlControlAdapter.uex' path='docs/doc[@for="WmlControlAdapter.RenderPostBackEvent1"]/*' />
        protected void RenderPostBackEvent(
            WmlMobileTextWriter writer,
            String argument,
            String softkeyLabel,
            bool mapToSoftkey,
            String text,
            bool breakAfter,
            WmlPostFieldType postBackType)
        {
            bool implicitSoftkeyLabel = false;

            if (mapToSoftkey)
            {
                if (softkeyLabel == null || softkeyLabel.Length == 0)
                {
                    softkeyLabel         = text;
                    implicitSoftkeyLabel = true;
                }

                if (!writer.IsValidSoftkeyLabel(softkeyLabel))
                {
                    // If softkey label was specified explicitly, then truncate.
                    if (!implicitSoftkeyLabel && softkeyLabel.Length > 0)
                    {
                        softkeyLabel = softkeyLabel.Substring(0, Device.MaximumSoftkeyLabelLength);
                    }
                    else
                    {
                        softkeyLabel         = GetDefaultLabel(GoLabel);
                        implicitSoftkeyLabel = true;
                    }
                }
            }

            writer.RenderBeginPostBack(softkeyLabel, implicitSoftkeyLabel, mapToSoftkey);
            writer.RenderText(text);
            writer.RenderEndPostBack(Control.UniqueID, argument, postBackType, true, breakAfter);
        }
        public override void Render(WmlMobileTextWriter writer)
        {
            ArrayList          arr;
            DateTime           tempDate;
            DateTimeFormatInfo currentDateTimeInfo        = DateTimeFormatInfo.CurrentInfo;
            String             abbreviatedMonthDayPattern = AbbreviateMonthPattern(currentDateTimeInfo.MonthDayPattern);

            _threadCalendar = currentDateTimeInfo.Calendar;

            // RendersWmlSelectsAsMenuCards is true means the list control will be
            // rendered as select/option tags, where the break tag before
            // them will become an extra line which doesn't like good.
            bool addBreakBeforeListControl = Device.RendersWmlSelectsAsMenuCards;

            writer.EnterStyle(Style);

            Debug.Assert(NotSecondaryUI == NotSecondaryUIInit);
            switch (SecondaryUIMode)
            {
            case FirstPrompt:
                String promptText = Control.CalendarEntryText;
                if (promptText == String.Empty)
                {
                    promptText = SR.GetString(SR.CalendarAdapterFirstPrompt);
                }

                // Link to input option selection screen
                RenderPostBackEvent(writer,
                                    OptionPrompt.ToString(),
                                    GetDefaultLabel(GoLabel),
                                    true,
                                    promptText,
                                    true);
                break;

            // Render the first secondary page that provides differnt
            // options to select a date.
            case OptionPrompt:
                writer.RenderText(SR.GetString(SR.CalendarAdapterOptionPrompt),
                                  !addBreakBeforeListControl);

                arr = new ArrayList();

                // Option to select the default date
                arr.Add(Control.VisibleDate.ToString(
                            currentDateTimeInfo.ShortDatePattern));

                // Option to another page that can enter a date by typing
                arr.Add(SR.GetString(SR.CalendarAdapterOptionType));

                // Options to a set of pages for selecting a date, a week
                // or a month by picking month/year, week and day
                // accordingly.  Available options are determined by
                // SelectionMode.
                arr.Add(SR.GetString(SR.CalendarAdapterOptionChooseDate));

                if (Control.SelectionMode == CalendarSelectionMode.DayWeek ||
                    Control.SelectionMode == CalendarSelectionMode.DayWeekMonth)
                {
                    arr.Add(SR.GetString(SR.CalendarAdapterOptionChooseWeek));

                    if (Control.SelectionMode == CalendarSelectionMode.DayWeekMonth)
                    {
                        arr.Add(SR.GetString(SR.CalendarAdapterOptionChooseMonth));
                    }
                }
                DataBindAndRender(writer, _optionList, arr);
                break;

            // Render a title and textbox to capture a date entered by user
            case TypeDate:
                if (_textBoxErrorMessage != null)
                {
                    writer.RenderText(_textBoxErrorMessage, true);
                }

                if (_selectList.Visible)
                {
                    writer.RenderText(SR.GetString(SR.CalendarAdapterOptionEra), true);
                    _selectList.RenderControl(writer);
                }

                String numericDateFormat = GetNumericDateFormat();

                writer.RenderText(SR.GetString(SR.CalendarAdapterOptionType) + ":", true);
                writer.RenderText("(");
                writer.RenderText(numericDateFormat.ToUpper());
                writer.RenderText(")");

                if (!_selectList.Visible)
                {
                    writer.RenderText(GetEra(Control.VisibleDate));
                }
                writer.RenderText(String.Empty, true);

                _textBox.Numeric   = true;
                _textBox.Size      = numericDateFormat.Length;
                _textBox.MaxLength = numericDateFormat.Length;
                _textBox.Text      = Control.VisibleDate.ToString(numericDateFormat);
                _textBox.Visible   = true;
                _textBox.RenderControl(writer);

                String okLabel = GetDefaultLabel(OKLabel);

                // accept softkey for sending the textbox value back to the server
                RenderPostBackEvent(writer,
                                    TypeDateDone.ToString(),
                                    okLabel,
                                    true,
                                    okLabel,
                                    true,
                                    WmlPostFieldType.Raw);
                break;

            // Render a paged list for choosing a month
            case ChooseMonth:
            {
                String displayText = String.Format("{0}:", SR.GetString(SR.CalendarAdapterOptionChooseMonth));
                writer.RenderText(displayText, !addBreakBeforeListControl);

                tempDate = Control.VisibleDate;

                String abbreviatedYearMonthPattern = AbbreviateMonthPattern(currentDateTimeInfo.YearMonthPattern);

                // This is to be consistent with ASP.NET Calendar control
                // on handling YearMonthPattern:
                // Some cultures have a comma in their YearMonthPattern,
                // which does not look right in a calendar.  Here we
                // strip the comma off.
                int indexComma = abbreviatedYearMonthPattern.IndexOf(',');
                if (indexComma >= 0)
                {
                    abbreviatedYearMonthPattern =
                        abbreviatedYearMonthPattern.Remove(indexComma, 1);
                }

                arr = new ArrayList();
                for (int i = 0; i < _monthsToDisplay; i++)
                {
                    arr.Add(tempDate.ToString(abbreviatedYearMonthPattern));
                    tempDate = _threadCalendar.AddMonths(tempDate, 1);
                }
                arr.Add(GetDefaultLabel(NextLabel));
                arr.Add(GetDefaultLabel(PreviousLabel));
                DataBindAndRender(writer, _monthList, arr);
                break;
            }

            // Based on the month selected in case ChooseMonth above, render a list of
            // availabe weeks of the month.
            case ChooseWeek:
            {
                String monthFormat = (GetNumericDateFormat()[0] == 'y') ? "yyyy/M" : "M/yyyy";
                String displayText = String.Format("{0} ({1}):",
                                                   SR.GetString(SR.CalendarAdapterOptionChooseWeek),
                                                   Control.VisibleDate.ToString(monthFormat));
                writer.RenderText(displayText, !addBreakBeforeListControl);

                // List weeks of days of the selected month.  May include
                // days from the previous and the next month to fill out
                // all six week choices.  This is consistent with the
                // ASP.NET Calendar control.

                // Note that the event handling code of this list control
                // should be implemented according to the index content
                // generated here.

                tempDate = FirstCalendarDay(Control.VisibleDate);

                arr = new ArrayList();
                String weekDisplay;
                for (int i = 0; i < 6; i++)
                {
                    weekDisplay  = tempDate.ToString(abbreviatedMonthDayPattern);
                    weekDisplay += DaySeparator;
                    tempDate     = _threadCalendar.AddDays(tempDate, 6);
                    weekDisplay += tempDate.ToString(abbreviatedMonthDayPattern);
                    arr.Add(weekDisplay);
                    tempDate = _threadCalendar.AddDays(tempDate, 1);
                }
                DataBindAndRender(writer, _weekList, arr);
                break;
            }

            // Based on the month and week selected in case ChooseMonth and ChooseWeek above,
            // render a list of the dates in the week.
            case ChooseDay:
            {
                String displayText = String.Format("{0}:", SR.GetString(SR.CalendarAdapterOptionChooseDate));
                writer.RenderText(displayText, !addBreakBeforeListControl);

                tempDate = Control.VisibleDate;

                arr = new ArrayList();
                String        date;
                String        dayName;
                StringBuilder dayDisplay   = new StringBuilder();
                bool          dayNameFirst = (GetNumericDateFormat()[0] != 'y');

                for (int i = 0; i < 7; i++)
                {
                    date = tempDate.ToString(abbreviatedMonthDayPattern);

                    if (Control.ShowDayHeader)
                    {
                        // Use the short format for displaying day name
                        dayName           = GetAbbreviatedDayName(tempDate);
                        dayDisplay.Length = 0;

                        if (dayNameFirst)
                        {
                            dayDisplay.Append(dayName);
                            dayDisplay.Append(Space);
                            dayDisplay.Append(date);
                        }
                        else
                        {
                            dayDisplay.Append(date);
                            dayDisplay.Append(Space);
                            dayDisplay.Append(dayName);
                        }
                        arr.Add(dayDisplay.ToString());
                    }
                    else
                    {
                        arr.Add(date);
                    }
                    tempDate = _threadCalendar.AddDays(tempDate, 1);
                }
                DataBindAndRender(writer, _dayList, arr);
                break;
            }

            default:
                Debug.Assert(false, "Unexpected Secondary UI Mode");
                break;
            }
            writer.ExitStyle(Style);
        }
        /// <include file='doc\WmlPhoneCallAdapter.uex' path='docs/doc[@for="WmlPhoneCallAdapter.Render"]/*' />
        public override void Render(WmlMobileTextWriter writer)
        {
            String text, url, phoneNumber;
            String controlText = Control.Text;

            // Always strip off optional separators for PhoneNumber before it
            // is added in markup.

            String originalNumber = Control.PhoneNumber;
            char[] plainNumber = new char[originalNumber.Length];  // allocate enough buffer size

            // Loop to strip out optional separators
            int sizeOfPlainNumber = 0;
            foreach (char ch in originalNumber)
            {
                if ((ch >= '0' && ch <= '9') || ch == '+')
                {
                    plainNumber[sizeOfPlainNumber] = ch;
                    sizeOfPlainNumber++;
                }
            }

            // Assign the number string with the right size
            phoneNumber = new String(plainNumber, 0, sizeOfPlainNumber);

            // Construct text and url based on device capabilities
            //
            if (!Device.CanInitiateVoiceCall)
            {
                text = String.Format(CultureInfo.InvariantCulture, Control.AlternateFormat,
                                     controlText,
                                     originalNumber);
                url = Control.AlternateUrl;
            }
            else
            {
                // Some WML browsers require the phone number
                // showing as text so it can be selected.  If it is not
                // formatted in the text yet, append it to the end of the
                // text.
                if(Device.RequiresPhoneNumbersAsPlainText)
                {
                    text = controlText + " " + phoneNumber;
                    url = String.Empty;
                }
                else
                {
                    text = (controlText == null || controlText.Length > 0) ?
                                controlText : originalNumber;
                    url = "wtai://wp/mc;" + phoneNumber;
                }
            }

            // Write out plain text or corresponding link/softkey command
            // accordingly
            //
            writer.EnterStyle(Style);
            if (url.Length == 0)
            {
                writer.RenderText(text, Control.BreakAfter);
            }
            else
            {
                String softkeyLabel = Control.SoftkeyLabel;
                bool implicitSoftkeyLabel = false;
                if (softkeyLabel.Length == 0)
                {
                    implicitSoftkeyLabel = true;
                    softkeyLabel = text;
                }
                if (!writer.IsValidSoftkeyLabel(softkeyLabel))
                {
                    if (!implicitSoftkeyLabel && softkeyLabel.Length > 0)
                    {
                        softkeyLabel = softkeyLabel.Substring(0, Device.MaximumSoftkeyLabelLength);
                    }
                    else
                    {
                        implicitSoftkeyLabel = true;
                        softkeyLabel = GetDefaultLabel(CallLabel);
                    }
                }
                RenderBeginLink(writer, url, softkeyLabel, implicitSoftkeyLabel, true);
                writer.RenderText(text);
                RenderEndLink(writer, url, Control.BreakAfter);
            }
            writer.ExitStyle(Style);
        }
        /// <include file='doc\WmlListAdapter.uex' path='docs/doc[@for="WmlListAdapter.Render"]/*' />
        public override void Render(WmlMobileTextWriter writer)
        {
            if(Control.HasControls())
            {
                writer.BeginCustomMarkup();
                RenderChildren(writer);
                writer.EndCustomMarkup();
                return;
            }

            int pageStart = Control.FirstVisibleItemIndex;
            int pageSize = Control.VisibleItemCount;
            if (pageSize == 0)
            {
                return;
            }

            MobileListItemCollection items = Control.Items;
            if (items.Count == 0)
            {
                return;
            }

            bool itemsAsLinks = Control.ItemsAsLinks;
            bool hasCmdHandler = Control.HasItemCommandHandler;

            writer.EnterStyle(Style);
            for (int i = 0; i < pageSize; i++)
            {                        
                MobileListItem item = items[pageStart + i];

                if (itemsAsLinks)
                {
                    RenderLink(writer, item.Value, null, false, false, item.Text, true);
                }
                else if (hasCmdHandler)
                {
                    RenderPostBackEvent(writer, item.Index.ToString(CultureInfo.InvariantCulture), null, true, item.Text, true); 
                }
                else
                {
                    writer.RenderText(item.Text, true);
                }
            }
            writer.ExitStyle(Style);
        }
Example #20
0
 public override void Render(WmlMobileTextWriter writer)
 {
     writer.EnterStyle(Style);
     writer.RenderText(Control.Text, Control.BreakAfter);
     writer.ExitStyle(Style);
 }
        /// <include file='doc\WmlObjectListAdapter.uex' path='docs/doc[@for="WmlObjectListAdapter.RenderItemsList"]/*' />
        protected virtual void RenderItemsList(WmlMobileTextWriter writer)
        {
            bool rendersAcceptsInline      = Device.RendersWmlDoAcceptsInline;
            bool rendersSelectsAsMenuCards = Device.RendersWmlSelectsAsMenuCards;
            bool rendersBreaksAfterAnchor  = Device.RendersBreaksAfterWmlAnchor;
            int  pageStart = Control.FirstVisibleItemIndex;
            int  pageSize  = Control.VisibleItemCount;
            ObjectListItemCollection items = Control.Items;

            if (pageSize == 0 || items.Count == 0)
            {
                return;
            }

            bool hasDefaultCommand     = HasDefaultCommand();
            bool onlyHasDefaultCommand = OnlyHasDefaultCommand();
            bool requiresSecondScreen  = HasItemDetails() || (!onlyHasDefaultCommand && HasCommands());
            bool itemRequiresHyperlink = requiresSecondScreen || hasDefaultCommand;

            writer.EnterLayout(Style);

            int[] tableFieldIndices = null;
            if (ShouldRenderAsTable() && (tableFieldIndices = Control.TableFieldIndices).Length != 0)
            {
                writer.BeginCustomMarkup();
                int fieldCount = tableFieldIndices.Length;
                writer.Write("<table columns=\"");
                writer.Write(fieldCount.ToString(CultureInfo.InvariantCulture));
                writer.WriteLine("\">");

                if (ShouldRenderTableHeaders())
                {
                    writer.Write("<tr>");
                    foreach (int fieldIndex in tableFieldIndices)
                    {
                        writer.Write("<td>");
                        writer.RenderText(Control.AllFields[fieldIndex].Title);
                        writer.Write("</td>");
                    }
                    writer.WriteLine("</tr>");
                }

                for (int i = 0; i < pageSize; i++)
                {
                    ObjectListItem item = items[pageStart + i];
                    writer.Write("<tr>");
                    for (int field = 0; field < fieldCount; field++)
                    {
                        writer.Write("<td>");
                        if (field == 0 && itemRequiresHyperlink)
                        {
                            RenderPostBackEvent(writer,
                                                requiresSecondScreen ?
                                                String.Format(CultureInfo.InvariantCulture, _showMoreFormatAnchor, item.Index) :
                                                item.Index.ToString(CultureInfo.InvariantCulture),
                                                GetDefaultLabel(GoLabel),
                                                false,
                                                item[tableFieldIndices[0]],
                                                false,
                                                WmlPostFieldType.Raw);
                        }
                        else
                        {
                            writer.RenderText(item[tableFieldIndices[field]]);
                        }
                        writer.Write("</td>");
                    }
                    writer.WriteLine("</tr>");
                }
                writer.WriteLine("</table>");
                writer.EndCustomMarkup();
            }
            else
            {
                int             labelFieldIndex = Control.LabelFieldIndex;
                ObjectListField labelField      = Control.AllFields[labelFieldIndex];

                writer.EnterFormat(Style);
                for (int i = 0; i < pageSize; i++)
                {
                    ObjectListItem item = items[pageStart + i];
                    if (itemRequiresHyperlink)
                    {
                        RenderPostBackEvent(writer,
                                            requiresSecondScreen ?
                                            String.Format(CultureInfo.InvariantCulture, _showMoreFormatAnchor, item.Index) :
                                            item.Index.ToString(CultureInfo.InvariantCulture),
                                            GetDefaultLabel(GoLabel),
                                            false,
                                            item[labelFieldIndex],
                                            true,
                                            WmlPostFieldType.Raw);
                    }
                    else
                    {
                        writer.RenderText(item[labelFieldIndex], true);
                    }
                }
                writer.ExitFormat(Style);
            }

            writer.ExitLayout(Style);
        }
 /// <include file='doc\WmlLabelAdapter.uex' path='docs/doc[@for="WmlLabelAdapter.Render"]/*' />
 public override void Render(WmlMobileTextWriter writer)
 {
     writer.EnterStyle(Style);
     writer.RenderText(Control.Text, Control.BreakAfter);
     writer.ExitStyle(Style);
 }
        private void RenderElement(WmlMobileTextWriter writer, int index, int begin, int end)
        {
            TextViewElement element = Control.GetElement(index);
            if (end == -1)
            {
                end = element.Text.Length;
            }

            String text = element.Text;
            if (begin > 0 || end < text.Length)
            {
                text = text.Substring(begin, end - begin);
            }

            BooleanOption previousBold   = Style.Font.Bold;
            BooleanOption previousItalic = Style.Font.Italic;
            if (element.IsBold)
            {
                Style.Font.Bold = BooleanOption.True;
            }
            if (element.IsItalic)
            {
                Style.Font.Italic = BooleanOption.True;
            }
            
            writer.EnterStyle(Style);
            if (element.Url != null)
            {
                RenderLink(writer, element.Url, null, true, true, text, element.BreakAfter);
            }
            else
            {
                writer.RenderText(text, element.BreakAfter);
            }
            writer.ExitStyle(Style);

            Style.Font.Bold   = previousBold;
            Style.Font.Italic = previousItalic;
        }
        public override void Render(WmlMobileTextWriter writer)
        {
            String text, url, phoneNumber;
            String controlText = Control.Text;

            // Always strip off optional separators for PhoneNumber before it
            // is added in markup.

            String originalNumber = Control.PhoneNumber;

            char[] plainNumber = new char[originalNumber.Length];  // allocate enough buffer size

            // Loop to strip out optional separators
            int sizeOfPlainNumber = 0;

            foreach (char ch in originalNumber)
            {
                if ((ch >= '0' && ch <= '9') || ch == '+')
                {
                    plainNumber[sizeOfPlainNumber] = ch;
                    sizeOfPlainNumber++;
                }
            }

            // Assign the number string with the right size
            phoneNumber = new String(plainNumber, 0, sizeOfPlainNumber);

            // Construct text and url based on device capabilities
            //
            if (!Device.CanInitiateVoiceCall)
            {
                text = String.Format(Control.AlternateFormat,
                                     controlText,
                                     originalNumber);
                url = Control.AlternateUrl;
            }
            else
            {
                // Some WML browsers require the phone number
                // showing as text so it can be selected.  If it is not
                // formatted in the text yet, append it to the end of the
                // text.
                if (Device.RequiresPhoneNumbersAsPlainText)
                {
                    text = controlText + " " + phoneNumber;
                    url  = String.Empty;
                }
                else
                {
                    text = (controlText != String.Empty) ?
                           controlText : originalNumber;
                    url = "wtai://wp/mc;" + phoneNumber;
                }
            }

            // Write out plain text or corresponding link/softkey command
            // accordingly
            //
            writer.EnterStyle(Style);
            if (url.Length == 0)
            {
                writer.RenderText(text, Control.BreakAfter);
            }
            else
            {
                String softkeyLabel         = Control.SoftkeyLabel;
                bool   implicitSoftkeyLabel = false;
                if (softkeyLabel.Length == 0)
                {
                    implicitSoftkeyLabel = true;
                    softkeyLabel         = text;
                }
                if (!writer.IsValidSoftkeyLabel(softkeyLabel))
                {
                    if (!implicitSoftkeyLabel && softkeyLabel.Length > 0)
                    {
                        softkeyLabel = softkeyLabel.Substring(0, Device.MaximumSoftkeyLabelLength);
                    }
                    else
                    {
                        implicitSoftkeyLabel = true;
                        softkeyLabel         = GetDefaultLabel(CallLabel);
                    }
                }
                RenderBeginLink(writer, url, softkeyLabel, implicitSoftkeyLabel, true);
                writer.RenderText(text);
                RenderEndLink(writer, url, Control.BreakAfter);
            }
            writer.ExitStyle(Style);
        }