Пример #1
0
        private void SelectNextRegion(bool backward)
        {
            MarkupRange smartContentRange = EditorContext.MarkupServices.CreateMarkupRange(HTMLElement, false);

            IHTMLElement[] editFields = smartContentRange.GetElements(ElementFilters.CreateClassFilter(InlineEditField.EDIT_FIELD), true);

            IHTMLElement element = GetSelectedChildEditField(HTMLElement, EditorContext.Selection.SelectedMarkupRange);

            if (element == null)
            {
                if (editFields.Length > 0)
                {
                    SelectElement(backward ? editFields[editFields.Length - 1] : editFields[0]);
                }
                else
                {
                    Select();
                }

                return;
            }

            // One of the edit fields was selected
            for (int i = 0; i < editFields.Length; i++)
            {
                IHTMLElement editField = editFields[i];

                if (element.sourceIndex == editField.sourceIndex)
                {
                    if (i == 0 && backward ||
                        i == editFields.Length - 1 && !backward)
                    {
                        Select();
                    }
                    else
                    {
                        SelectElement(backward ? editFields[i - 1] : editFields[i + 1]);
                    }

                    return;
                }
            }

            Debug.Fail("How did we get here?");
        }